Skip to content

Conversation

@fgmacedo
Copy link
Owner

@fgmacedo fgmacedo commented Feb 11, 2026

Summary

  • Add Python 3.14 to CI test matrix and PyPI classifiers
  • Make Python 3.14 the default for linting, type checking, coverage, and release workflows
  • Update ReadTheDocs to Python 3.14
  • Remove stale Python 3.7 pydot step from CI
  • Upgrade dev dependencies: ruff 0.8.1 → 0.15.0, mypy 1.4.1 → 1.14.1, watchfiles 0.24.0 → 1.1.1
  • Update ruff ignore list: add UP037 (needs from __future__ import annotations), UP042 (needs Python 3.11+), remove stale UP038
  • Fix PT030 lint warning in test_registry.py

Notes

  • Ruff target-version set to py314 (supported since ruff 0.12)
  • Ruff 0.13+ changed isort sorting with force-single-line, so import reordering is in a separate commit
  • Tested locally on Python 3.8 (299 passed) and 3.14 (349 passed)

Test plan

  • CI passes on all matrix versions (3.8–3.14)
  • Ruff check and format pass
  • Mypy passes
  • ReadTheDocs build succeeds

Ruff 0.13+ changed isort behavior with force-single-line, requiring
import reordering. Also applies C420 (dict.fromkeys) and minor formatting.
- Add Python 3.14 to CI test matrix and classifiers
- Update mypy python_version and ruff target-version to 3.14
- Update release workflow and ReadTheDocs to Python 3.14
- Remove stale Python 3.7 pydot step from CI
- Add UP037 and UP042 to ruff ignore (require future annotations / 3.11+)
- Remove stale UP038 ignore (rule removed from ruff)
- Add match parameter to pytest.warns (PT030)
- Upgrade ruff 0.8.1 -> 0.15.0, mypy 1.4.1 -> 1.14.1, watchfiles 0.24.0 -> 1.1.1
Pillow 11.0.0 has no pre-built wheel for Python 3.14 and fails to
compile from source in CI due to missing libjpeg headers.
@codecov
Copy link

codecov bot commented Feb 11, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (790d38f) to head (b39afce).
⚠️ Report is 1 commits behind head on develop.

Additional details and impacted files
@@            Coverage Diff            @@
##           develop      #552   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files           25        25           
  Lines         1631      1620   -11     
  Branches       257       200   -57     
=========================================
- Hits          1631      1620   -11     
Flag Coverage Δ
unittests 100.00% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

coverage.py < 7.6.10 incorrectly reports class annotations as uncovered
on Python 3.14 due to PEP 649 deferred evaluation (coveragepy#1908).
Pin pytest-cov >= 6.0.0 on Python >= 3.9 to pull coverage >= 7.6.10.
@sonarqubecloud
Copy link

@fgmacedo fgmacedo added the dependencies Pull requests that update a dependency file label Feb 11, 2026
@fgmacedo fgmacedo merged commit 7b5fb68 into develop Feb 11, 2026
15 checks passed
@fgmacedo fgmacedo deleted the feat/python-3.14-support branch February 11, 2026 01:07
fgmacedo added a commit that referenced this pull request Feb 11, 2026
Resolve conflicts from Python 3.14 support merge (PR #552):
- CI matrix: keep scxml's min Python 3.9, add 3.14
- pyproject.toml: add 3.14 classifier, update ruff ignore list
- statemachine.py: use `is not None` check, keep history_values and
  id-keyed listeners from scxml branch
- docs/guards.md: keep expanded declaration order docs from develop
- Fix trailing whitespace and unused imports from scxml branch
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant