Skip to content

py(chore[floor]): Require Python 3.11 - #362

Merged
tony merged 2 commits into
masterfrom
goal/python-3.11-floor
Nov 8, 2026
Merged

tony merged 2 commits into
masterfrom
goal/python-3.11-floor

Conversation

@tony

@tony tony commented Nov 8, 2026

Copy link
Copy Markdown
Member

Summary

Raise the Python floor to 3.11. Python 3.10 reached end of life in October 2026.

Changes

  • requires-python = ">=3.11,<4.0", 3.10 classifier dropped, mypy and ruff targets at 3.11
  • tests/test_install_widget.py imports tomllib directly; the tomli fallback and its type: ignore are gone
  • 3.10 removed from .tool-versions (CI already runs 3.15 only)
  • uv lock only: tomli, exceptiongroup and greenlet drop out and the 3.10 fork entries collapse; no version inside the >=3.11 fork moves
  • README, CONTRIBUTING and CHANGES updated; the cihai~=0.38.0 constraint is unchanged

Test plan

  • uv run ruff check ., ruff format ., mypy . clean
  • uv run py.test: 28 passed on 3.15
  • lock versions compared before and after with tomllib
  • CI on 3.15

tony added 2 commits November 7, 2026 18:34
why: Python 3.10 reached end of life in October 2026. The lock kept
a Python 3.10 fork beside the >=3.11 resolution (sqlalchemy 2.0.57
beside 2.1.8, watchdog, sphinx, tomli, exceptiongroup, greenlet), and
tests/test_install_widget.py fell back to tomli with a type: ignore
on 3.10. `uv lock` with requires-python >=3.11 collapses the forks;
`ruff check --fix`, mypy and pytest are clean on 3.15.

what:
- Set requires-python to >=3.11,<4.0 and drop the 3.10 classifier
- Set mypy python_version to 3.11 and ruff target-version to py311
- Import tomllib directly in the widget test and drop the tomli
  fallback with its type: ignore
- Drop 3.10 from .tool-versions; CI already runs 3.15 only
- Relock with `uv lock` only: the lock loses tomli, exceptiongroup
  and greenlet, and every other package keeps its >=3.11 version
why: README and CONTRIBUTING still named Python 3.10 after the floor
moved to 3.11.

what:
- Update the README install note and support line to 3.11
- Update the CONTRIBUTING mypy target note to 3.11
- Add a CHANGES breaking-change entry for the new minimum
@codecov

codecov Bot commented Nov 8, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 89.42%. Comparing base (f81b19c) to head (a6fc7f2).

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #362      +/-   ##
==========================================
+ Coverage   89.31%   89.42%   +0.11%     
==========================================
  Files          12       12              
  Lines         702      700       -2     
==========================================
- Hits          627      626       -1     
+ Misses         75       74       -1     

☔ View full report in Codecov by Harness.
📢 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.

@tony
tony merged commit 804ac2a into master Nov 8, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant