Changelog#

Unreleased Changes#

Generated for preview on 2025-07-30

Bug fixes#

  • Fixed the ordering of format controls to preserve underlying pip behavior – by @sethmlarson.

    PRs and issues: #2082

  • Fixed NoCandidateFound exception to be compatible with pip >= 24.1 – by @chrysle.

    PRs and issues: #2083

  • pip-compile now 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.

    PRs and issues: #2176, #2178

Features#

  • pip-compile now treats package versions requested on the command line as constraints for the underlying pip usage. This applies to build deps in addition to normal package requirements.

    – by @chrysle

    PRs and issues: #2106

  • pip-tools now tests on and officially supports Python 3.12 – by @sirosen.

    PRs and issues: #2188

  • pip-tools now tests against and supports pip up to version 25.1 – by @sirosen.

    PRs and issues: #2195

  • Requirements file paths in pip-compile output are now normalized to POSIX-style, even when pip-compile is run on Windows. This provides more consistent output across various platforms.

    – by @sirosen

    PRs and issues: #2195

Removals and backward incompatible breaking changes#

  • pip-compile will now relativize the requirements paths which are recorded in its output. Paths are made relative to the working directory. This provides more consistent results across pip versions.

    – by @sirosen

    PRs and issues: #2131, #2195

Packaging updates and notes for downstreams#

  • pip-tools releases are now configured via Trusted Publishing. This allows for signature and attestation verification via PyPI.

    – by @webknjaz

    PRs and issues: #2149

Contributor-facing changes#

  • pip-tools’s CI now runs against pinned pip versions, declared in tox configuration as the “supported” version. This does not change the support policy for pip versions, but declares what is tested and known to work.

    – by @webknjaz

    PRs and issues: #2142

  • pip-tools now tests against PyPy 3.10 as its supported PyPy version – by @webknjaz.

    PRs and issues: #2146

  • pip-tools now uses Towncrier to manage the changelog – by @sirosen and @webknjaz, with suggestions from @jayaddison.

    PRs and issues: #2201, #2203

  • pip-tools now uses sphinx-issues to link to issues, PRs, commits, and user accounts – by @sirosen.

    PRs and issues: #2202

v7.4.1#

05 Mar 2024

