Skip to content

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

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

tony merged 2 commits into
masterfrom
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 scripts-only py311 ruff 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: Self and NotRequired
    import from typing, datetime.UTC, and the sys.version_info
    branch in _internal/types.py goes. TypedDict and Unpack stay on
    typing_extensions.
  • AGENTS.md, README, quickstart and CONTRIBUTING state 3.11, and
    CHANGES gets a breaking-change entry.

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: 908 passed, 2 skipped
  • just build-docs, uv build
  • CI

@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 82.55%. Comparing base (0239dcb) to head (49109b9).

Additional details and impacted files
@@           Coverage Diff           @@
##           master    #1102   +/-   ##
=======================================
  Coverage   82.55%   82.55%           
=======================================
  Files          31       31           
  Lines        2769     2769           
  Branches      518      518           
=======================================
  Hits         2286     2286           
  Misses        346      346           
  Partials      137      137           

☔ 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 added 2 commits November 7, 2026 19:01
why: Python 3.10 reached end of life in October 2026. requires-python,
the 3.10 classifier, the mypy and ruff targets and the version-guarded
NotRequired import all still described a floor nobody supports.
`uv lock` collapses the 3.10-only forks, and `ruff check --fix` applies
the 3.11 rewrites the repo's existing UP and I rules select.
what:
- pyproject.toml: requires-python >=3.11, drop the 3.10 classifier,
  mypy python_version and ruff target-version to 3.11, drop the
  scripts-only py311 override.
- uv.lock: re-resolved with `uv lock` alone. Only 3.10-only versions
  left (exceptiongroup, tomli, sphinx 8.1.3, watchdog 6.0.0 and
  similar); no package in the >=3.11 fork moved.
- _internal/types.py: import NotRequired from typing without the
  sys.version_info branch.
- private_path.py, _progress.py, load.py, shell.py and the plugin
  fixture _types.py: Self and NotRequired come from typing. ls.py:
  datetime.UTC. TypedDict and Unpack stay on typing_extensions.
- .tool-versions: drop Python 3.10.

Test plan:
- ruff check and format --check, mypy (. and .github/scripts),
  .github/scripts tests, py.test (908 passed, 2 skipped),
  `just build-docs`, `uv build`.
why: AGENTS.md, the README, the quickstart and CONTRIBUTING still
named Python 3.10 after the floor moved.
what:
- AGENTS.md, README.md, docs/quickstart.md: Python 3.11+.
- .github/CONTRIBUTING.md: the CI scripts no longer differ from the
  library's floor.
- CHANGES: add a breaking-change entry.
@tony
tony force-pushed the chore/require-python-3.11 branch from edfe4fc to 49109b9 Compare November 8, 2026 01:01
@tony
tony merged commit 26d1dbc into master Nov 8, 2026
15 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.

1 participant