Skip to content

Release v4.4.0 — Python 3.9 support restored

Choose a tag to compare

@Llucs Llucs released this 21 Jul 19:09
· 15 commits to main since this release

4.4.0 - 2026-07-21

  • Python 3.9 support restored. Minimum Python is now 3.9 (was 3.10).
  • Replace X | Y in module-level type aliases with Union[X, Y] / Optional[X].
  • Add from __future__ import annotations to _decorator.py so X | Y in function signatures is not evaluated at runtime.
  • Add conditional ParamSpec import with a runtime stub for Python 3.9.
  • Unwrap staticmethod objects in on_predicate and on_exception (Python 3.9 doesn't allow calling staticmethod objects directly, fixed in 3.10+).
  • Relax warn_unused_ignores = false in mypy config to support multiple mypy versions safely.
  • Regenerate pdm.lock with target >=3.9.
  • Update CI matrix to include Python 3.9.
  • Update ruff target-version = "py39".

Validation: All checks pass on Python 3.9, 3.10, 3.11, 3.12, 3.13, 3.14 — ruff, mypy, and 551 tests.