Bug Fixes#

  • Skip constraint path check (#2038) – by @honnix.

  • Fix collecting deps for all extras in multiple input packages (#1981) – by @dragly.

v7.4.0#

16 Feb 2024

Features#

  • Allow force-enabling or force-disabling colorized output (#2041) – by @aneeshusa.

  • Add support for command-specific configuration sections (#1966) – by @chrysle.

  • Add options for including build dependencies in compiled output (#1681) – by @apljungquist.

Bug Fixes#

  • Fix for src-files not being used when specified in a config file (#2015) – by @csalerno-asml.

  • Fix ignorance of inverted CLI options in config for pip-sync (#1989) – by @chrysle.

  • Filter out origin ireqs for extra requirements before writing output annotations (#2011) – by @chrysle.

  • Make BacktrackingResolver ignore extras when dropping existing constraints (#1984) – by @chludwig-haufe.

  • Display pyproject.toml’s metatada parsing errors in verbose mode (#1979) – by @szobov.

Other Changes#

  • Add mention of pip-compile-multi in Other useful tools README section (#1986) – by @peterdemin.

v7.3.0#

09 Aug 2023

Features#

  • Add --no-strip-extras and warn about strip extras by default (#1954) – by @ryanhiebert.

Bug Fixes#

  • Fix revealed default config in header if requirements in subfolder (#1904) – by @atugushev.

  • Direct references show extra requirements in .txt files (#1582) – by @FlorentJeannot.

Other Changes#

v7.2.0#

02 Aug 2023

Features#

Bug Fixes#

  • Allow options in config from both pip-compile and pip-sync (#1933) – by @atugushev.

  • Fix rejection of negating CLI boolean flags in config (#1913) – by @chrysle.

Other Changes#

v7.1.0#

18 Jul 2023

Features#

Bug Fixes#

  • Fix a bug where pip-sync would unexpectedly uninstall some packages (#1919) – by @atugushev.

v7.0.0#

14 Jul 2023

Backwards Incompatible Changes#

Features#

Bug Fixes#

v6.14.0#

28 Jun 2023

Features#

  • Support config defaults using .pip-tools.toml or pyproject.toml (#1863) – by @j00bar.

  • Log a warning if the user specifies -P and the output file is present but empty (#1822) – by @davidmreed.

  • Improve warning for pip-compile if no --allow-unsafe was passed (#1867) – by @chrysle.

Other Changes#

  • Correct in README pre-commit hook to run off requirements.in (#1847) – by @atugushev.

  • Add pyprojects.toml example for using setuptools (#1851) – by @shatakshiiii.

v6.13.0#

07 Apr 2023

Features#

  • Add support for self-referential extras (#1791) – by @q0w.

  • Add support for pip==23.1 where removed FormatControl in WheelCache (#1834) – by @atugushev.

  • Add support for pip==23.1 where refactored requirement options (#1832) – by @atugushev.

  • Add support for pip==23.1 where deprecated --install-option has been removed (#1828) – by @atugushev.

Bug Fixes#

  • Pass --cache-dir to --pip-args for backtracking resolver (#1827) – by @q0w.

Other Changes#

v6.12.3#

01 Mar 2023

Bug Fixes#

  • Remove extras from user-supplied constraints in backtracking resolver (#1808) – by @thomdixon.

  • Fix for sync error when the ireqs being merged have no names (#1802) – by @richafrank.

v6.12.2#

25 Dec 2022

Bug Fixes#

  • Raise error if input and output filenames are matched (#1787) – by @atugushev.

  • Add pyproject.toml as default input file format (#1780) – by @berislavlopac.

  • Fix a regression with unsafe packages for --allow-unsafe (#1788) – by @q0w.

v6.12.1#

16 Dec 2022

Bug Fixes#

  • Set explicitly packages for setuptools (#1782) – by @q0w.

v6.12.0#

13 Dec 2022

Features#

Bug Fixes#

  • Treat --upgrade-packages PKGSPECs as constraints (not just minimums), consistently (#1578) – by @AndydeCleyre.

  • Filter out the user provided unsafe packages (#1766) – by @q0w.

  • Adopt PEP-621 for packaging (#1763) – by @ssbarnea.

v6.11.0#

30 Nov 2022

Features#

  • Add pyproject.toml file (#1643) – by @otherJL0.

  • Support build isolation using setuptools/pyproject.toml requirement files (#1727) – by @atugushev.

Bug Fixes#

  • Improve punctuation/grammar with pip-compile header (#1547) – by @blueyed.

  • Generate hashes for all available candidates (#1723) – by @neykov.

Other Changes#

v6.10.0#

13 Nov 2022

Features#

  • Deprecate pip-compile --resolver=legacy (#1724) – by @atugushev.

  • Prompt user to use the backtracking resolver on errors (#1719) – by @maxfenv.

  • Add support for Python 3.11 final (#1708) – by @hugovk.

  • Add --newline=[LF|CRLF|native|preserve] option to pip-compile (#1652) – by @AndydeCleyre.

Bug Fixes#

  • Fix inconsistent handling of constraints comments with backtracking resolver (#1713) – by @mkniewallner.

  • Fix some encoding warnings in Python 3.10 (PEP 597) (#1614) – by @GalaxySnail.

Other Changes#

  • Update pip-tools version in the README’s pre-commit examples (#1701) – by @Kludex.

  • Document use of the backtracking resolver (#1718) – by @maxfenv.

  • Use HTTPS in a readme link (#1716) – by @Arhell.

v6.9.0#

05 Oct 2022

Features#

Bug Fixes#

Other Changes#

  • Add pyproject.toml & modern packaging to introduction (#1668) – by @hynek.

v6.8.0#

30 Jun 2022

Features#

  • Add support for pip’s 2020 dependency resolver. Use pip-compile --resolver backtracking to enable new resolver (#1539) – by @atugushev.

v6.7.0#

27 Jun 2022

Features#

  • Support for the importlib.metadata metadata implementation (#1632) – by @richafrank.

Bug Fixes#

  • Instantiate a new accumulator InstallRequirement for combine_install_requirements output (#1519) – by @richafrank.

Other Changes#

  • Replace direct usage of the pep517 module with the build module, for loading project metadata (#1629) – by @AndydeCleyre.

v6.6.2#

23 May 2022

Bug Fixes#

  • Update PyPIRepository::resolve_reqs() for pip>=22.1.1 (#1624) – by @m000.

v6.6.1#

13 May 2022

Bug Fixes#

v6.6.0#

06 Apr 2022

Features#

Bug Fixes#

  • Ensure pip-compile --dry-run --quiet still shows what would be done, while omitting the dry run message (#1592) – by @AndydeCleyre.

  • Fix --generate-hashes when hashes are computed from files (#1540) – by @RazerM.

v6.5.1#

08 Feb 2022

Bug Fixes#

  • Ensure canonicalized requirement names are used as keys, to prevent unnecessary reinstallations during sync (#1572) – by @AndydeCleyre.

v6.5.0#

04 Feb 2022

Features#

  • Add support for pip>=22.0, drop support for Python 3.6 (#1567) – by @di.

  • Test on Python 3.11 (#1527) – by @hugovk.

Other Changes#

v6.4.0#

12 Oct 2021

Features#

Other Changes#

v6.3.1#

08 Oct 2021

Bug Fixes#

  • Ensure pip-tools unions dependencies of multiple declarations of a package with different extras (#1486) – by @richafrank.

  • Allow comma-separated arguments for --extra (#1493) – by @AndydeCleyre.

  • Improve clarity of help text for options supporting multiple (#1492) – by @AndydeCleyre.

v6.3.0#

21 Sep 2021

Features#

Bug Fixes#

v6.2.0#

22 Jun 2021

Features#

  • Add --emit-options/--no-emit-options flags to pip-compile (#1123) – by @atugushev.

  • Add --python-executable option for pip-sync (#1333) – by @MaratFM.

  • Log which python version was used during compile (#828) – by @graingert.

Bug Fixes#

  • Fix pip-compile package ordering (#1419) – by @adamsol.

  • Add --strip-extras option to pip-compile for producing constraint compatible output (#1404) – by @ssbarnea.

  • Fix click v7 version_option compatibility (#1410) – by @FuegoFro.

  • Pass package_name explicitly in click.version_option decorators for compatibility with click>=8.0 (#1400) – by @nicoa.

Other Changes#

  • Document updating requirements with pre-commit hooks (#1387) – by @microcat49.

  • Add setuptools and wheel dependencies to the setup.cfg (#889) – by @jayvdb.

  • Improve instructions for new contributors (#1394) – by @FlorentJeannot.

  • Better explain role of existing requirements.txt (#1369) – by @mikepqr.

v6.1.0#

14 Apr 2021

Features#

  • Add support for pyproject.toml or setup.cfg as input dependency file (PEP-517) for pip-compile (#1356) – by @orsinium.

  • Add pip-compile --extra option to specify extras_require dependencies (#1363) – by @orsinium.

Bug Fixes#

  • Restore ability to set compile cache with env var PIP_TOOLS_CACHE_DIR (#1368) – by @AndydeCleyre.

v6.0.1#

15 Mar 2021

Bug Fixes#

  • Fixed a bug with undeclared dependency on importlib-metadata at Python 3.6 (#1353) – by @atugushev.

Dependencies#

v6.0.0#

12 Mar 2021

Backwards Incompatible Changes#

  • Remove support for EOL Python 3.5 and 2.7 (#1243) – by @jdufresne.

  • Remove deprecated --index/--no-index option from pip-compile (#1234) – by @jdufresne.

Features#

  • Use pep517 to parse dependencies metadata from setup.py (#1311) – by @astrojuanlu.

Bug Fixes#

  • Fix a bug where pip-compile with setup.py would not include dependencies with environment markers (#1311) – by @astrojuanlu.

  • Prefer === over == when generating requirements.txt if a dependency was pinned with === (#1323) – by @IceTDrinker.

  • Fix a bug where pip-compile with setup.py in nested folder would generate setup.txt output file (#1324) – by @peymanslh.

  • Write out default index when it is provided as --extra-index-url (#1325) – by @fahrradflucht.

Dependencies#

v5.5.0#

31 Dec 2020

Features#

Bug Fixes#

  • Restore PIP_EXISTS_ACTION environment variable to its previous state when resolve dependencies in pip-compile (#1255) – by @jdufresne.

Dependencies#

  • Remove six dependency in favor pip’s vendored six (#1240) – by @jdufresne.

Improved Documentation#

  • Add pip-requirements.el (for Emacs) to useful tools to README (#1244) – by @jdufresne.

  • Add supported Python versions to README (#1246) – by @jdufresne.

v5.4.0#

21 Nov 2020

Features#

Dependencies#

v5.3.1#

31 Jul 2020

Bug Fixes#

  • Fix pip-20.2 compatibility issue that caused pip-tools to sometime fail to stabilize in a constant number of rounds (#1194) – by @vphilippon.

v5.3.0#

26 Jul 2020

Features#

  • Add -h alias for --help option to pip-sync and pip-compile (#1163) – by @jan25.

  • Add pip>=20.2 support (#1168) – by @atugushev.

  • pip-sync now exists with code 1 on --dry-run (#1172) – by @francisbrito.

  • pip-compile now doesn’t resolve constraints from -c constraints.txtthat are not (yet) requirements (#1175) – by @clslgrnc.

  • Add --reuse-hashes/--no-reuse-hashes options to pip-compile (#1177) – by @graingert.

v5.2.1#

09 Jun 2020

Bug Fixes#

  • Fix a bug where pip-compile would lose some dependencies on update a requirements.txt (#1159) – by @richafrank.

v5.2.0#

27 May 2020

Features#

  • Show basename of URLs when pip-compile generates hashes in a verbose mode (#1113) – by @atugushev.

  • Add --emit-index-url/--no-emit-index-url options to pip-compile (#1130) – by @atugushev.

Bug Fixes#

  • Fix a bug where pip-compile would ignore some of package versions when PIP_PREFER_BINARY is set on (#1119) – by @atugushev.

  • Fix leaked URLs with credentials in the debug output of pip-compile (#1146) – by @atugushev.

  • Fix a bug where URL requirements would have name collisions (#1149) – by @geokala.

Deprecations#

  • Deprecate --index/--no-index in favor of --emit-index-url/--no-emit-index-url options in pip-compile (#1130) – by @atugushev.

Other Changes#

  • Switch to setuptools declarative syntax through setup.cfg (#1141) – by @jdufresne.

v5.1.2#

05 May 2020

Bug Fixes#

  • Fix grouping of editables and non-editables requirements (#1132) – by @richafrank.

v5.1.1#

01 May 2020

Bug Fixes#

  • Fix a bug where pip-compile would generate hashes for *.egg files (#1122) – by @atugushev.

v5.1.0#

27 Apr 2020

Features#

  • Show progress bar when downloading packages in pip-compile verbose mode (#949) – by @atugushev.

  • pip-compile now gets hashes from PyPI JSON API (if available) which significantly increases the speed of hashes generation (#1109) – by @atugushev.

v5.0.0#

16 Apr 2020

Backwards Incompatible Changes#

  • pip-tools now requires pip>=20.0 (previously 8.1.x - 20.0.x). Windows users, make sure to use python -m pip install pip-tools to avoid issues with pip self-update from now on (#1055) – by @atugushev.

  • --build-isolation option now set on by default for pip-compile (#1060) – by @hramezani.

Features#

  • Exclude requirements with non-matching markers from pip-sync (#927) – by @AndydeCleyre.

  • Add pre-commit hook for pip-compile (#976) – by @atugushev.

  • pip-compile and pip-sync now pass anything provided to the new --pip-args option on to pip (#1080) – by @AndydeCleyre.

  • pip-compile output headers are now more accurate when -- is used to escape filenames (#1080) – by @AndydeCleyre.

  • Add pip>=20.1 support (#1088) – by @atugushev.

Bug Fixes#

  • Fix a bug where editables that are both direct requirements and constraints wouldn’t appear in pip-compile output (#1093) – by @richafrank.

  • pip-compile now sorts format controls (--no-binary/--only-binary) to ensure consistent results (#1098) – by @richafrank.

Improved Documentation#

  • Add cross-environment usage documentation to README (#651) – by @vphilippon.

  • Add versions compatibility table to README (#1106) – by @atugushev.

v4.5.1#

26 Feb 2020

Bug Fixes#

  • Strip line number annotations such as “(line XX)” from file requirements, to prevent diff noise when modifying input requirement files (#1075) – by @adamchainz.

Improved Documentation#

  • Updated README example outputs for primary requirement annotations (#1072) – by @richafrank.

v4.5.0#

20 Feb 2020

Features#

  • Primary requirements and VCS dependencies are now get annotated with any source .in files and reverse dependencies (#1058) – by @AndydeCleyre.

Bug Fixes#

  • Always use normalized path for cache directory as it is required in newer versions of pip (#1062) – by @kammala.

Improved Documentation#

  • Replace outdated link in the README with rationale for pinning (#1053) – by @m-aciek.

v4.4.1#

31 Jan 2020

Bug Fixes#

  • Fix a bug where pip-compile would keep outdated options from requirements.txt (#1029) – by @atugushev.

  • Fix the No handlers could be found for logger "pip.*" error by configuring the builtin logging module (#1035) – by @vphilippon.

  • Fix a bug where dependencies of relevant constraints may be missing from output file (#1037) – by @jeevb.

  • Upgrade the minimal version of click from 6.0 to 7.0 version in setup.py (#1039) – by @hramezani.

  • Ensure that depcache considers the python implementation such that (for example) cpython3.6 does not poison the results of pypy3.6 (#1050) – by @asottile.

Improved Documentation#

v4.4.0#

21 Jan 2020

Features#

Bug Fixes#

  • Fix a bug where pip-compile --upgrade-package would upgrade those passed packages not already required according to the *.in and *.txt files (#1031) – by @AndydeCleyre.

v4.3.0#

25 Nov 2019

Features#

Bug Fixes#

  • Fix pip-compile doesn’t copy --trusted-host from requirements.in to requirements.txt (#964) – by @atugushev.

  • Add compatibility with pip>=20.0 (#953 and #978) – by @atugushev.

  • Fix a bug where the resolver wouldn’t clean up the ephemeral wheel cache (#968) – by @atugushev.

Improved Documentation#

  • Add a note to README about requirements.txt file, which would possibly interfere if you’re compiling from scratch (#959) – by @hramezani.

v4.2.0#

12 Oct 2019

Features#

Bug Fixes#

Improved Documentation#

  • Add info to README about layered requirements files and -c flag (#905) – by @jamescooke.

v4.1.0#

26 Aug 2019

Features#

  • Add --no-emit-find-links option to pip-compile (#873) – by @jacobtolar.

Bug Fixes#

  • Prevent --dry-run log message from being printed with --quiet option in pip-compile (#861) – by @ddormer.

  • Fix resolution of requirements from Git URLs without -e (#879) – by @andersk.

v4.0.0#

25 Jul 2019

Backwards Incompatible Changes#

  • Drop support for EOL Python 3.4 (#803) – by @auvipy.

Bug Fixes#

v3.9.0#

17 Jul 2019

Features#

  • Print provenance information when pip-compile fails (#837) – by @jakevdp.

Bug Fixes#

v3.8.0#

06 Jun 2019

Features#

  • Options --upgrade and --upgrade-package are no longer mutually exclusive (#831) – by @adamchainz.

Bug Fixes#

  • Fix --generate-hashes with bare VCS URLs (#812) – by @jcushman.

  • Fix issues with UnicodeError when installing pip-tools from source in some systems (#816) – by @AbdealiJK.

  • Respect --pre option in the input file (#822) – by @atugushev.

  • Option --upgrade-package now works even if the output file does not exist (#831) – by @adamchainz.

v3.7.0#

09 May 2019

Features#

Bug Fixes#

  • Fix replacing password to asterisks in pip-compile (#808) – by @atugushev.

v3.6.1#

24 Apr 2019

Bug Fixes#

v3.6.0#

03 Apr 2019

Features#

v3.5.0#

13 Mar 2019

Features#

  • Show default index url provided by pip (#735) – by @atugushev.

  • Add an option to allow enabling/disabling build isolation (#758) – by @atugushev.

Bug Fixes#

  • Fix the output file for pip-compile with an explicit setup.py as source file (#731) – by @atugushev.

  • Fix order issue with generated lock file when hashes and markers are used together (#763) – by @milind-shakya-sp.

v3.4.0#

19 Feb 2019

Features#

  • Add option --quiet to pip-compile (#720) – by @bendikro.

  • Emit the original command to the pip-compile’s header (#733) – by @atugushev.

Bug Fixes#

  • Fix pip-sync to use pip script depending on a python version (#737) – by @atugushev.

v3.3.2#

26 Jan 2019

Bug Fixes#

  • Fix pip-sync with a temporary requirement file on Windows (#723) – by @atugushev.

  • Fix pip-sync to prevent uninstall of stdlib and dev packages (#718) – by @atugushev.

v3.3.1#

24 Jan 2019

  • Re-release of 3.3.0 after fixing the deployment pipeline (#716) – by @atugushev.

v3.3.0#

23 Jan 2019

(Unreleased - Deployment pipeline issue, see 3.3.1)

Features#

  • Added support of pip 19.0 (#715) – by @atugushev.

  • Add --allow-unsafe to update instructions in the generated requirements.txt (#708) – by @richafrank.

Bug Fixes#

v3.2.0#

18 Dec 2018

Features#

  • Apply version constraints specified with package upgrade option (-P, --upgrade-package) (#694) – by @richafrank.

v3.1.0#

05 Oct 2018

Features#

v3.0.0#

24 Sep 2018

Major Changes#

Features#

  • Removed the dependency on the external library first (#676) – by @jdufresne.

v2.0.2#

28 Apr 2018

Bug Fixes#

  • Added clearer error reporting when skipping pre-releases (#655) – by @WoLpH.

v2.0.1#

15 Apr 2018

Bug Fixes#

  • Added missing package data from vendored pip, such as missing cacert.pem file – by @vphilippon.

v2.0.0#

15 Apr 2018

Major Changes#

  • Vendored pip 9.0.3 to keep compatibility for users with pip 10.0.0 (#644) – by @vphilippon.

Features#

  • Improved the speed of pip-compile --generate-hashes by caching the hashes from an existing output file (#641) – by @justicz.

  • Added a pip-sync --user option to restrict attention to user-local directory (#642) – by @jbergknoff-10e.

  • Removed the hard dependency on setuptools (#645) – by @vphilippon.

Bug Fixes#

  • The pip environment markers on top-level requirements in the source file (requirements.in) are now properly handled and will only be processed in the right environment (#647) – by @JoergRittinger.

v1.11.0#

30 Nov 2017

Features#

  • Allow editable packages in requirements.in with pip-compile --generate-hashes (#524) – by @jdufresne.

  • Allow for CA bundles with pip-compile --cert (#612) – by @khwilson.

  • Improved pip-compile duration with large locally available editable requirement by skipping a copy to the cache (#583) – by @costypetrisor.

  • Slightly improved the NoCandidateFound error message on potential causes (#614) – by @vphilippon.

Bug Fixes#

  • Add -markerlib to the list of PACKAGES_TO_IGNORE of pip-sync (#613).

v1.10.2#

22 Nov 2017

Bug Fixes#

  • Fixed bug causing dependencies from invalid wheels for the current platform to be included (#571).

  • pip-sync will respect environment markers in the requirements.txt (#600) – by @hazmat345.

  • Converted the ReadMe to have a nice description rendering on PyPI – by @bittner.

v1.10.1#

27 Sep 2017

Bug Fixes#

  • Fixed bug breaking pip-sync on Python 3, raising TypeError: '<' not supported between instances of 'InstallRequirement' and 'InstallRequirement' (#570).

v1.10.0#

27 Sep 2017

Features#

  • --generate-hashes now generates hashes for all wheels, not only wheels for the currently running platform (#520) – by @jdufresne.

  • Added a -q/--quiet argument to the pip-sync command to reduce log output.

Bug Fixes#

  • Fixed bug where unsafe packages would get pinned in generated requirements files when --allow-unsafe was not set (#517) – by @dschaller.

  • Fixed bug where editable PyPI dependencies would have a download_dir and be exposed to git-checkout-index, (thus losing their VCS directory) and python setup.py egg_info fails (#385) and #538) – by @blueyed and @dfee.

  • Fixed bug where some primary dependencies were annotated with “via” info comments (#542) – by @quantus.

  • Fixed bug where pkg-resources would be removed by pip-sync in Ubuntu (#555) – by @cemsbr.

  • Fixed bug where the resolver would sometime not stabilize on requirements specifying extras (#566) – by @vphilippon.

  • Fixed an unicode encoding error when distribution package contains non-ASCII file names (#567) – by @suutari.

  • Fixed package hashing doing unnecessary unpacking (#557) – by @suutari-ai.

v1.9.0#

12 Apr 2017

Features#

  • Added ability to read requirements from setup.py instead of just requirements.in (#418) – by @tysonclugg and @majuscule.

  • Added a --max-rounds argument to the pip-compile command to allow for solving large requirement sets (#472) – by @derek-miller.

  • Exclude unsafe packages’ dependencies when --allow-unsafe is not in use (#441) – by @jdufresne.

  • Exclude irrelevant pip constraints (#471) – by @derek-miller.

  • Allow control over emitting trusted-host to the compiled requirements (#448) – by @tonyseek.

  • Allow running as a Python module (#461) – by @AndreLouisCaron.

  • Preserve environment markers in generated requirements.txt (#460) – by @barrywhart.

Bug Fixes#

  • Fixed the --upgrade-package option to respect the given package list to update (#491).

  • Fixed the default output file name when the source file has no extension (#488) – by @vphilippon.

  • Fixed crash on editable requirements introduced in 1.8.2.

  • Fixed duplicated --trusted-host, --extra-index-url and --index-url in the generated requirements.

v1.8.2#

28 Mar 2017

  • Regression fix: editable reqs were losing their dependencies after first round (#476) – by @mattlong.

  • Remove duplicate index urls in generated requirements.txt (#468) – by @majuscule.

v1.8.1#

22 Mar 2017

  • Recalculate secondary dependencies between rounds (#378)

  • Calculated dependencies could be left with wrong candidates when toplevel requirements happen to be also pinned in sub-dependencies (#450)

  • Fix duplicate entries that could happen in generated requirements.txt (#427)

  • Gracefully report invalid pip version (#457)

  • Fix capitalization in the generated requirements.txt, packages will always be lowercased (#452)

v1.8.0#

17 Nov 2016

  • Adds support for upgrading individual packages with a new option --upgrade-package. To upgrade a specific package to the latest or a specific version use --upgrade-package <pkg>. To upgrade all packages, you can still use pip-compile --upgrade. (#409)

  • Adds support for pinning dependencies even further by including the hashes found on PyPI at compilation time, which will be re-checked when dependencies are installed at installation time. This adds protection against packages that are tampered with. (#383)

  • Improve support for extras, like hypothesis[django]

  • Drop support for pip < 8

v1.7.1#

20 Oct 2016

  • Add --allow-unsafe option (#377)

v1.7.0#

06 Jul 2016

  • Add compatibility with pip >= 8.1.2 (#374) – by @jmbowman

v1.6.5#

11 May 2016

  • Add warning that pip >= 8.1.2 is not supported until 1.7.x is out

v1.6.4#

03 May 2016

  • Incorporate fix for atomic file saving behaviour on the Windows platform (see #351)

v1.6.3#

02 May 2016

  • PyPI won’t let me upload 1.6.2

v1.6.2#

02 May 2016

  • Respect pip configuration from pip.{ini,conf}

  • Fixes for atomic-saving of output files on Windows (see #351)

v1.6.1#

06 Apr 2016

Minor Changes#

  • pip-sync now supports being invoked from within and outside an activated virtualenv (see #317)

  • pip-compile: support -U as a shorthand for --upgrade

  • pip-compile: support pip’s --no-binary and --binary-only flags

Bug Fixes#

  • Change header format of output files to mention all input files

v1.6#

05 Feb 2016

Major Changes#

  • pip-compile will by default try to fulfill package specs by looking at a previously compiled output file first, before checking PyPI. This means pip-compile will only update the requirements.txt when it absolutely has to. To get the old behaviour (picking the latest version of all packages from PyPI), use the new --upgrade option.

Minor Changes#

  • Bugfix where pip-compile would lose “via” info when on pip 8 (see #313)

  • Ensure cache dir exists (see #315)

v1.5#

23 Jan 2016

  • Add support for pip >= 8

  • Drop support for pip < 7

  • Fix bug where pip-sync fails to uninstall packages if you’re using the --no-index (or other) flags

v1.4.5#

20 Jan 2016

  • Add --no-index flag to pip-compile to avoid emitting --index-url into the output (useful if you have configured a different index in your global ~/.pip/pip.conf, for example)

  • Fix: ignore stdlib backport packages, like argparse, when listing which packages will be installed/uninstalled (#286)

  • Fix pip-sync failed uninstalling packages when using --find-links (#298)

  • Explicitly error when pip-tools is used with pip 8.0+ (for now)

v1.4.4#

11 Jan 2016

  • Fix: unintended change in behaviour where packages installed by pip-sync could accidentally get upgraded under certain conditions, even though the requirements.txt would dictate otherwise (see #290)

v1.4.3#

06 Jan 2016

  • Fix: add --index-url and --extra-index-url options to pip-sync

  • Fix: always install using --upgrade flag when running pip-sync

v1.4.2#

13 Dec 2015

  • Fix bug where umask was ignored when writing requirement files (#268)

v1.4.1#

13 Dec 2015

  • Fix bug where successive invocations of pip-sync with editables kept uninstalling/installing them (fixes #270)

v1.4.0#

13 Dec 2015

  • Add command line option -f / --find-links

  • Add command line option --no-index

  • Add command line alias -n (for --dry-run)

  • Fix a unicode issue

v1.3.0#

08 Dec 2015

  • Support multiple requirement files to pip-compile

  • Support requirements from stdin for pip-compile

  • Support --output-file option on pip-compile, to redirect output to a file (or stdout)

v1.2.0#

30 Nov 2015

  • Add CHANGELOG :)

  • Support pip-sync’ing editable requirements

  • Support extras properly (i.e. package[foo] syntax)

(Anything before 1.2.0 was not recorded.)