StateChart 3.2.0

Not released yet

Warning

Python 3.9 support dropped. StateMachine 3.2.0 requires Python 3.10 or later. If you cannot upgrade Python yet, pin to python-statemachine<3.2 (the 3.1.x series remains the last line supporting 3.9).

Backward incompatible changes in 3.2.0

Python 3.9 support dropped

Python 3.9 reached end-of-life on 2025-10-31 and is no longer supported by the Python core team. StateMachine 3.2 now requires Python 3.10+.

Rationale:

  • Python 3.9 represented around 1.4% of PyPI downloads of python-statemachine in the 180 days prior to this release; Python 3.10+ accounts for the vast majority of attributable traffic.

  • Dropping 3.9 lets the codebase adopt match/case (PEP 634), PEP 604 union syntax (X | Y), PEP 585 built-in generics (list[int] instead of List[int]), and zip(strict=True) (PEP 618) internally.

  • The same minimum has already been adopted by the major libraries in the ecosystem (pandas, FastAPI, SQLAlchemy, NumPy, Django 5).

Migration

  • Upgrade your interpreter to Python 3.10 or later, or

  • Pin python-statemachine<3.2 to stay on the 3.1.x line.

No public API was changed by this drop. Code that runs on 3.10+ today will continue to run unchanged on 3.2.

What’s new in 3.2.0

TODO

Bug fixes in 3.2.0

TODO