Skip to content

Lower supported Python floor to 3.10#338

Merged
nuwang merged 1 commit into
mainfrom
relax-python-floor
Jul 10, 2026
Merged

Lower supported Python floor to 3.10#338
nuwang merged 1 commit into
mainfrom
relax-python-floor

Conversation

@nuwang

@nuwang nuwang commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Summary

The requires-python = ">=3.13" floor was introduced as part of the PEP 621 packaging migration (#PR — setup.py previously declared no floor at all) and reflects the CI matrix rather than any actual language/stdlib requirement: the codebase uses only 3.10-safe constructs (X | None unions, builtin generics), and all dependencies (tenacity, pyeventsystem, boto3, azure SDKs, google-api-python-client, openstacksdk, moto 5) support 3.10.

This matters downstream: Galaxy supports Python >=3.10 and currently has to pin cloudbridge 3.2.0 on anything below 3.13, which locks those deployments out of the 4.2.0 multipart upload support.

Changes

  • requires-python >=3.13 → >=3.10; added 3.10/3.11/3.12 trove classifiers
  • CI mock-provider job now runs on a {lowest, highest} matrix: 3.10 and 3.13 (tox envlist gains py3.10-*)
  • mypy python_version lowered to 3.10 so newer-stdlib usage is caught at lint time
  • CHANGELOG: new 4.2.1 (unreleased) section

Verification

  • tox -e py3.10-mock: 94 passed, 5 skipped — identical to the 3.13 run (includes the multipart driver + object store suites under moto)
  • tox -e mypy (now targeting 3.10): clean, 43 files
  • tox -e lint: clean

Note: google.api_core emits a FutureWarning that new releases will stop supporting 3.10 after its EOL (2026-10) — released versions keep working; worth revisiting the floor when Galaxy moves its own.

The >=3.13 requires-python floor was an artifact of the PEP 621
packaging migration (setup.py previously declared no floor); nothing
in the codebase or its dependencies needs more than 3.10. Verified by
running the full mock-provider suite on 3.10 (94 passed, matching
3.13) — CI now runs the mock suite on both the lowest and highest
supported versions.

mypy now type-checks against 3.10 so use of newer-stdlib APIs is
caught at lint time.
@nuwang nuwang temporarily deployed to cloud-integration July 10, 2026 11:10 — with GitHub Actions Inactive
@nuwang nuwang temporarily deployed to cloud-integration July 10, 2026 11:10 — with GitHub Actions Inactive
@nuwang nuwang had a problem deploying to cloud-integration July 10, 2026 11:10 — with GitHub Actions Failure
@nuwang nuwang had a problem deploying to cloud-integration July 10, 2026 11:10 — with GitHub Actions Failure
@nuwang nuwang temporarily deployed to cloud-integration July 10, 2026 12:11 — with GitHub Actions Inactive
@nuwang nuwang had a problem deploying to cloud-integration July 10, 2026 12:11 — with GitHub Actions Failure
@nuwang nuwang had a problem deploying to cloud-integration July 10, 2026 13:06 — with GitHub Actions Failure
@nuwang nuwang had a problem deploying to cloud-integration July 10, 2026 14:12 — with GitHub Actions Failure
@nuwang nuwang temporarily deployed to cloud-integration July 10, 2026 14:51 — with GitHub Actions Inactive
@nuwang nuwang merged commit 3a857ac into main Jul 10, 2026
23 of 28 checks passed
@nuwang nuwang deleted the relax-python-floor branch July 10, 2026 15:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant