Skip to content

Releases: mindee/tawazi

v0.5.2

12 Nov 13:50
Compare
Choose a tag to compare

Bug Fixes

  • 🐛 typing with py310 Union |

v0.5.1

31 Oct 10:09
Compare
Choose a tag to compare

Changes

  • ➖ compatible with pydantic v1 and v2

v0.5.0

31 Oct 10:08
Compare
Choose a tag to compare

Breaking Changes

  • ✨ draw a DAG using graphviz
  • 💥 change TawaziBaseException to TawaziError

v0.4.1

11 Sep 09:54
Compare
Choose a tag to compare

Improvements

  • ♻️ use dynamic node construction instead of static one

v0.4.0

09 Aug 08:33
b9a41a7
Compare
Choose a tag to compare

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

15 Mar 09:45
Compare
Choose a tag to compare

Bug Fixes

  • 🐛 failing Tuple typing check with future annotations: #213

v0.3.3

15 Mar 09:45
Compare
Choose a tag to compare

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

04 Jan 16:38
Compare
Choose a tag to compare

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

18 Jul 14:27
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.3.0...v0.3.1

v0.3.0 (2023-05-31)

01 Jun 08:10
Compare
Choose a tag to compare

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