Transitions

Latest version: v0.9.2

Safety actively analyzes 710445 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 3 of 8

0.8.2

- Bugfix 438: Improved testing without any optional `graphviz` package
- Bugfix: `_check_event_result` failed when model was in parallel state
- Bugfix 440: Only allow explicit `dest=None` in `Machine.add_transition` (not just falsy) for internal transitions (thanks Pathfinder216)
- Bugfix 419: Fix state creation of nested enums (thanks thedrow)
- Bugfix 428: HierarchicalGraphMachine did not find/apply styling for parallel states (thanks xiaohuihui1024)
- Bugfix: `Model.trigger` now considers the machine's and current state's `ignore_invalid_triggers` attribute and can be called with non-existing events (thanks potens1)
- Bugfix: Child states may not have been exited when the executed transition had been defined on a parent (thanks thedrow)
- Feature 429: Introduced `transitions.extensions.asyncio.AsyncTimeout` as a state decorator to avoid threads used in `transitions.extensions.state.Timeout` (thanks potens1)
- Feature 444: `transitions` can now be tested online at mybinder.org
- PR 418: Use sets instead of lists to cache already covered transitions in nested state machines (thanks thedrow)
- PR 422: Improve handling of unresolved attributes for easier inheritance (thanks thedrow)
- PR 445: Refactored AsyncMachine to enable trio/anyio override

0.8.1

- Feature: Introduced experimental `HierarchicalAsync(Graph)Machine`
- Feature 405: Support for nested Enums in `HierarchicalMachine` (thanks thedrow)
- Bugfix 400: Fix style initialization when initial state is an `Enum` (thanks kbinpgh)
- Bugfix 403: AsyncMachine.dispatch now returns a boolean as expected (thanks thedrow)
- Bugfix 413: Improve diagram output for `HierarchicalMachine` (thanks xiaohuihui1024)
- Increased coverage (thanks thedrow)
- Introduced `xdist` for parallel testing with `pytest` (thanks thedrow)

0.8.0

Release 0.8.0 is a major release and introduces asyncio support for Python 3.7+, parallel state support and some bugfixes:

- Feature: `HierarchicalMachine` has been rewritten to support parallel states. Please have a look at the ReadMe.md to check what has changed.
- The previous version can be found in `transitions.extensions.nesting_legacy` for now
- Feature: Introduced `AsyncMachine` (see discussion 259); note that async HSMs are not yet supported
- Feature 390: String callbacks can now point to properties and attributes (thanks jsenecal)
- Bugfix: Auto transitions are added multiple times when add_states is called more than once
- Bugfix: Convert state.\_name from `Enum` into strings in `MarkupMachine` when necessary
- Bugfix 392: Allow `Machine.add_ordered_transitions` to be called without the initial state (thanks mkaranki and facundofc)
- `GraphMachine` now attempts to fall back to `graphviz` when importing `pygraphviz` fails
- Not implemented/tested so far (contributions are welcome!):
- Proper Graphviz support of parallel states
- AsyncHierachicalMachine

0.7.2

- Bugfix 386: Fix transitions for enums with str behavior (thanks artofhuman)
- Bugfix 378: Don't mask away KeyError when executing a transition (thanks facundofc)
- Feature 387: Add support for dynamic model state attribute (thanks v1k45)

0.7.1

- Feature 334: Added Enum (Python 3.4+: `enum` Python 2.7: `enum34`) support (thanks artofhuman and justinttl)
- Replaced test framework `nosetests` with `pytest` (thanks artofhuman)
- Extended `add_ordered_transitions` documentation in `Readme.md`
- Collected code snippets from earlier discussions in `examples/Frequently asked questions.ipynb`
- Improved stripping of `long_description` in `setup.py` (thanks artofhuman)

0.7.0

Release 0.7.0 is a major release with fundamental changes to the diagram extension. It also introduces an intermediate `MarkupMachine` which can be used to transfer and (re-)initialize machine configurations.

- Feature 263: `MarkupMachine` can be used to retrieve a Machine's dictionary representation
- `GraphMachine` uses this representation for Graphs now and does not rely on `Machine` attributes any longer
- Feature: The default value of `State.ignore_invalid_triggers` changed to `None`. If it is not explicitly set, the `Machine`'s value is used instead.
- Feature 325: transitions now supports `pygraphviz` and `graphviz` for the creation of diagrams. Currently, `GraphMachine` will check for `pygraphviz` first and fall back to `graphviz`. To use `graphviz` directly pass `use_pygraphiv=False` to the constructor of `GraphMachine`
- Diagram style has been overhauled. Have a look at `GraphMachine`'s attributes `machine_attributes` and `style_attributes` to adjust it to your needs.
- Feature 305: Timeouts and other features are now marked in the graphs
- Bugfix 343: `get_graph` was not assigned to models added during machine runtime

Page 3 of 8

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.