Skip to content

Conversation

@jhamon
Copy link
Collaborator

@jhamon jhamon commented Nov 16, 2025

Summary

Removes support for Python 3.9, which has reached end-of-life, and updates all configuration and documentation to reflect Python 3.10+ as the minimum supported version. This simplifies dependency constraints and aligns with current Python support lifecycle.

Changes

Configuration Updates

  • Updated pyproject.toml:
    • Changed requires-python from ">=3.9" to ">=3.10"
    • Removed "Programming Language :: Python :: 3.9" trove classifier
    • Updated Ruff target-version from "py39" to "py310"
    • Updated Black target-version from ["py39"] to ["py310"]
    • Simplified dependency constraints by removing Python 3.9-specific conditions:
      • pandas-stubs: Removed Python 3.8-3.9 fallback, now uses single version constraint
      • numpy: Removed Python 3.8-3.9 fallback, now uses single version constraint
      • pytest-benchmark: Simplified condition from python_version>='3.9' and python_version<'4.0' to python_version<'4.0'
      • sphinx: Simplified condition from python_version>='3.9' and python_version<'3.11' to python_version<'3.11'
      • myst-parser: Removed Python 3.9-3.10 fallback, now uses single version constraint
      • grpcio: Simplified condition from python_version>='3.8' and python_version<'3.11' to python_version<'3.11'
      • pandas: Simplified condition from python_version>='3.9' and python_version<'3.13' to python_version<'3.13'

Documentation Updates

  • Updated README.md: Changed prerequisites from "Python 3.9 and greater" to "Python 3.10 and greater", and updated tested versions from "3.9 to 3.13" to "3.10 to 3.13"
  • Updated docs/index.rst: Changed prerequisites from "Python 3.9 and greater" to "Python 3.10 and greater", and updated tested versions from "3.9 to 3.13" to "3.10 to 3.13"
  • Updated docs/upgrading.md: Added breaking change note in the 7.x section documenting the removal of Python 3.9 support

Breaking Changes

⚠️ Python 3.9 is no longer supported. Users must upgrade to Python 3.10 or later to use this version of the SDK.

Impact

  • Users on Python 3.9: Must upgrade to Python 3.10+ to continue using the SDK
  • Dependency resolution: Simplified constraints may allow newer package versions to be installed
  • CI/CD: No changes needed as workflows already use parameterized Python versions (3.10, 3.11, 3.12, 3.13)

Rationale

Python 3.9 reached end-of-life on October 2, 2025. Dropping support allows us to:

  • Simplify dependency management by removing version-specific constraints
  • Take advantage of Python 3.10+ features and improvements
  • Reduce maintenance burden by focusing on actively supported Python versions
  • Align with the Python community's support lifecycle

Files Changed

  • pyproject.toml
  • README.md
  • docs/index.rst
  • docs/upgrading.md

@jhamon jhamon marked this pull request as ready for review November 16, 2025 18:53
@jhamon jhamon merged commit 470f57b into release-candidate/2025-10 Nov 16, 2025
60 checks passed
@jhamon jhamon deleted the jhamon/drop-py39 branch November 16, 2025 18:53
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