Skip to content

Conversation

@desertaxle
Copy link
Member

@desertaxle desertaxle commented Oct 24, 2025

Summary

This PR removes Python 3.9 support from all packages in the repository. Python 3.9 is EOL at the end of this month.

Changes

Package Configuration

  • Updated requires-python from >=3.9 to >=3.10 in:
    • Main pyproject.toml
    • client/pyproject.toml
    • All integration package pyproject.toml files (18 packages)
  • Removed Python 3.9 classifier from all packages
  • Removed importlib_metadata dependency (only needed for Python <3.10)
  • Updated mypy target version from 3.9 to 3.10

CI/CD

  • Removed Python 3.9 from test matrices in:
    • python-tests.yaml
    • docker-images.yaml
    • windows-tests.yaml
    • prefect-aws-docker-images.yaml
  • Updated Python version in build/release workflows:
    • static-analysis.yaml
    • python-package.yaml
    • integration-package-release.yaml
    • prefect-client.yaml
    • integration-package-tests.yaml

Documentation

  • Updated README.md to reflect Python 3.10+ requirement
  • Updated client/README.md
  • Updated docs/v3/get-started/install.mdx

🤖 Generated with Claude Code

This removes Python 3.9 support across all packages in the repository.

Changes include:
- Updated pyproject.toml files to require Python 3.10+
- Removed Python 3.9 from CI/CD test matrices
- Updated documentation to reflect Python 3.10+ requirement
- Removed Python 3.9 classifiers from all packages
- Removed importlib_metadata dependency (only needed for Python <3.10)
- Updated mypy target version to 3.10

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
@codspeed-hq
Copy link

codspeed-hq bot commented Oct 24, 2025

CodSpeed Performance Report

Merging #19273 will not alter performance

Comparing remove-python-39-support (f95e384) with main (0a6eddb)

Summary

✅ 2 untouched

desertaxle and others added 5 commits October 24, 2025 10:49
…t.mock

Replace all instances of AsyncMock being imported from
prefect.testing.utilities with imports from unittest.mock instead.

This change standardizes the mock imports to use the standard library's
unittest.mock module rather than re-exporting from prefect.testing.utilities.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Update Dockerfile, documentation, and README files that still
referenced Python 3.9 as the minimum version.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Comment on lines -74 to -76
[tool.uv.sources]
prefect = { path = "../../../" }

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ray==2.50.0 switched to using uv to set up execution environments, which doesn't work well with this source configuration. This change will cause the tests to run against the latest release prefect version instead of a dev version.

@desertaxle desertaxle marked this pull request as ready for review October 25, 2025 00:50
Copy link
Collaborator

@zzstoatzz zzstoatzz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@desertaxle desertaxle merged commit ccc1ce6 into main Oct 27, 2025
131 of 132 checks passed
@desertaxle desertaxle deleted the remove-python-39-support branch October 27, 2025 22:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants