About
Keeping Python projects modern and efficient. Time flies.
Status quo
Coming from 2020’s Hypermodern Python, in 2025, we are looking for a refreshed best-practice blueprint for Python projects that keeps the right balance optimizing for low effort and low overhead, while maximizing for high development and maintenance efficiency on as many lifecycle details as possible.
This post will quickly outline a few details as we go. As such, it does not qualify as a full blog post. Any kind of feedback is very much welcome. Signing up is easy, and leaving a comment even more. Thanks!
BOM
Add: Vanilla pyproject.toml
using setuptools, versioningit, uv, poethepoet, ruff, mypy, build, twine, pyproject-fmt, validate-pyproject, pytest, importlib.metadata, importlib.resources, verlib2 instead of packaging
Remove: black, isort, flake8 [1]
Optionally: Poetry, Flit, Hatch, PDM, Rye, or others. [2]
History
Disclaimer: This is just a little summary, and is missing many important details [3] elaborating about smart people trying to advance the situation in Python packaging throughout the years. A few people are tagged, but there are many more unsung heros. Thank you!
-
Early days of Python conceived easy_install, then setuptools, then pip, and of course, PyPI, the latest and greatest following up on the success of CPAN.
-
Complexity and pains growing, and the aim for robustness and features learned from other languages started later (Java, Ruby, Rust), Python was behind for a long time, leading to the famous superfund site situation we all know about.
-
~2018 @sdispater made an excellent start by conceiving Poetry to overcome the gravity of legacy, and a few others followed by conceiving competing package and project managers like Flit, Hatch, PDM, and others.
-
~2020 was a watershed moment of the Python community. The Hypermodern Python series by Claudio Jolowicz (@cjolowicz) tells its story, and we modernized quite a few Python projects successfully using relevant ingredients.
-
~2020 also emitted PEP 621, which adopted the convention to use TOML files for storing project metadata.
-
~2022 was another watershed moment in vanilla Python, after setuptools v64.0.0 gained the capability to support editable installs for
pyproject.toml
-based builds by implementing and shipping PEP 660. -
~2022, latest after launching Ruff, Charlie Marsh (@charliermarsh) made a point that Ruff will be here to stay in Python tooling.
-
~2023, Armin Ronacher (@mitsuhiko) quickly followed up joining the party by announcing Rye, all while roughly at the same time, Charlie Marsh already started working on uv.
-
Things moving fast now, to overcome another sprawl, Armin Ronacher reflecting on his vision, Charlie Marsh / Astral and their crew took over stewardship of Rye in February 15, 2024, but are focusing on uv now.