Skip to content

Drop support for Python 3.10 (EOL) - #682

Merged
mihaimaruseac merged 2 commits into
sigstore:mainfrom
buggylintermachine:drop-python-3.10
Oct 19, 2026
Merged

mihaimaruseac merged 2 commits into
sigstore:mainfrom
buggylintermachine:drop-python-3.10

Conversation

@buggylintermachine

Copy link
Copy Markdown
Contributor

Summary

Python 3.10 reaches end of life in October 2026 (PEP 619), so this drops support for it and makes Python 3.11 the minimum supported version.

Closes #602

Metadata and CI

  • requires-python raised to >=3.11 and the 3.10 classifier removed.
  • 3.10 removed from the hatch-test and bench matrices and from the unit_tests.yml and integration.yml workflow matrices.
  • Release note added under ### Removed in CHANGELOG.md.

Code cleanup

  • typing.Self is always available on 3.11, so the sys.version_info check with a typing_extensions fallback is replaced with from typing import Self (7 modules in src/, 1 test).
  • datetime.timezone.utc changed to datetime.UTC in sign_certificate.py.
  • Comments in hashing.py that referred to 3.10 and 3.11 updated.
  • typing_extensions stays a dependency because override is only in typing from 3.12.

Ruff infers its target version from requires-python, so the cleanup is needed for hatch fmt --check to pass after the bump (UP035/UP036/UP017).

Note for maintainers: if the branch protection rules list the Signing with Python 3.10 on ... jobs as required checks, they will need to be removed from the repository settings, as those jobs no longer run.

Testing

  • hatch fmt --check: passes
  • hatch run type:check: no errors
  • hatch test on 3.11, 3.12, 3.13 and 3.14: 218 passed on each
  • Built wheel metadata shows Requires-Python: >=3.11
Checklist
  • All commits are signed-off, using DCO
  • All new code has docstrings and type annotations
  • All new code is covered by tests. Aim for at least 90% coverage. CI is configured to highlight lines not covered by tests.
  • Public facing changes are paired with documentation changes
  • Release note has been added to CHANGELOG.md if needed

🤖 Generated with Claude Code

buggylintermachine and others added 2 commits October 18, 2026 10:54
Python 3.10 reaches end of life in October 2026. Raise requires-python
to >=3.11, remove the 3.10 classifier, and drop 3.10 from the hatch test
and bench matrices and the unit and integration test workflows.

Refs sigstore#602

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Michael Wu <infinitebaboons@gmail.com>
With Python 3.11 as the minimum supported version, `typing.Self` is
always available, so import it directly instead of falling back to
`typing_extensions` behind a `sys.version_info` check. Use
`datetime.UTC` and drop comments that referred to 3.10 and 3.11.

`typing_extensions` stays a dependency because `override` is only in
`typing` from Python 3.12.

Refs sigstore#602

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Michael Wu <infinitebaboons@gmail.com>
@buggylintermachine
buggylintermachine requested review from a team as code owners October 18, 2026 18:06
@SequeI

SequeI commented Oct 19, 2026

Copy link
Copy Markdown
Contributor

Unit tests are failing, and it doesn't seem anomalous. Once those are investigated and fixed, we can approve

@mihaimaruseac

Copy link
Copy Markdown
Member

The unit test failures on Windows are on me, I merged #681 thinking that this was jut a flake on Windows.

I'll try to send a fix, or @Support-itecz maybe can take a look?

@mihaimaruseac
mihaimaruseac merged commit 88f8549 into sigstore:main Oct 19, 2026
55 of 59 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.

Deprecate support for Python 3.10 (EOL October 2026)

3 participants