-
-
Notifications
You must be signed in to change notification settings - Fork 116
feat(dev): Python 3.14 default development target, drop 3.8 support #766
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
Conversation
WalkthroughThis PR updates Python version support across the project by dropping support for Python 3.8 (now EOL), making Python 3.9 the minimum version, and adding support for Python 3.14. Changes include updating CI workflows, Docker images, development tooling configurations, dependency specifications, and documentation. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes
Possibly related PRs
Poem
Pre-merge checks and finishing touches✅ Passed checks (2 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
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. Comment |
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.
Actionable comments posted: 0
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
README.md (1)
93-114: Fix minor documentation formatting issues.Two static analysis issues need correction:
- Line 95: Add a period after "etc" → "etc.)"
- Line 97: Add language specifier to the fenced code block (e.g.,
```bash)Apply this diff:
-The latest stable version of Python 3 is the default, and target version accessible as the `cement` container within Docker Compose. For testing against alternative versions of python, additional containers are created (ex: `cement-py39`, `cement-py310`, etc). You can access these containers via: +The latest stable version of Python 3 is the default, and target version accessible as the `cement` container within Docker Compose. For testing against alternative versions of python, additional containers are created (ex: `cement-py39`, `cement-py310`, etc.). You can access these containers via: -``` +```bash $ docker-compose ps
🧹 Nitpick comments (1)
docker/Dockerfile.dev-py314 (1)
25-26: Minor: COPY paths use./docker/prefix while docker/Dockerfile.dev usesdocker/.Both syntaxes are valid and functionally equivalent. For consistency across similar Dockerfiles, consider standardizing whether to use the
./prefix. The./prefix is more explicit and robust, so consider adopting it uniformly if standardizing.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (2)
devbox.lockis excluded by!**/*.lockpdm.lockis excluded by!**/*.lock
📒 Files selected for processing (13)
.github/workflows/build_and_test.yml(1 hunks)CHANGELOG.md(1 hunks)Dockerfile(1 hunks)Makefile(1 hunks)README.md(2 hunks)cement/ext/ext_plugin.py(0 hunks)devbox.json(1 hunks)docker-compose.yml(2 hunks)docker/Dockerfile.dev(1 hunks)docker/Dockerfile.dev-py313(1 hunks)docker/Dockerfile.dev-py314(2 hunks)pyproject.toml(3 hunks)scripts/cli-smoke-test.sh(1 hunks)
💤 Files with no reviewable changes (1)
- cement/ext/ext_plugin.py
🧰 Additional context used
🪛 LanguageTool
README.md
[style] ~95-~95: In American English, abbreviations like “etc.” require a period.
Context: ...ted (ex: cement-py39, cement-py310, etc). You can access these containers via: ...
(ETC_PERIOD)
🪛 markdownlint-cli2 (0.18.1)
README.md
97-97: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: test
🔇 Additional comments (12)
CHANGELOG.md (1)
15-16: Changelog entries accurately document the version migration.The refactoring entries clearly communicate the breaking changes. The
[dev]tags appropriately categorize these as infrastructure updates.scripts/cli-smoke-test.sh (1)
5-5: PYTHON_VERSIONS list correctly updated.The smoke test now covers Python 3.9 through 3.14, correctly excluding EOL 3.8 and including the new 3.14 development target.
docker/Dockerfile.dev (1)
1-1: Docker development image properly upgraded to Python 3.14.Base image and prompt identifier are consistent and correct.
Also applies to: 3-3
Dockerfile (1)
1-1: Production Docker image upgraded to Python 3.14-alpine.The base image is updated consistently with the development target. Consider verifying that Python 3.14 is stable and production-ready for your deployment scenario.
devbox.json (1)
4-4: Devbox configuration correctly updated to Python 3.14.Development environment now targets the new default Python version.
pyproject.toml (1)
19-19: Python version constraints synchronized and correctly updated.
requires-python, ruff target-version, and mypy python_version are all aligned to the new minimum of Python 3.9. This ensures consistent behavior across package installation, code compliance checks, and type validation.Also applies to: 72-72, 110-110
.github/workflows/build_and_test.yml (1)
68-68: CI test matrix comprehensively covers all supported Python versions.The matrix spans Python 3.9 through 3.14 with PyPy3.10, providing good coverage across the supported version range. The removal of Python 3.8 and addition of 3.10 and 3.14 align with the package requirements and development target.
README.md (2)
45-45: ✓ Documentation update accurate.The version requirement correctly reflects the new minimum Python support.
101-105: ✓ Docker container table aligns with docker-compose configuration.The container list (py39, py310, py311, py312, py313) correctly reflects the services defined in docker-compose.yml.
docker/Dockerfile.dev-py313 (1)
1-1: ✓ Appropriate base image stabilization.Updating from
python:3.13-rc-alpinetopython:3.13-alpineensures the container uses the stable release rather than a release candidate. This is a good practice for reproducible builds.Makefile (1)
3-11: ✓ Dev setup target correctly updated.The
devtarget appropriately replaces the removed py38 container with py313, maintaining consistency with the docker-compose configuration and ensuring all Python version containers are initialized during development setup.docker-compose.yml (1)
62-62: ✓ Docker Compose services properly updated.The removal of
cement-py38and addition ofcement-py313follow the established service pattern and correctly reference the corresponding Dockerfile. The new service maintains consistency with other version-specific containers.Also applies to: 84-89
Resolves Issue #764.
Summary by CodeRabbit
Chores
Documentation