mirror of
https://github.com/infeeeee/dyn2py
synced 2025-12-16 22:16:18 +01:00
Options defaults, small fixes, update readme
This commit is contained in:
13
README.md
13
README.md
@@ -9,16 +9,14 @@ Use cases:
|
|||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
*TODO*
|
### With pip from Github
|
||||||
|
|
||||||
<!-- ### pip
|
Requirements: git, python, pip
|
||||||
|
|
||||||
1. Install python
|
```
|
||||||
2. `py -m pip install dyn2py`
|
pip install "dyn2py @ git+https://github.com/infeeeee/dyn2py"
|
||||||
|
```
|
||||||
|
|
||||||
### github releases
|
|
||||||
|
|
||||||
-->
|
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
@@ -35,6 +33,7 @@ positional arguments:
|
|||||||
|
|
||||||
options:
|
options:
|
||||||
-h, --help show this help message and exit
|
-h, --help show this help message and exit
|
||||||
|
-v, --version show program's version number and exit
|
||||||
-l LOGLEVEL, --loglevel LOGLEVEL
|
-l LOGLEVEL, --loglevel LOGLEVEL
|
||||||
set log level, possible options: CRITICAL, ERROR, WARNING, INFO, DEBUG
|
set log level, possible options: CRITICAL, ERROR, WARNING, INFO, DEBUG
|
||||||
-n, --dry-run do not modify files, only show log
|
-n, --dry-run do not modify files, only show log
|
||||||
|
|||||||
@@ -23,10 +23,15 @@ __all__ = [
|
|||||||
"PythonNode",
|
"PythonNode",
|
||||||
"DynamoFileException",
|
"DynamoFileException",
|
||||||
"PythonNodeNotFoundException",
|
"PythonNodeNotFoundException",
|
||||||
|
"PythonNodeException",
|
||||||
"PythonFileException"
|
"PythonFileException"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def __dir__():
|
||||||
|
return __all__
|
||||||
|
|
||||||
|
|
||||||
def run(options: Options | None = None) -> None:
|
def run(options: Options | None = None) -> None:
|
||||||
"""Run an extraction as from the command line
|
"""Run an extraction as from the command line
|
||||||
|
|
||||||
@@ -49,6 +54,11 @@ def run(options: Options | None = None) -> None:
|
|||||||
""")
|
""")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
parser.add_argument("-v", "--version",
|
||||||
|
action="version",
|
||||||
|
version=f'{METADATA["Name"]} {METADATA["Version"]}'
|
||||||
|
)
|
||||||
|
|
||||||
parser.add_argument("-l", "--loglevel",
|
parser.add_argument("-l", "--loglevel",
|
||||||
metavar="LOGLEVEL",
|
metavar="LOGLEVEL",
|
||||||
choices=LOGLEVELS,
|
choices=LOGLEVELS,
|
||||||
|
|||||||
@@ -110,21 +110,18 @@ class File():
|
|||||||
"""
|
"""
|
||||||
return bool(self.extension == ".py")
|
return bool(self.extension == ".py")
|
||||||
|
|
||||||
def write(self, options: Options | None = None) -> None:
|
def write(self, options: Options = Options()) -> None:
|
||||||
"""Prepare writing file to the disk:
|
"""Prepare writing file to the disk:
|
||||||
create backup, process dry-run, call filetype specific write_file() methods
|
create backup, process dry-run, call filetype specific write_file() methods
|
||||||
Should be called on subclasses!
|
Should be called on subclasses!
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
options(Options | None, optional): Run options. Defaults to None.
|
options(Options, optional): Run options. Defaults to Options().
|
||||||
|
|
||||||
Raises:
|
Raises:
|
||||||
TypeError: If called on a File object
|
TypeError: If called on a File object
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if not options:
|
|
||||||
options = Options()
|
|
||||||
|
|
||||||
# This should only work on subclasses:
|
# This should only work on subclasses:
|
||||||
if type(self).__name__ == "File":
|
if type(self).__name__ == "File":
|
||||||
raise TypeError("This method shouldn't be called on File objects!")
|
raise TypeError("This method shouldn't be called on File objects!")
|
||||||
@@ -169,16 +166,13 @@ class DynamoFile(File):
|
|||||||
open_files: set[DynamoFile] = set()
|
open_files: set[DynamoFile] = set()
|
||||||
"""A set of open Dynamo files, before saving. Self added by read()"""
|
"""A set of open Dynamo files, before saving. Self added by read()"""
|
||||||
|
|
||||||
def extract_python(self, options: Options | None = None) -> None:
|
def extract_python(self, options: Options = Options()) -> None:
|
||||||
"""Extract and write python files
|
"""Extract and write python files
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
options(Options | None, optional): Run options. Defaults to None.
|
options(Options, optional): Run options. Defaults to Options().
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if not options:
|
|
||||||
options = Options()
|
|
||||||
|
|
||||||
logging.info(f"Extracting from file: {self.filepath}")
|
logging.info(f"Extracting from file: {self.filepath}")
|
||||||
|
|
||||||
# Go through nodes in the file:
|
# Go through nodes in the file:
|
||||||
@@ -314,17 +308,15 @@ class DynamoFile(File):
|
|||||||
with open(self.filepath, "w", encoding="utf-8", newline="") as output_file:
|
with open(self.filepath, "w", encoding="utf-8", newline="") as output_file:
|
||||||
json.dump(self.full_dict, output_file, indent=2, use_decimal=True)
|
json.dump(self.full_dict, output_file, indent=2, use_decimal=True)
|
||||||
|
|
||||||
def get_related_python_files(self, options: Options | None = None) -> list["PythonFile"]:
|
def get_related_python_files(self, options: Options = Options()) -> list["PythonFile"]:
|
||||||
"""Get python files exported from this Dynamo file
|
"""Get python files exported from this Dynamo file
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
options(Options | None, optional): Run options. Defaults to None.
|
options(Options, optional): Run options. Defaults to Options().
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
list[PythonFile]: A list of PythonFile objects
|
list[PythonFile]: A list of PythonFile objects
|
||||||
"""
|
"""
|
||||||
if not options:
|
|
||||||
options = Options()
|
|
||||||
|
|
||||||
# Find the folder of the python files
|
# Find the folder of the python files
|
||||||
if options.python_folder:
|
if options.python_folder:
|
||||||
@@ -483,16 +475,13 @@ class PythonFile(File):
|
|||||||
logging.debug(f"Header data from python file: {self.header_data}")
|
logging.debug(f"Header data from python file: {self.header_data}")
|
||||||
# logging.debug(f"Code from python file: {self.code}")
|
# logging.debug(f"Code from python file: {self.code}")
|
||||||
|
|
||||||
def update_dynamo(self, options: Options | None = None) -> None:
|
def update_dynamo(self, options: Options = Options()) -> None:
|
||||||
"""Update a the source Dynamo graph from this python script
|
"""Update a the source Dynamo graph from this python script
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
options (Options | None, optional): Run options. Defaults to None.
|
options (Options, optional): Run options. Defaults to Options().
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if not options:
|
|
||||||
options = Options()
|
|
||||||
|
|
||||||
dynamo_file = self.get_source_dynamo_file()
|
dynamo_file = self.get_source_dynamo_file()
|
||||||
|
|
||||||
new_python_node = PythonNode(python_file=self)
|
new_python_node = PythonNode(python_file=self)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "dyn2py"
|
name = "dyn2py"
|
||||||
version = "0.2.0"
|
version = "0.2.1"
|
||||||
description = "Extract python code from Dynamo graphs"
|
description = "Extract python code from Dynamo graphs"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
requires-python = ">=3.8"
|
requires-python = ">=3.8"
|
||||||
|
|||||||
Reference in New Issue
Block a user