Skip to main content

Venerable Pythons, Pants, Pip, and Ecosystems

· 2 min read
Chris Burroughs
Pants Maintainer

The Python development community concurrently supports multiple version of the Python programming language. These are in various states such as "prerelease", "bugfix", "security", or "end-of-life". For example version 3.12 is currently in "bugfix" while 3.8 is the oldest still receiving security updates. The cadence of future release is currently governed by PEP 602 – Annual Release Cycle for Python

Circa 2024 the state of all Python versions look something like:

CPython Release Status

That covers Python the language. The various projects and libraries that make up the broader Python ecosystem may support versions on different timetables. For example the pip project stopped supporting Python 3.7 in 2024-05 which was significantly after Python 3.7 itself reached end-of-life in 2023. Other projects may hue closer to the "bleeding edge".

There are a few different "versions of Python" that are relevant for Pants:

  • The versions of Python that Pants can test and build.
  • The versions of Python that Pants supports "out of the box" with default tool lockfiles. This includes tools like pip, black, or mypy.
  • The version of Python that Pants itself is written in. This is only relevant for plugin authors, the version that Pants itself uses is otherwise an implementation detail

Starting in Pants version 2.23 2.24 1, the default tool lockfile bundled with Pants will no longer support Python 3.7. Pants will still build and test Python 3.7 code! But you will first need to create your own tool lockfiles.

This will allow the bundled lockfiles to support versions of pip that will generate lockfiles faster, the Python 3.13 release, and more secure versions of setuptools.

In the future as support across the Python ecosystem ebbs and flows, Pants will continue to adjust to provide broad "out of the box" support for a variety of Python versions.


Footnotes

  1. This was originally intended to be 2.23, but moved to 2.24 to give more time for testing.