Skip to content

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

Merged
tony merged 2 commits into
mainfrom
chore/require-python-3.11
Nov 8, 2026
Merged

tony merged 2 commits into
mainfrom
chore/require-python-3.11

Conversation

@tony

@tony tony commented Nov 8, 2026

Copy link
Copy Markdown
Member

Summary

Raise the Python floor from 3.10 to 3.11. Python 3.10 reached end of life
in October 2026. No release is cut.

Changes

  • requires-python = ">=3.11,<4.0"; drop the 3.10 classifier; mypy and
    ruff target 3.11; drop the python_version < '3.11' typing-extensions
    markers and the scripts-only py311 override.
  • uv.lock re-resolved with uv lock alone: the 3.10-only forks vanish
    and no package in the >=3.11 fork moves. soupsieve keeps its 2.10
    entry for Python before 3.11.5, which is a separate fork.
  • ruff check --fix with the existing rules: datetime.UTC in
    docs/_ext/widgets/mcp_install.py.
  • README, install and troubleshooting pages, compatibility table,
    CONTRIBUTING and a CHANGES breaking-change entry state 3.11.

Test plan

  • ruff check, ruff format --check, mypy ., mypy --python-version 3.11 .github/scripts
  • pytest .github/scripts/test_tmux_build.py --reruns=0
  • py.test -n auto: 953 passed, 6 skipped
  • just build-docs, uv build
  • CI

tony added 2 commits November 7, 2026 18:40
why: Python 3.10 reached end of life in October 2026. requires-python,
the 3.10 classifier, mypy and ruff targets, and the 3.10 backport
markers all still described a floor nobody supports.
`uv lock` collapses the 3.10-only forks, and `ruff check --fix` applies
one rewrite the repo's existing UP rules select (datetime.UTC).
what:
- pyproject.toml: requires-python >=3.11, drop the 3.10 classifier,
  mypy python_version and ruff target-version to 3.11, drop the
  typing-extensions markers for python_version < '3.11' (nothing
  imports typing_extensions), drop the scripts-only py311 override.
- uv.lock: re-resolved with `uv lock` alone. Only 3.10-only forks left
  (aiofile 3.8.8, sphinx 8.1.3, tomli, watchdog 6.0.0 and similar); no
  package in the >=3.11 fork moved.
- docs/_ext/widgets/mcp_install.py: datetime.timezone.utc -> UTC.
- scripts/mcp_swap.py, .tool-versions: drop Python 3.10.

Test plan:
- ruff check and format --check, mypy (. and .github/scripts),
  .github/scripts tests, py.test -n auto (953 passed, 6 skipped),
  `just build-docs`, `uv build`.
why: The README, install page, troubleshooting page, compatibility
table and CONTRIBUTING still named Python 3.10 after the floor moved.
what:
- README.md, docs/installation.md, docs/topics/troubleshooting.md:
  Python 3.11+.
- docs/reference/compatibility.md: drop the 3.10 row.
- .github/CONTRIBUTING.md: the CI scripts no longer differ from the
  library's floor.
- CHANGES: add a breaking-change entry.
@codecov-commenter

codecov-commenter commented Nov 8, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 87.03%. Comparing base (a118e6c) to head (d776120).
⚠️ Report is 3 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #158   +/-   ##
=======================================
  Coverage   87.03%   87.03%           
=======================================
  Files          47       47           
  Lines        3964     3964           
  Branches      601      601           
=======================================
  Hits         3450     3450           
  Misses        354      354           
  Partials      160      160           

☔ 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 71d5718 into main Nov 8, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants