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

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

This branch has not been deployed

No deployments
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