Skip to content

chore: drop Python 3.9 from CI matrix and pyproject#22

Merged
luckyPipewrench merged 1 commit into
mainfrom
chore/drop-python-3.9
May 17, 2026
Merged

chore: drop Python 3.9 from CI matrix and pyproject#22
luckyPipewrench merged 1 commit into
mainfrom
chore/drop-python-3.9

Conversation

@luckyPipewrench
Copy link
Copy Markdown
Owner

@luckyPipewrench luckyPipewrench commented May 17, 2026

Python 3.9 reached upstream end-of-life on 2025-10-31. Recent test framework releases (pytest 9.0+) have dropped 3.9 support, which is currently blocking the routine pytest update PR (#21) on the 3.9 leg of the matrix while the other four Python versions pass cleanly.

Changes: drop 3.9 from the workflow matrix, bump requires-python to >=3.10, bump mypy python_version to 3.10, remove the Python 3.9 trove classifier.

Effect on users: pip continues to install older releases of pipelock-verify on Python 3.9 environments via standard requires-python resolution. New releases require Python 3.10 or newer.

After this merges, #21 can be force-merged (its tests will now skip the 3.9 leg that no longer exists in the matrix), or closed in favor of letting Renovate re-propose the pytest bump under the new 10-day cooldown policy.

Summary by CodeRabbit

  • Chores
    • Minimum Python version requirement updated to 3.10+.
    • Testing extended to Python 3.10, 3.11, 3.12, and 3.13 with 3.9 support dropped.

Review Change Stack

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 17, 2026

📝 Walkthrough

Walkthrough

Project minimum Python version is raised from 3.9 to 3.10 across package metadata, classifiers, mypy type-checking, and CI test matrix. Python 3.9 is removed from all test targets and declared supported versions.

Changes

Python 3.10 Minimum Version Requirement

Layer / File(s) Summary
Python 3.10 minimum across project configuration and CI
pyproject.toml, .github/workflows/ci.yml
Project minimum Python version requirement is raised from 3.9 to 3.10 in requires-python, classifiers, and mypy configuration; CI test matrix is updated to remove Python 3.9 and run tests only on 3.10, 3.11, 3.12, and 3.13.

🎯 1 (Trivial) | ⏱️ ~3 minutes

A rabbit hops forth with glee, 🐰
Python 3.9 no more to be,
Version 3.10 takes its place,
In config and CI without a trace!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title directly and clearly describes the main changes: dropping Python 3.9 from both the CI matrix and pyproject configuration.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/drop-python-3.9

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
pyproject.toml (1)

84-84: ⚡ Quick win

Align Ruff's target-version with the Python 3.10 baseline.

Ruff is configured with target-version = "py39" (line 77) while requires-python = ">=3.10" and python_version = "3.10" are both set to 3.10. This mismatch causes Ruff's lint and upgrade behavior to target an older Python version than declared.

Proposed change
 [tool.ruff]
 line-length = 100
-target-version = "py39"
+target-version = "py310"
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pyproject.toml` at line 84, Ruff's configured target-version ("py39") doesn't
match the declared Python baseline (requires-python = ">=3.10" and
python_version = "3.10"); update the Ruff configuration key target-version to
"py310" so Ruff's linting and upgrade rules align with the project's Python 3.10
baseline (look for the target-version setting in the pyproject.toml alongside
requires-python and python_version).
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@pyproject.toml`:
- Line 84: Ruff's configured target-version ("py39") doesn't match the declared
Python baseline (requires-python = ">=3.10" and python_version = "3.10"); update
the Ruff configuration key target-version to "py310" so Ruff's linting and
upgrade rules align with the project's Python 3.10 baseline (look for the
target-version setting in the pyproject.toml alongside requires-python and
python_version).

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 6a1c84a2-dba6-4192-b810-cd938bee437e

📥 Commits

Reviewing files that changed from the base of the PR and between 6e5016b and 2e59a48.

📒 Files selected for processing (2)
  • .github/workflows/ci.yml
  • pyproject.toml

@luckyPipewrench luckyPipewrench merged commit 4d5badb into main May 17, 2026
14 checks passed
@luckyPipewrench luckyPipewrench deleted the chore/drop-python-3.9 branch May 17, 2026 21:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant