File python-transitions.changes of Package python-transitions
-------------------------------------------------------------------
Wed Jun 4 06:08:02 UTC 2025 - Steve Kowalik <steven.kowalik@suse.com>
- Switch to pyproject macros.
-------------------------------------------------------------------
Mon Apr 14 12:22:35 UTC 2025 - Georg Pfuetzenreuter <georg.pfuetzenreuter@suse.com>
- Enable sle15_python_module_pythons (align with pygraphviz)
-------------------------------------------------------------------
Thu Apr 3 13:47:51 UTC 2025 - John Paul Adrian Glaubitz <adrian.glaubitz@suse.com>
- Update to 0.9.2
* Bug #610: Decorate models appropriately when `HierarchicalMachine`
is passed to `add_state` (thanks @e0lithic)
* Bug #647: Let `may_<trigger>` check all parallel states in processing
order (thanks @spearsear)
* Bug: `HSM.is_state` works with parallel states now
* Experimental features:
+ Add `model_override` to Machine constructor to determine the mode of
operation. With `model_override=Fale` (default), `transitions` will
not override already defined methods on a model just as it did before.
For workflows relying on typing, `model_override=True` will override
methods already defined on the model and only those (!). This allows
to control which convenience methods shall be assigned to the model
and keeps the statically 'assumed' model in sync with its runtime
counterpart. Since defining each and every method manually is rather
tiresome, `transitions.experimental.utils.generate_base_model`
features a way to convert a machine configuration into a `BaseClass`
with all convenience functions and callbacks.
+ Add `transitions.experimental.utils.{add_transitions, event,
with_model_definitions, transition}` to define trigger methods in a
class model for more convenient type checking. `add_transitions`
can be used as a function decorator and is stackable. `event` returns
a placeholder object for attribute assigment. `add_transitions` and
`event` have the same signature and support transition definition like
machine constructors. The function `transition` can used for better
typing and returns a dictionary that can be passed to the utility
functions but also to a machine constructor. `add_transitions` and
`event` require a machine decorated with `with_model_definitions`.
Decorating a machine `with_model_definitions` implies `model_override=True`.
* Feature: Add `may_trigger` to models to check whether transitions can
be conducted by trigger name.
* Feature: Add Mermaid diagram backend that returns a mermaid diagram as
a string. `use_pygraphviz` is deprecated in favour for `graph_engine`
which may be `pygraphviz` (default), `graphviz` or `mermaid`.
- Refresh remove-py2-crumbs.patch
-------------------------------------------------------------------
Thu May 30 08:25:50 UTC 2024 - Markéta Machová <mmachova@suse.com>
- update to 0.9.1
* several bugfixes
* typing improvements
* introduces `on_final` callbacks on machines (as well as
`NestedState`) and `final` flags for states
* see the full list in Changelog.md
- Add remove-py2-crumbs.patch to get rid of most py2 remnants
- Add iteritems.patch to clean the rest of six
-------------------------------------------------------------------
Fri Jan 12 08:26:55 UTC 2024 - Dirk Müller <dmueller@suse.com>
- update to 0.9.0:
* removed legacy implementation of `HierarchicalMachine` from
the package
* Bug #551: Fix active state styling in `GraphMachine` (thanks
@betaboon)
* Bug #554: Fix issues related to scopes and queueing in
`HierachicalMachine` (thanks @jankrejci)
* Bug #568: Reflexive transitions (dest: '=') had not been
resolved correctly when source was a wildcard (thanks @jnu)
* Bug #568: HSM did not detect reflexive transitions if src was
a parent state (thanks @lostcontrol)
* Bug #569: Fix implicit fallback to `graphviz` when
`pygraphviz` was not installed (thanks @FridjofAmundsen)
* Bug #580: Fix `on_timeout` callback resolution when timeout
had been initialized with `timeout=0` (thanks @Rysbai)
* Bug #582: Last label in `GraphSupport` was not correctly
aligned when `show_attributes=True` (thanks @spagh-eddie)
* Feature: Add pyi stub files for better type hinting. Since
many functions and constructors allow rather arbitrary
arguments time will tell whether typing should be strict (and
cause more mypy issues) or more relaxed (and thus less
precise).
* Feature: Reviewed and improved method documentation
* Feature #549: Add `may` transition check to transitions
(thanks @artofhuman)
* Feature #552: Refactored error handling to be able to handle
`MachineError` in `on_exception` callbacks (thanks @kpihus)
* Feature: Add `mypy` to test workflow
* PR #461: Add `Retry` state to supported state stereotypes
(thanks @rgov)
* Internal: `Machine._identify_callback` has been converted to
instance method from class method
* Internal: `LockedMachine._get_qualified_state_name` has been
converted to instance method from static method
* Internal: Removed `_super` workaround related to dill (see
https://github.com/pytransitions/transitions/issues/236)
* ## 0.8.11 (February 2022)
* Release 0.8.11 is the last 0.8 release and contains fixes for
Python 3.10 compatibility issues
* Bug #559: Rewrote an async test and replaced `setDaemon` with
`daemon` property assignment for thread handling (thanks
@debalance)
- drop transitions-fixpy310.patch (upstream)
-------------------------------------------------------------------
Tue Jan 11 21:26:06 UTC 2022 - Ben Greiner <code@bnavigator.de>
- Add support for Python 3.10
* transitions-fixpy310.patch -- gh#pytransitions/transitions#559
- Make sure the graphviz tests don't error out without an installed
font
- Clean obsolete python36 conditionals
-------------------------------------------------------------------
Sun Oct 24 17:34:22 UTC 2021 - Ben Greiner <code@bnavigator.de>
- Update to version 0.8.10
* Feature #545: The literal 'self' (default model parameter of
Machine) has been replaced by the class variable
Machine.self_literal = 'self'. Machine now performs an identity
check (instead of a value check) with mod is self.self_literal
to determine whether it should act as a model. While 'self'
should still work when passed to the model parameter, we
encourage using Machine.self_literal from now on. This was done
to enable easier override of Machine.__eq__ in subclasses
(thanks @VKSolovev).
* Bug #547: Introduce HierarchicalMachine.prefix_path to resolve
global state names since the HSM stack is not reliable when
queued=True (thanks @jankrejci).
* Bug #548: HSM source states were exited even though they are
parents of the destination state (thanks @wes-public-apps).
- Don't test optional extra graphviz on python36: pygraphviz
dropped Python 3.6 support
-------------------------------------------------------------------
Thu Sep 2 15:58:41 UTC 2021 - Martin Hauke <mardnh@gmx.de>
- Update to version 0.8.9
Bugfix
* NestedEvent now wraps the machine's scope into partials passed
to HierarchicalMachine._process. This prevents queued
transitions from losing their scope.
Feature
* (A)Graph.draw function (object returned by
GraphMachine.get_graph()) can be passed a file/stream object
as first parameter or None. The later will result in draw
returning a binary string. (thanks @Blindfreddy).
* Use id(model) instead of model for machine-bound caches in
LockedMachine, AsyncMachine and GraphMachine. This might
influence pickling.
-------------------------------------------------------------------
Wed Apr 7 16:32:09 UTC 2021 - Martin Hauke <mardnh@gmx.de>
- Update to version 0.8.8
Bugfix
* AsyncMachine does not remove models when remove_models is
called.
Feature
* Introduce try/except for finalize callbacks in Machine and
HierachicalMachine. Thus, errors occurring in finalize
callbacks will be suppressed and only the original error will
be raised.
* Show references in graphs and markup. Introduce
MarkupMachine.format_references to tweak reference formatting.
* Introduce Machine.on_exception to handle raised exceptions in
callbacks.
* Machine.get_triggers now supports State and Enum as arguments.
* NestedState and HierachicalMachine.add_states now accept
(lists of) states and enums as initial parameter.
- Update to version 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.
* HierarchicalMachine with custom separator now adds
is_state partials for nested states (e.g. is_C.s3.a()) to
models.
* Use model_attribute consistently in AsyncMachine.
* 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
- Update to version 0.8.6
* HierarchicalMachine.add_states will raise a ValueError when
an Enum name contains the currently used NestedState.separator.
Bugfix
* Reset NestedState._scope when enter/exit callbacks raise an
exception.
* Let HierarchicalMachine._get_trigger which is bound to
model.trigger raise a MachineError for invalid events and
AttributeError for unknown events.
Features
* Introduced HierarchicalMachine.has_trigger to determine
whether an event is valid for an HSM.
* AsyncMachine features an event queue dictionary for individual
models when queued='model'.
* Machine.remove_model will now also remove model events from
the event queue when queued=True.
* Machine.get_transitions and its HSM counterpart now accept
Enum and State for source and dest.
- Update to version 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.
- Update to version 0.8.4
* Bugfix #477: Model callbacks were not added to a
LockedHierarchicalMachine when the machine itself served as
a model.
* Bugfix #475: Clear collection of tasks to prevent memory leak
when initializing many models.
* 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.
- Update to version 0.8.3
* Minor release and contains several bugfixes mostly related
to HierarchicalStateMachine.
-------------------------------------------------------------------
Mon Aug 24 12:06:21 UTC 2020 - Marketa Calabkova <mcalabkova@suse.com>
- Use recent pytest
-------------------------------------------------------------------
Sun Jun 28 09:27:04 UTC 2020 - Martin Hauke <mardnh@gmx.de>
- Update to version 0.8.2
* Improved testing without any optional graphviz package
* _check_event_result failed when model was in parallel state
* Only allow explicit dest=None in Machine.add_transition (not
just falsy) for internal transitions
* Fix state creation of nested enums
* HierarchicalGraphMachine did not find/apply styling for
parallel states
* Bugfix: Model.trigger now considers the machine's and current
state's ignore_invalid_triggers attribute and can be called
with non-existing events
* Child states may not have been exited when the executed
transition had been defined on a parent
* Introduced transitions.extensions.asyncio.AsyncTimeout as a
state decorator to avoid threads used
in transitions.extensions.state.Timeout
* Use sets instead of lists to cache already covered transitions
in nested state machines
* Improve handling of unresolved attributes for easier inheritance
* Refactored AsyncMachine to enable trio/anyio override
-------------------------------------------------------------------
Tue Jun 9 07:44:24 UTC 2020 - Dirk Mueller <dmueller@suse.com>
- remove pep8 unit tests, those are not useful to execute and
fail
-------------------------------------------------------------------
Fri Apr 3 06:23:04 UTC 2020 - Martin Hauke <mardnh@gmx.de>
- Update to versino 0.8.1
* Feature: Introduced experimental HierarchicalAsync(Graph)Machine
* Feature #405: Support for nested Enums in HierarchicalMachine
* Bugfix #400: Fix style initialization when initial state is an Enum
* Bugfix #403: AsyncMachine.dispatch now returns a boolean asexpected
* Bugfix #413: Improve diagram output for HierarchicalMachine
* Increased coverage
* Introduced xdist for parallel testing with pytest
-------------------------------------------------------------------
Wed Mar 25 14:51:54 UTC 2020 - pgajdos@suse.com
- version update to 0.8.0
- 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
-------------------------------------------------------------------
Fri Jan 10 19:57:29 UTC 2020 - Martin Hauke <mardnh@gmx.de>
- Update to version 0.7.2
* Fix transitions for enums with str behavior
* Don't mask away KeyError when executing a transition
* Add support for dynamic model state attribute
-------------------------------------------------------------------
Mon Sep 30 18:47:43 UTC 2019 - Martin Hauke <mardnh@gmx.de>
- Initial package, version 0.7.1