Skip to content

build: drop support for Python 3.9 - #913

Open
qianzhu18 wants to merge 1 commit into
apache:mainfrom
qianzhu18:fix/drop-python-39
Open

build: drop support for Python 3.9#913
qianzhu18 wants to merge 1 commit into
apache:mainfrom
qianzhu18:fix/drop-python-39

Conversation

@qianzhu18

Copy link
Copy Markdown

Changes

Python 3.9 is EOL, and the 0.43.0 RC1 release vote surfaced that the [cli]/[learn]/[start] extras were already broken on it (PEP 604 unions in burr/cli/__main__.py), forcing the release-validation smoke matrix to skip 3.9. This makes the 3.10 floor official everywhere:

  • pyproject.toml: requires-python = ">=3.10" (no version-specific classifiers existed, so nothing else to drop there)
  • CI: remove 3.9 from the four Python version matrices in .github/workflows/python-package.yml, and remove the now-obsolete 3.9 skip comment in .github/workflows/release-validation.yml
  • docs: README note, docs/getting_started/install.rst, docs/contributing/setup.rst, and the website downloads page now state the 3.10+ requirement (the old "core remains compatible with 3.9" notes added by Bump to 0.43.0 #902 are superseded)
  • scripts/README.md prerequisite and the shutil-filter compatibility comment in scripts/apache_release.py (3.9-3.11 → 3.10-3.11)

No runtime behavior changes — metadata, CI, and documentation only.

Fixes #900

How I tested this

  • uv sync and uv build succeed with the new requires-python — sdist and wheel metadata build cleanly
  • Both touched workflow files parse as valid YAML
  • pytest tests/core/test_action.py tests/core/test_application.py tests/test_release_config.py: 235 passed / 61 failed — identical failure set on unmodified main under the same local interpreter (Python 3.14, above the supported ceiling), so the failures are pre-existing environment effects, not regressions
  • grep -rn "3\.9" across toml/yml/rst/md/py confirms no remaining reference to 3.9 as a supported target (the remaining matches are either the historical 0.43.0 release note or langfuse>=3.9 package-version comparisons, both intentionally untouched)

Notes

Checklist

  • PR has an informative and human-readable title (this will be pulled into the release notes)
  • Changes are limited to a single goal (no scope creep)
  • Code passed the pre-commit check & code is left cleaner/nicer than when first encountered.
  • Any change in functionality is tested
  • New functions are documented (with a description, list of inputs, and expected output)
  • Placeholder code is flagged / future TODOs are captured in comments
  • Project documentation has been updated if adding/changing functionality.

Python 3.9 is EOL, and the 0.43.0 RC1 release vote surfaced that the
[cli]/[learn]/[start] extras were already broken on it (PEP 604 unions
in burr/cli/__main__.py), forcing the release-validation smoke matrix
to skip 3.9. Make the floor official everywhere:

- pyproject.toml: requires-python >=3.10
- CI: remove 3.9 from the python-package.yml matrices and the now-
  obsolete 3.9 skip comment in release-validation.yml
- docs: README, getting_started/install, contributing/setup, and the
  website downloads page now state the 3.10+ requirement
- scripts/README.md and the shutil-filter comment in
  scripts/apache_release.py

No runtime behavior changes. Fixes apache#900
@github-actions github-actions Bot added area/website burr.apache.org website area/ci Workflows, build, release scripts labels Sep 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/ci Workflows, build, release scripts area/website burr.apache.org website

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Drop support for Python 3.9

1 participant