with one click
drop-python
Use when dropping a Python version from a project
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Use when dropping a Python version from a project
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Use when exploring, triaging, or categorizing all of a repository's GitHub issues, like finding verifiable bugs or grouping issues by topic
Use when a branch and PR is requested explicitly
Use when user asks to secure a repo's CI
Review code quality and packaging usuing sp-repo-review for Scientific Python projects
Add a minimum version test job to a noxfile
| name | drop-python |
| description | Use when dropping a Python version from a project |
| license | MIT |
| compatibilty | Requires uv |
This guide provides step-by-step instructions for removing a Python support from a project. If the user doesn't specify a version, assume the lowest supported version is being bumped by one. Always drop one Python version at a time.
Below, <minor> is used instead of a specific digit; if dropping 3.9, then
<minor> is 9.
uv is required, quit if they are not installed. You can run any
other project-specific tools via uvx, such as nox -> uvx nox and prek
-> uvx prek if they are not present.prek is a faster Rust rewrite of pre-commit with the same config and
similar options. prek -a --quiet is best for running it.pyproject.toml (or setup.cfg or setup.py)Update Python version classifiers and requirements with the new minimum version. For example, if dropping Python 3.9:
[project]
requires-python = ">=3.10"
classifiers = [
"Programming Language :: Python :: 3",
# Remove "Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
# ...
]
If the next version is already tested, drop it. If not, update from the old to the new.
.github/workflow/*.yml)Check .pre-commit-config.yaml for anything pinned to to the old version.
Some tools also pin in pyproject.toml. Check for 3.<minor> and 3<minor> text. Some common locations:
project.requires-python, but if it's hardcoded, it's tool.ruff.target-version in pyproject.toml or ruff.target-version in ruff.toml or .ruff.tomltool.mypy.python_versiontool.pylint.py-version (can also be tool.pylint.master.py-version (deprecated) or tool.pylint.main.py-version)Check for usage of cp3<minor> / pp3in[tool.cibuildwheel]` as well as in the CI.
prek -a --quiet
Custom patterns to look for, for specific versions of Python are provided:
If the project has::
[dependency-groups]
dev = # ...
Then run:
uv run pytest
Otherwise check for nox or tox, and run that.
# Search for 3.<minor> references
git grep "\b3\.<minor>\b"
git grep "\bpy3<minor>\b"
git grep "3, <minor>"