-
Couldn't load subscription status.
- Fork 404
Drop Python 3.9, bump tests/builds to Python 3.10 #19099
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Conversation
| # Upgrading to v1.142.0 | ||
| ## Minimum supported Python version | ||
| The minimum supported Python version has been increased from v3.9 to v3.10. | ||
| You will need Python 3.10+ to run Synapse v1.142.0 (due out Nov 11th, 2025). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It goes without saying, but this section may need updating to specify the actual version this PR lands in.
Do this to prevent the trial-olddeps test workflow from installing a version of jaeger-client that pulls in an old version of a dependency (tornado) that is incompatible with Python 3.10.
9d3cdc6 to
ed0cb3e
Compare
e6fd7fd to
6b35262
Compare
docs/setup/installation.md
Outdated
| It's recommended to use the latest Python versions. | ||
|
|
||
| RHEL 8 in particular ships with Python 3.6 by default which is EOL and therefore no longer supported by Synapse. RHEL 9 ships with Python 3.9 which is still supported by the Python core team as of this writing. However, newer Python versions provide significant performance improvements and they're available in official distributions' repositories. Therefore it's recommended to use them. | ||
| RHEL 8 & 9 in particular ship with Python 3.6 & 3.9 respectively by default which are EOL and therefore no longer supported by Synapse. However, newer Python versions provide significant performance improvements and they're available in official distributions' repositories. Therefore it's recommended to use them. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How can I cross-reference this information?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
-
RHEL 8: docs don't seem to mention a default version, but it does say that the
python3package targets Python 3.6: https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/8/html/configuring_basic_system_settings/installing-and-using-dynamic-programming-languages_configuring-basic-system-settings#con_python-versions_assembly_introduction-to-python -
RHEL 9: "In RHEL 9, Python 3.9 is the default Python implementation." https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/installing_and_using_dynamic_programming_languages/assembly_installing-and-using-python_installing-and-using-dynamic-programming-languages
| DISTS = ( | ||
| "debian:bullseye", # (EOL ~2024-07) (our EOL forced by Python 3.9 is 2025-10-05) | ||
| "debian:bookworm", # (EOL 2026-06) (our EOL forced by Python 3.11 is 2027-10-24) | ||
| "debian:sid", # (rolling distro, no EOL) | ||
| "ubuntu:jammy", # 22.04 LTS (EOL 2027-04) (our EOL forced by Python 3.10 is 2026-10-04) | ||
| "ubuntu:noble", # 24.04 LTS (EOL 2029-06) | ||
| "ubuntu:plucky", # 25.04 (EOL 2026-01) | ||
| "debian:trixie", # (EOL not specified yet) | ||
| ) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not necessarily something for this PR specifically but should this include forky (14)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I suppose that could be done when Synapse is verified to work on forky. I'm unaware of when/if that was done.
| # 2.0.5 updates collections.abc imports to avoid Python 3.10 incompatibility. | ||
| sortedcontainers = ">=2.0.5" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for including the context!
| # 2.0.5 updates collections.abc imports to avoid Python 3.10 incompatibility. | ||
| sortedcontainers = ">=2.0.5" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To explain this: this is just bumping minimum versions. We're already using much newer versions that are specified in poetry.lock.
| @@ -0,0 +1 @@ | |||
| Drop support for Python 3.9. | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We haven't quite reached the Python 3.9 EOL date on 2025-10-31.
For ease of releases, backports, etc. I'm not sure if we want to wait until then.
Python 3.9 EOL is on 2025-10-31
Dev notes
Previous times we had to drop Python versions:
Python 3.8:
Python 3.7:
Pull Request Checklist
EventStoretoEventWorkerStore.".code blocks.