Releases: jazzband/pip-tools
Release list
v7.6.0
2026-07-13
Features
-
The
--helpoutput forpip-compileandpip-synccommands has been extended to include usage examples -- by @Dzhud.PRs and issues: #1142
-
Added
--uploaded-prior-toas a passthrough option forpip-compile, allowing users to restrict package candidates to versions uploaded before a given datetime. Requires pip >= 26.0 -- by @miettal.PRs and issues: #2288
-
pip-toolsis now compatible withpip26.1 -- @gaborbernat.PRs and issues: #2379
Improved documentation
-
Fixed the contents sidebar for the index doc -- by @sirosen.
PRs and issues: #2169
-
pip-toolsnow has a policy regarding LLM-generated contributions, noted in the contributing documentation -- by @sirosen.Thanks to @0cjs, @gpshead, mr-@c, @samdoran, @webknjaz, and everyone else in the broader community who helped us to craft a policy which is considerate of contributors and protective of the project and its maintainers.
PRs and issues: #2318
-
pip-tools' documentation now features a section titled "Reference" covering the CLI commands and configuration. Configuration documentation has been removed from the readme.-- by @sirosen
Contributor-facing changes
-
CI testing now runs on Intel and ARM macOS runners, and is pinned to a specific macOS version -- by @sirosen.
-
pip-toolsnow has a policy regarding LLM-generated contributions, noted in the contributing documentation -- by @sirosen.Thanks to @0cjs, @gpshead, mr-@c, @samdoran, @webknjaz, and everyone else in the broader community who helped us to craft a policy which is considerate of contributors and protective of the project and its maintainers.
-
Started running {pypi}
zizmoras a part of CI pipelines to improve security of how we configure GitHub Actions CI/CD -- by @webknjaz.PRs and issues: #2327
-
pip-tools docs now support GitHub Flavored Markdown admonition blocks -- by @webknjaz.
PRs and issues: #2343
-
Coverage reporting in
pip-toolsnow skips_t.TYPE_CHECKINGblocks -- by @gaborbernat.PRs and issues: #2386
-
piptools.repositories.LocalRequirementsRepositorynow accepts anypiptools.repositories.BaseRepositorysubclass as its proxied repository, not onlypiptools.repositories.PyPIRepository-- by @gaborbernat.PRs and issues: #2387
-
A handful of f-string conversions in
piptools.utilsand the CLI entry points inpiptools.scripts.compileandpiptools.scripts.synccarried a stray space before!s(e.g.f"...{value !s}..."). PEP 498 forbids the whitespace before the conversion flag and tooling differs on whether the form parses; the literals are now in canonical{value!s}shape -- by @gaborbernat.PRs and issues: #2388
-
A session-scoped autouse fixture in
tests/conftest.pynow drops everyPIP_*environment variable before any other fixture runs, so the test suite no longer flakes on contributor machines whose shell exportsPIP_INDEX_URL,PIP_FIND_LINKS,PIP_TRUSTED_HOST, and the rest of the family for a corporate mirror. Tests that need a specific variable keep their function-scopedpytest:pytest.MonkeyPatch.setenvand supersede the session-level deletion -- by @gaborbernat.PRs and issues: #2390
-
The Sphinx configuration now resolves cross-references for packaging, pip, click, build, and importlib_metadata via intersphinx, and the deprecated
sphinx.util.console.boldhelper is replaced with a plainlogger.infocall (the colour markup never rendered in CI logs anyway). Cross-references in docstrings that previously fell back to nitpick suppression now link to the upstream documentation -- by @gaborbernat.PRs and issues: #2391
-
The
Notify CodecovCI workflow job now only fails on privilege errors in the upstream project repository runs. This fixes a problem contributors face when running CI within their forks that are not filed as true Codecov-side projects.-- by @gaborbernat and @webknjaz
PRs and issues: #2392
-
Fixed incorrect nitpick ignore regexes -- by @sirosen.
-
pip-toolsCI now pins GitHub Actions versions to hashes -- by @sirosen. -
pip-toolsnow tests against PyPy 3.11 -- by @sirosen and @webknjaz. -
pip-tools's GitHub Actions config now specifies the Ubuntu and Windows runner versions used.
v7.5.3
2026-02-11
Bug fixes
-
The option
--unsafe-packageis now normalized -- by @shifqu.PRs and issues: #2150
-
Fixed a bug in which
pip-compilelost any index URL options when
looking up hashes -- by @sirosen.This caused errors when a package was only available from an extra
index, and causedpip-compileto incorrectly drop index URL options
from output, even when they were present in the input requirements. -
Fixed removal of temporary files used when reading requirements from stdin
-- by @sirosen.
Features
-
pip-toolsis now tested against Python 3.14 and 3.14t in CI, and
marks them as supported in the core packaging metadata
-- by @webknjaz.PRs and issues: #2255
-
pip-tools is now compatible with pip 26.0 -- by @sirosen.
Removals and backward incompatible breaking changes
- Removed support for Python 3.8 -- by @sirosen.
Improved documentation
-
The change log management infra now allows the maintainers to add notes
before and after the regular categories -- by @webknjaz. -
Added documentation clarifying that
pip-compilereads the existing
output file as a constraint source, and how to use--upgradeto
refresh dependencies -- by @maliktafheem.PRs and issues: #2307
Packaging updates and notes for downstreams
-
pip-toolsis now tested against Python 3.14 and 3.14t in CI, and
marks them as supported in the core packaging metadata
-- by @webknjaz.PRs and issues: #2255
Contributor-facing changes
-
Consistency of the Markdown files is now being enforced by linting
with pymarkdownlnt -- by @webknjaz.PRs and issues: #2256
-
The linting is now set up to perform structured GitHub Actions
workflows and actions checks against json schemas
-- by @webknjaz.PRs and issues: #2273
-
The CI/CD is now set up so that the distribution build job
is a part of the test pipeline. That pipeline is included in
the release workflow which sources the artifact in produces.
The tests must now pass for the release to be published to PyPI.-- by @webknjaz
PRs and issues: #2274
-
Fix
actionlinthook usage to always includeshellcheckintegration -- by @sirosen.PRs and issues: #2281
-
Utilities for interacting with
piphave started to move into the
:py:mod:piptools._internal._pip_apisubpackage -- by @sirosen.PRs and issues: #2285
-
The change log management infra now allows the maintainers to add notes
before and after the regular categories -- by @webknjaz. -
The linting is now set up to demand that
typingis always
imported as a module under the name of_t-- by @webknjaz.This is enforced by @sirosen's flake8-typing-as-t
plugin for flake8.PRs and issues: #2289
-
The
tox.iniand.github/parts of the repository now
have project leads assigned as GitHub code owners -- by @webknjaz.PRs and issues: #2291
-
Remove a redundant 'v' prefix from the CI release workflow job name -- by @anandvenugopal-tech.
PRs and issues: #2300
-
The
check-jsonschemaReadTheDocs hook has been enabled, and
the config has been tweaked to pass -- by @sirosen.
v7.5.2
2025-11-11
Bug fixes
-
Fixed
pip-compileto handle relative path includes which are not subpaths of the current working directory -- by @sirosen. -
Using
--upgrade-packageand dynamically building project metadata no longer causes anAttributeErrorwhen pip encounters an error during the build -- by @Epic_Wink and @tusharsadhwani.PRs and issues: #2258
Features
-
Test and declare Python 3.13 support -- by @jayaddison (for OpenCulinary).
PRs and issues: #2251
-
pip-tools is now compatible with pip 25.3 -- by @shifqu.
Packaging updates and notes for downstreams
-
pip-toolsnow supports installation from git archives by providingsetuptools-scmwith.git_archival.txtdata.PRs and issues: #2225
Contributor-facing changes
-
The change log entry bot has been explicitly configured to stop requiring news fragments in pull requests having the
bot:chronographer:skiplabel set -- by @sirosen and @webknjaz.It was also set up to reference our change log authoring document from the GitHub Checks pages. And the reported check name is now set to
Change log entry.PRs and issues: #2201
-
The CI is now set up to invoke failed tests again with maximum level of detail -- by @webknjaz.
The change is aimed at helping troubleshoot failures that might be difficult to reproduce locally.
PRs and issues: #2254
-
The integration with Codecov has been updated to ensure that reports are uploaded to the service even on failures -- by @webknjaz.
GitHub Actions is now configured to also send an explicit notification to Codecov about the completion of previously initiated uploads.
Additionally, the configuration file is now
.codecov.yml.PRs and issues: #2265
-
The linting suite now runs
actionlint-- by @webknjaz.This tool checks typical problems with GitHub Actions workflow definitions and has a registry of widely-used GitHub Action arguments that it validates.
PRs and issues: #2266
v7.5.1
2025-09-26
Bug fixes
-
Fixed static parsing of
pyproject.tomldata when thepyproject.tomlis supplied as a relative path -- by @sirosen. -
The "via" paths in
pip-compileoutput for requirements discovered frompyproject.tomldata are now written in POSIX format -- by @sirosen.PRs and issues: #2221
-
Fixed a bug which removed slashes from URLs in
-rand-cin the output ofpip-compile-- by @sirosen.PRs and issues: #2223
-
Fixed an incompatibility with
click >= 8.3which madepip-compiledisplay incorrect options in the compile command in output headers -- by @sirosen.PRs and issues: #2235
Features
Improved documentation
-
ReadTheDocs builds for
pip-toolsno longer include htmlzip and pdf outputs -- by @sirosen.PRs and issues: #2218
Contributor-facing changes
-
pip-toolsnow tests onpipversion 25.2 -- by @sirosen.PRs and issues: #2214
-
The changelog documentation for contributors now provides hyperlinks to the source of each example change note -- by @jayaddison (for OpenCulinary).
PRs and issues: #2217
-
The CPython versions tested in nightly CI runs are now separate from branch and PR CI, and don't include very old versions -- by @sirosen.
PRs and issues: #2226
v7.5.0
2025-07-30
Bug fixes
-
Fixed the ordering of format controls to preserve underlying
pipbehavior -- by @sethmlarson.PRs and issues: #2082
-
Fixed
NoCandidateFoundexception to be compatible withpip >= 24.1-- by @chrysle.PRs and issues: #2083
-
pip-compilenow produces relative paths for editable dependencies -- by @macro1.PRs and issues: #2087
-
Fixed crash failures due to incompatibility with
pip >= 25.1-- by @gkreitz and @sirosen.
Features
-
pip-compilenow treats package versions requested on the command line as constraints for the underlyingpipusage.
This applies to build deps in addition to normal package requirements.-- by @chrysle
PRs and issues: #2106
-
pip-toolsnow tests on and officially supports Python 3.12 -- by @sirosen.PRs and issues: #2188
-
Requirements file paths in
pip-compileoutput are now normalized to POSIX-style, even whenpip-compileis run on Windows.
This provides more consistent output across various platforms.-- by @sirosen
PRs and issues: #2195
-
pip-toolsnow tests against and supportspipup to version25.1-- by @sirosen.PRs and issues: #2195
Removals and backward incompatible breaking changes
-
pip-compilewill now relativize the requirements paths which are recorded in its output.
Paths are made relative to the working directory.
This provides more consistent results acrosspipversions.-- by @sirosen
Packaging updates and notes for downstreams
-
pip-toolsreleases are now configured via Trusted Publishing.
This allows for signature and attestation verification via PyPI.-- by @webknjaz
Contributor-facing changes
-
pip-tools's CI now runs against pinnedpipversions, declared intoxconfiguration as the "supported" version.
This does not change the support policy forpipversions, but declares what is tested and known to work.-- by @webknjaz
PRs and issues: #2142
-
pip-toolsnow tests against PyPy 3.10 as its supported PyPy version -- by @webknjaz.PRs and issues: #2146
-
pip-toolsnow uses Towncrier to manage the changelog.-- by @sirosen and @webknjaz, with suggestions from @jayaddison
-
pip-toolsnow usessphinx-issuesto link to issues, PRs, commits, and user accounts -- by @sirosen.PRs and issues: #2202
7.4.1
7.4.0
Features:
- Allow force-enabling or force-disabling colorized output (#2041). Thanks @aneeshusa
- Add support for command-specific configuration sections (#1966). Thanks @chrysle
- Add options for including build dependencies in compiled output (#1681). Thanks @apljungquist
Bug Fixes:
- Fix for
src-filesnot being used when specified in a config file (#2015). Thanks @csalerno-asml - Fix ignorance of inverted CLI options in config for
pip-sync(#1989). Thanks @chrysle - Filter out origin ireqs for extra requirements before writing output annotations (#2011). Thanks @chrysle
- Make BacktrackingResolver ignore extras when dropping existing constraints (#1984). Thanks @chludwig-haufe
- Display
pyproject.toml's metatada parsing errors in verbose mode (#1979). Thanks @szobov
Other Changes:
- Add mention of pip-compile-multi in Other useful tools README section (#1986). Thanks @peterdemin
7.3.0
Features:
- Add
--no-strip-extrasand warn about strip extras by default (#1954). Thanks @ryanhiebert
Bug Fixes:
- Fix revealed default config in header if requirements in subfolder (#1904). Thanks @atugushev
- Direct references show extra requirements in .txt files (#1582). Thanks @FlorentJeannot
Other Changes:
- Document how to run under
pipx run(#1951). Thanks @brettcannon - Document that the backtracking resolver is the current default (#1948). Thanks @jeffwidman
7.2.0
Features:
- Add
-c/--constraintoption topip-compile(#1936). Thanks @atugushev
Bug Fixes:
- Allow options in config from both
pip-compileandpip-sync(#1933). Thanks @atugushev - Fix rejection of negating CLI boolean flags in config (#1913). Thanks @chrysle
Other Changes:
- Add Command Line Reference section to docs (#1934). Thanks @atugushev
7.1.0
Features:
- Validate parsed config against CLI options (#1910). Thanks @atugushev
Bug Fixes:
- Fix a bug where pip-sync would unexpectedly uninstall some packages (#1919). Thanks @atugushev