Transitions

Latest version: v0.9.1

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

Scan your dependencies

Page 2 of 8

0.8.7

- State configuration dictionaries passed to `HierarchicalMachine` can also use `states` as a keyword to define substates. If `children` and `states` are present, only `children` will be considered.
- Feature 500: `HierarchicalMachine` with custom separator now adds `is_state` partials for nested states (e.g. `is_C.s3.a()`) to models (thanks alterscape)
- Bugfix 512: Use `model_attribute` consistently in `AsyncMachine` (thanks thedrow)
- Testing now treats most warnings as errors (thanks thedrow)
- As a consequence, `pygraphviz.Agraph` in `diagrams_pygraphviz` are now copied by `transitions` since `AGraph.copy` as of version `1.6` does not close temporary files appropriately
- `HierarchicalMachine` now checks whether `state_cls`, `event_cls` and `transition_cls` have been subclassed from nested base classes (e.g. `NestedState`) to prevent hard to debug inheritance errors

0.8.6

- `HierarchicalMachine.add_states` will raise a `ValueError` when an `Enum` name contains the currently used `NestedState.separator`.
- Bugfix 486: Reset `NestedState._scope` when enter/exit callbacks raise an exception (thanks m986883511)
- Bugfix 488: Let `HierarchicalMachine._get_trigger` which is bound to `model.trigger` raise a `MachineError` for invalid events and `AttributeError` for unknown events (thanks hsharrison)
- Introduced `HierarchicalMachine.has_trigger` to determine whether an event is valid for an HSM
- Feature 490: `AsyncMachine` features an event queue dictionary for individual models when `queued='model'` (thanks jekel)
- Feature 490: `Machine.remove_model` will now also remove model events from the event queue when `queued=True`
- Feature 491: `Machine.get_transitions` and its HSM counterpart now accept `Enum` and `State` for `source` and `dest` (thanks thedrow)

0.8.5

- `AsyncMachine.switch_model_context` is expected to be `async` now for easier integration of async code during model switch.
- Bugfix 478: Initializing a machine with `GraphSupport` threw an exception when initial was set to a nested or parallel state (thanks nickvazztau)

0.8.4

- Bugfix 477: Model callbacks were not added to a LockedHierarchicalMachine when the machine itself served as a model (thanks oliver-goetz)
- Bugfix 475: Clear collection of tasks to prevent memory leak when initializing many models (thanks h-nakai)
- Feature 474: Added static `AsyncMachine.protected_tasks` list which can be used to prevent `transitions` to cancel certain tasks.
- Feature: Constructor of `HierarchicalMachine` now accepts substates ('A_1_c') and parallel states (['A', 'B']) as `initial` parameter

0.8.3

- Feature 473: Assign `is_<model_attribute>_<state_name>` instead of `is_<state_name>` when `model_attribute != "state"` to enable multiple versions of such convenience functions. A warning will be raised when `is_<state_name>` is used. (thanks artofhuman)
- Similarly, auto transitions (`to_<state_name>`) will be assigned as `to_<model_attribute>_<state_name>`. `to_<state_name>` will work as before but raise a warning until version 0.9.0.
- Bugfix: `allow_substates` did not consider enum states
- Feature: Nested enums can now be passed in a dict as `children` with `initial` parameter
- Bugfix 449: get_triggers/get_transitions did not return nested triggers correctly (thanks alexandretanem)
- Feature 452: Improve handling of label attributes in custom diagram states and `TransitionGraphSupport` (thanks badiku)
- Bugfix 456: Prevent parents from overriding (falsy) results of their children's events (thanks alexandretanem)
- Bugfix 458: Entering the same state caused key errors when transition was defined on a parent (thanks matlom)
- Bugfix 459: Do not remove current timeout runner in AsyncTimeout to prevent accidental overrides (thanks rgov)
- Rewording of `State.enter/exit` debug message emitted when callbacks have been processed.
- Bugfix 370: Fix order of `before_state_change/before` and `after/after_state_change` in `AsyncMachine` (thanks tzoiker and vishes-shell)
- Bugfix 470: `Graph.get_graph()` did not consider `enum` states when `show_roi=True` (thanks termim)

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

Page 2 of 8

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.