Releases: mindee/tawazi
Releases · mindee/tawazi
v0.5.2
v0.5.1
Changes
- ➖ compatible with pydantic v1 and v2
v0.5.0
Breaking Changes
- ✨ draw a DAG using graphviz
- 💥 change TawaziBaseException to TawaziError
v0.4.1
Improvements
- ♻️ use dynamic node construction instead of static one
v0.4.0
Improvements
- ♻️ big overhaul to the dag interface
- ♻️ rely on networkx for most of the graph-related computations
- ✨ root nodes implementation (see documentation for further explanation)
- 📝 improve documentation and remove most of the outdated comments
- ✨ added AsyncDAG / AsyncDAGExecution to execute DAG in async context
- ✨ added Async-Threaded resource
- ✨ added feature of running DAG in DAG
- ✨ Include Line Number pointing to the location where the DAG made the error!
- ✨ Support Ellipsis for DAG.compose' input
- ⚡ Optimize ArgExecNode and ReturnExecNode by using main-thread instead of DEFAULT_THREAD
Bug Fixes
- 🐛 fix twz_active behavior. If twz_active is False, the node returns None
v0.3.4
v0.3.3
Improvements
- ⚡ accelerate getting highest priority node (optimizations)
- ⚡ accelerate get_num_running_threads
- ⚡ accelerate node removal by using BiDirectionalDict
- ⚡ accelerate node removal
- ⚡ accelerate get_num_running_threads by using len(running) instead
Bug Fixes
- 🐛 logging
v0.3.2
Bug Fixes
- 🐛 wrong error message, during composition of DAGs
- 🐛 fix counting nodes during dag description. ExecNodes should now be numbered 1, 2, 3 etc.
- 🐛 failing to run DAG inside a Process. Now a DAG should run correctly inside a launched process.
Improvements
- ⚡ faster logging improves performance by upto 5% on long / complicated DAGs
- ♻️ better mypy on raise_arg_error
- ✅ test execnode with typed tuple
- ✅ test passing DAG inside a Process
v0.3.1
What's Changed
- Fix issue 205 by @bashirmindee in #150
- ⬆️ Bump mkdocs-material from 9.1.15 to 9.1.18 by @dependabot in #149
- chg: 🔖 preparing v0.3.1 by @bashirmindee in #151
Full Changelog: v0.3.0...v0.3.1
v0.3.0 (2023-05-31)
Improvement
- Run the ExecNode’s function with arbitrary arguments names
- pass in arguments & return values from created DAGs like normal functions
- Setup ExecNodes
- Debug ExecNodes
- Tag an ExecNode or multiple ExecNodes
- ExecNode is reusable (even inside the same DAG)
- Create a SubDag by specifying output ExecNodes of the DAG using Tag, id or the ExecNode itself
- Setup ExecNode do not accept dynamic arguments (arguments that can change between executions)
- DAG can return multiple values via dict, tuple or list
- Cache results of a specific DAG execution inside a file and reuse it later to skip running the same executions again
- An ExecNode can not be debug and setup at the same time!
- Configure ExecNodes using yaml, json or a python dict
- Profile the DAG execution (profiling of each ExecNode's execution)
- Create a SubDag by specifying ExecNodes to exclude of the DAG using Tag, id or the ExecNode itself
- pass in a thread-name prefix to the DAG
- Cache all the dependencies of some ExecNodes but not the specified ExecNodes themselves (helpful for debugging these ExecNodes)
- Introduce DAGExecution class which is an instance holding an execution of a DAG
- DAGExecution.scheduled_nodes contains the ExecNodes that will be executed in the next DAGExecution.run() call
- Support mypy typing
- Add a documentation page using mkdocs
- A single ExecNode can have multiple Tags
-
-
-
- ** / // % divmod abs << >> < <= == > >= operations implemented for ExecNode
-
-
- Conditionally execute an ExecNode inside a DAG using
twz_active
- helpers and_, or_, not_ are provided to do logical operations on ExecNodes
- LazyExecNode can be executed outside of DAG description according to env var TAWAZI_EXECNODE_OUTSIDE_DAG_BEHAVIOR
- unpack the results of an ExecNode execution using
unpack_to
property - Check
unpack_to
property against typing - Experimental compose a subdag from a single DAG by choosing the input ExecNodes and the output ExecNodes
- ExecNode can wrap anonymous functions that have no qualname attribute
- Choose where an ExecNode is executed (in main-thread or in a thread-pool)
- Document Usage of the Library
Breaking Changes
- Improved Interface to create DAGs using
dag
decorator - Improved Interface to create ExecNodes using
xn
decorator
Internal Changes
- Use NoVal instead of None to express not yet calculated result in ExecNode
- Copy ExecNode instead of deep-copying it
- Run tests against Python 3.7, 3.8, 3.9, 3.10, 3.11
- Run tests against the documentation
- Test Mypy
- Use Ruff in pre-commit
- use pytest code-blocks instead of mkcodes
- CI tests building the documentation