Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: fgmacedo/python-statemachine
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: main
Choose a base ref
...
head repository: fgmacedo/python-statemachine
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: develop
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 6 commits
  • 14 files changed
  • 5 contributors

Commits on Dec 3, 2024

  1. Merge tag 'v2.5.0' into develop

    *November 5, 2024*
    
    This release introduces powerful new features for the `StateMachine`
    library: {ref}`Condition expressions` and explicit definition of
    {ref}`Events`. These updates make it easier to define complex transition
    conditions and enhance performance, especially in workflows with nested
    or recursive event structures.
    
    StateMachine 2.4.0 supports Python 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, and
    3.13.
    
    This release introduces support for conditionals with Boolean algebra.
    You can now use expressions like `or`, `and`, and `not` directly within
    transition conditions, simplifying the definition of complex state
    transitions. This allows for more flexible and readable condition setups
    in your state machine configurations.
    
    Example (with a spoiler of the next highlight):
    
    ```py
    >>> from statemachine import StateMachine, State, Event
    
    >>> class AnyConditionSM(StateMachine):
    ...     start = State(initial=True)
    ...     end = State(final=True)
    ...
    ...     submit = Event(
    ...         start.to(end, cond="used_money or used_credit"),
    ...         name="finish order",
    ...     )
    ...
    ...     used_money: bool = False
    ...     used_credit: bool = False
    
    >>> sm = AnyConditionSM()
    >>> sm.submit()
    Traceback (most recent call last):
    TransitionNotAllowed: Can't finish order when in Start.
    
    >>> sm.used_credit = True
    >>> sm.submit()
    >>> sm.current_state.id
    'end'
    
    ```
    
    ```{seealso}
    See {ref}`Condition expressions` for more details or take a look at the
    {ref}`sphx_glr_auto_examples_lor_machine.py` example.
    ```
    
    Now you can explicit declare {ref}`Events` using the {ref}`event` class.
    This allows custom naming, translations, and also helps your IDE to know
    that events are callable.
    
    ```py
    >>> from statemachine import StateMachine, State, Event
    
    >>> class StartMachine(StateMachine):
    ...     created = State(initial=True)
    ...     started = State(final=True)
    ...
    ...     start = Event(created.to(started), name="Launch the machine")
    ...
    >>> [e.id for e in StartMachine.events]
    ['start']
    >>> [e.name for e in StartMachine.events]
    ['Launch the machine']
    >>> StartMachine.start.name
    'Launch the machine'
    
    ```
    
    ```{seealso}
    See {ref}`Events` for more details.
    ```
    
    We removed a note from the docs saying to avoid recursion loops. Since
    the {ref}`StateMachine 2.0.0` release we've turned the RTC model enabled
    by default, allowing nested events to occour as all events are put on an
    internal queue before being executed.
    
    ```{seealso}
    See {ref}`sphx_glr_auto_examples_recursive_event_machine.py` for an
    example of an infinite loop state machine declaration using `after`
    action callback to call the same event over and over again.
    
    ```
    
    - Fixes
      [#484](#484)
    issue where nested events inside loops could leak memory by incorrectly
      referencing previous `event_data` when queuing the next event. This
    fix improves performance and stability in event-heavy workflows.
    fgmacedo committed Dec 3, 2024
    Configuration menu
    Copy the full SHA
    68ba609 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    4449a9c View commit details
    Browse the repository at this point in the history

Commits on Jan 14, 2025

  1. docs: mention pydot resolution settings (#514)

    * docs: mention pydot resolution settings
    
    
    ---------
    
    Co-authored-by: Albert Latham <[email protected]>
    comalice and Albert Latham authored Jan 14, 2025
    Configuration menu
    Copy the full SHA
    9954890 View commit details
    Browse the repository at this point in the history

Commits on Jan 26, 2025

  1. Configuration menu
    Copy the full SHA
    bdb4fbd View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    ef351d5 View commit details
    Browse the repository at this point in the history

Commits on Apr 14, 2025

  1. fix: typos (#522)

    alexei authored Apr 14, 2025
    Configuration menu
    Copy the full SHA
    b0367f0 View commit details
    Browse the repository at this point in the history
Loading