Skip to content

chore: drop Python 3.9 support, require >=3.10 #111

@27Bslash6

Description

@27Bslash6

Problem

Python 3.9 reached end-of-life on 2025-10-05 (7+ months ago). Continuing to support it blocks security fixes in transitive dependencies:

These are currently ignored in pip-audit because bumping them would break the 3.9 resolution. They're dev-only transitive deps today, but urllib3 could become a runtime transitive dep through httpx at any point.

Scope

  • pyproject.toml: change requires-python = ">=3.9" to ">=3.10"
  • Remove 3.9 from CI matrix and classifiers
  • Remove from __future__ import annotations where no longer needed (optional cleanup)
  • Bump constraint-dependencies to require patched versions of pip, urllib3
  • Remove pip-audit --ignore-vuln flags for the 3 CVEs that now have available fixes
  • Update docs (getting-started, README) to reflect 3.10+ requirement

Why now

  • 3.9 has been EOL for 7 months — no security patches from CPython
  • 3 CVEs are actively being ignored because of 3.9 compatibility
  • pip-audit, requests, and other dev ecosystem packages are dropping 3.9
  • PyPI stats show <5% of Python downloads are 3.9 (and shrinking)
  • This is a greenfield project with no legacy users on 3.9

Impact

This is a feat: change that triggers a minor version bump via release-please (0.7.0).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions