Skip to content

Drop Python 3.9 to fix CI#1609

Merged
bdraco merged 8 commits intomasterfrom
ci_fixes
Dec 12, 2025
Merged

Drop Python 3.9 to fix CI#1609
bdraco merged 8 commits intomasterfrom
ci_fixes

Conversation

@bdraco
Copy link
Member

@bdraco bdraco commented Dec 12, 2025

What do these changes do?

Drop Python 3.9 support. Python 3.10 is now the minimum supported version.

Are there changes in behavior for the user?

Users on Python 3.9 will need to upgrade to Python 3.10+.

Related issue number

N/A

Checklist

  • I think the code is well written
  • I wrote a good unit test and integration test if required
  • I added or modified a change note: CHANGES/1609.packaging.rst

@psf-chronographer psf-chronographer bot added the bot:chronographer:provided There is a change note present in this PR label Dec 12, 2025
@bdraco
Copy link
Member Author

bdraco commented Dec 12, 2025

Will also need to fix the aiohttp testing in another PR

@codspeed-hq
Copy link

codspeed-hq bot commented Dec 12, 2025

CodSpeed Performance Report

Merging #1609 will not alter performance

Comparing ci_fixes (acd9a6b) with master (b14fccf)

Summary

✅ 99 untouched

@bdraco bdraco marked this pull request as ready for review December 12, 2025 17:29
@bdraco bdraco requested a review from Copilot December 12, 2025 17:29
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR drops Python 3.9 support and establishes Python 3.10 as the new minimum supported version. The primary motivation is to fix CI issues and adopt modern Python type annotation syntax.

  • Converts type annotations from Union[X, Y] to the X | Y syntax (PEP 604) in function signatures and return types
  • Removes Python 3.9 and PyPy 3.9 from CI test matrix
  • Updates package metadata and pre-commit configuration to reflect the new minimum Python version

Reviewed changes

Copilot reviewed 11 out of 11 changed files in this pull request and generated no comments.

Show a summary per file
File Description
yarl/_url.py Converted Union type annotations to pipe syntax in function signatures, method parameters, and property return types
yarl/_quoting_py.py Updated Union type annotations to pipe syntax in Quoter and Unquoter class methods; removed Union import
yarl/_quoters.py Converted Union type annotation to pipe syntax in human_quote function; removed Union import
yarl/_query.py Updated Union type annotations to pipe syntax in function signatures and variable annotations
yarl/_parse.py Converted Union type annotations to pipe syntax in split_netloc and make_netloc functions; removed Union import
tests/test_update_query.py Updated test function signatures from Union/Optional to pipe syntax; removed typing imports
tests/test_quoting.py Converted fixture return type annotations to pipe syntax; removed Union import
setup.cfg Removed Python 3.9 classifier and updated python_requires to >=3.10
CHANGES/1609.packaging.rst Added change note documenting the removal of Python 3.9 support
.pre-commit-config.yaml Updated pyupgrade args from --py39-plus to --py310-plus
.github/workflows/ci-cd.yml Removed Python 3.9 and PyPy 3.9 from test matrix

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@codecov
Copy link

codecov bot commented Dec 12, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 99.57%. Comparing base (b14fccf) to head (acd9a6b).
⚠️ Report is 17 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1609      +/-   ##
==========================================
+ Coverage   97.95%   99.57%   +1.62%     
==========================================
  Files          29       29              
  Lines        5860     5877      +17     
  Branches       44      266     +222     
==========================================
+ Hits         5740     5852     +112     
+ Misses         76       21      -55     
+ Partials       44        4      -40     
Flag Coverage Δ
CI-GHA 99.57% <100.00%> (+1.62%) ⬆️
MyPy 97.95% <94.00%> (-0.01%) ⬇️
OS-Linux 99.80% <100.00%> (?)
OS-Windows 99.48% <100.00%> (?)
OS-macOS 99.68% <100.00%> (?)
Py-3.10.11 99.45% <100.00%> (?)
Py-3.10.19 99.70% <100.00%> (?)
Py-3.11.14 99.70% <100.00%> (?)
Py-3.11.9 99.45% <100.00%> (?)
Py-3.12.10 99.45% <100.00%> (?)
Py-3.12.12 99.70% <100.00%> (?)
Py-3.13.11 99.75% <100.00%> (?)
Py-3.13.11t 99.75% <100.00%> (?)
Py-3.14.2 99.75% <100.00%> (?)
Py-3.14.2t 99.75% <100.00%> (?)
Py-pypy3.10.16-7.3.19 99.36% <94.59%> (?)
VM-macos-latest 99.68% <100.00%> (?)
VM-ubuntu-latest 99.80% <100.00%> (?)
VM-windows-latest 99.48% <100.00%> (?)
pytest 99.80% <100.00%> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@bdraco bdraco enabled auto-merge (squash) December 12, 2025 17:42
@bdraco bdraco merged commit 528f439 into master Dec 12, 2025
64 of 66 checks passed
@bdraco bdraco deleted the ci_fixes branch December 12, 2025 17:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bot:chronographer:provided There is a change note present in this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants