Description
<!-- pyml disable-next-line first-line-heading --> [![jazzband-image]][jazzband] [![pypi][pypi-image]][pypi] [![pyversions][pyversions-image]][pyversions] [![pre-commit][pre-commit-image]][pre-commit] [![buildstatus-gha][buildstatus-gha-image]][buildstatus-gha] [![codecov][codecov-image]][codecov] [![Matrix Room Badge]][Matrix Room] [![Matrix Space Badge]][Matrix Space] [![discord-chat-image]][discord-chat] # pip-tools = pip-compile + pip-sync A set of command line tools to help you keep your `pip`-based packages fresh, even when you've pinned them. You do pin them, right? (In building your Python application and its dependencies for production, you want to make sure that your builds are predictable and deterministic.) [![pip-tools overview for phase II][pip-tools-overview]][pip-tools-overview] ## Installation Similar to `pip`, `pip-tools` must be installed in each of your project's [virtual environments](https://packaging.python.org/tutorials/installing-packages/#creating-virtual-environments): ```console $ source /path/to/venv/bin/activate (venv) $ python -m pip install pip-tools ``` **Note**: all of the remaining example commands assume you've activated your project's virtual environment. ## Example usage for `pip-compile` The `pip-compile` command lets you compile a `requirements.txt` file from your dependencies, specified in either `pyproject.toml`, `setup.cfg`, `setup.py`, or `requirements.in`. Run it with `pip-compile` or `python -m piptools compile` (or `pipx run --spec pip-tools pip-compile` if `pipx` was installed with the appropriate Python version). If you use multiple Python versions, you can also run `py -X.Y -m piptools compile` on Windows and `pythonX.Y -m piptools compile` on other systems. `pip-compile` should be run from the same virtual environment as your project so conditional dependencies that require a specific Python version, or other environment markers, resolve relative to your project's environment. **Note**: If `pip-compile` finds an existing `requirements.txt` file that fulfils the dependencies then no changes will be made, even if updates are available. To compile from scratch, first delete the existing `requirements.txt` file, or see [Updating requirements](#updating-requirements) for alternative approaches. ### Requirements from `pyproject.toml` The `pyproject.toml` file is the [latest standard](https://peps.python.org/pep-0621/) for configuring packages and applications, and is recommended for new projects. `pip-compile` supports both installing your `project.dependencies` as well as your `project.optional-dependencies`. Thanks to the fact that this is an official standard, you can use `pip-compile` to pin the dependencies in projects that use modern standards-adhering packaging tools like [Setuptools](https://setuptools.pypa.io), [Hatch](https://hatch.pypa.io/) or [flit](https://flit.pypa.io/). Suppose you have a 'foobar' Python application that is packaged using `Setuptools`, and you want to pin it for production. You can declare the project metadata as: ```toml [build-system] requires = ["setuptools", "setuptools-scm"] build-backend = "setuptools.build_meta" [project] requires-python = ">=3.9" name = "foobar" dynamic = ["dependencies", "optional-dependencies"] [tool.setuptools.dynamic] dependencies = { file = ["requirements.in"] } optional-dependencies.test = { file = ["requirements-test.txt"] } ``` If you have a Django application that is packaged using `Hatch`, and you want to pin it for production. You also want to pin your development tools in a separate pin file. You declare `django` as a dependency and create an optional dependency `dev` that includes `pytest`: ```toml [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "my-cool-django-app" version = "42" dependencies = ["django"] [project.optional-dependencies] dev = ["pytest"] ``` You can produce your pin files as easily as: ```console $ pip-compile -o requirements.txt pyproject.toml # # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # # pip-compile --output-file=requirements.txt pyproject.toml # asgiref==3.6.0 # via django django==4.1.7 # via my-cool-django-app (pyproject.toml) sqlparse==0.4.3 # via django $ pip-compile --extra dev -o dev-requirements.txt pyproject.toml # # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # # pip-compile --extra=dev --output-file=dev-requirements.txt pyproject.toml # asgiref==3.6.0 # via django attrs==22.2.0 # via pytest django==4.1.7 # via my-cool-django-app (pyproject.toml) exceptiongroup==1.1.1 # via pytest iniconfig==2.0.0 # via pytest packaging==23.0 # via pytest pluggy==1.0.0 # via pytest pytest==7.2.2 # via my-cool-django-app (pyproject.toml) sqlparse==0.4.3 # via django tomli==2.0.1 # via pytest ``` This is great for both pinning your applications, but also to keep the CI
Release History
| Version | Changes | Urgency | Date |
|---|---|---|---|
| 7.5.3 | Imported from PyPI (7.5.3) | Low | 4/21/2026 |
| v7.5.3 | *2026-02-11* ### Bug fixes - The option `--unsafe-package` is now normalized -- by @shifqu. *PRs and issues:* #2150 - Fixed a bug in which `pip-compile` lost any index URL options when looking up hashes -- by @sirosen. This caused errors when a package was only available from an extra index, and caused `pip-compile` to incorrectly drop index URL options from output, even when they were present in the input requirements. *PRs and issues:* #2220, #2294, #2305 - Fixed removal of | Low | 2/11/2026 |
| v7.5.2 | *2025-11-11* ### Bug fixes - Fixed `pip-compile` to handle relative path includes which are not subpaths of the current working directory -- by @sirosen. *PRs and issues:* #2231, #2260 - Using `--upgrade-package` and dynamically building project metadata no longer causes an `AttributeError` when 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 | Low | 11/12/2025 |
| v7.5.1 | *2025-09-26* ### Bug fixes - Fixed static parsing of `pyproject.toml` data when the `pyproject.toml` is supplied as a relative path -- by @sirosen. *PRs and issues:* #2215, #2221, #2233 - The "via" paths in `pip-compile` output for requirements discovered from `pyproject.toml` data are now written in POSIX format -- by @sirosen. *PRs and issues:* #2221 - Fixed a bug which removed slashes from URLs in ``-r`` and ``-c`` in the output of ``pip-compile`` -- by @sirosen. *P | Low | 10/2/2025 |
| v7.5.0 | *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. | Low | 7/30/2025 |
| 7.4.1 | Bug Fixes: - Skip constraint path check ([#2038](https://github.com/jazzband/pip-tools/pull/2038)). Thanks @honnix - Fix collecting deps for all extras in multiple input packages ([#1981](https://github.com/jazzband/pip-tools/pull/1981)). Thanks @dragly | Low | 3/6/2024 |
| 7.4.0 | Features: - Allow force-enabling or force-disabling colorized output ([#2041](https://github.com/jazzband/pip-tools/pull/2041)). Thanks @aneeshusa - Add support for command-specific configuration sections ([#1966](https://github.com/jazzband/pip-tools/pull/1966)). Thanks @chrysle - Add options for including build dependencies in compiled output ([#1681](https://github.com/jazzband/pip-tools/pull/1681)). Thanks @apljungquist Bug Fixes: - Fix for `src-files` not being used when specifie | Low | 2/16/2024 |
| 7.3.0 | Features: - Add `--no-strip-extras` and warn about strip extras by default ([#1954](https://github.com/jazzband/pip-tools/pull/1954)). Thanks @ryanhiebert Bug Fixes: - Fix revealed default config in header if requirements in subfolder ([#1904](https://github.com/jazzband/pip-tools/pull/1904)). Thanks @atugushev - Direct references show extra requirements in .txt files ([#1582](https://github.com/jazzband/pip-tools/pull/1582)). Thanks @FlorentJeannot Other Changes: - Document how | Low | 8/8/2023 |
| 7.2.0 | Features: - Add `-c/--constraint` option to `pip-compile` ([#1936](https://github.com/jazzband/pip-tools/pull/1936)). Thanks @atugushev Bug Fixes: - Allow options in config from both `pip-compile` and `pip-sync` ([#1933](https://github.com/jazzband/pip-tools/pull/1933)). Thanks @atugushev - Fix rejection of negating CLI boolean flags in config ([#1913](https://github.com/jazzband/pip-tools/pull/1913)). Thanks @chrysle Other Changes: - Add Command Line Reference section to docs ([ | Low | 8/2/2023 |
| 7.1.0 | Features: - Validate parsed config against CLI options ([#1910](https://github.com/jazzband/pip-tools/pull/1910)). Thanks @atugushev Bug Fixes: - Fix a bug where pip-sync would unexpectedly uninstall some packages ([#1919](https://github.com/jazzband/pip-tools/pull/1919)). Thanks @atugushev | Low | 7/19/2023 |
| 7.0.0 | Backwards Incompatible Changes: - Default to `--resolver=backtracking` ([#1897](https://github.com/jazzband/pip-tools/pull/1897)). Thanks @atugushev - Drop support for Python 3.7 ([#1879](https://github.com/jazzband/pip-tools/pull/1879)). Thanks @chrysle Features: - Add support for `pip==23.2` where refactored out `DEV_PKGS` ([#1906](https://github.com/jazzband/pip-tools/pull/1906)). Thanks @atugushev - Add `--no-config` option ([#1896](https://github.com/jazzband/pip-tools/pull/1896) | Low | 7/14/2023 |
| 6.14.0 | Features: - Support config defaults using `.pip-tools.toml` or `pyproject.toml` ([#1863](https://github.com/jazzband/pip-tools/pull/1863)). Thanks @j00bar - Log a warning if the user specifies `-P` and the output file is present but empty ([#1822](https://github.com/jazzband/pip-tools/pull/1822)). Thanks @davidmreed - Improve warning for `pip-compile` if no `--allow-unsafe` was passed ([#1867](https://github.com/jazzband/pip-tools/pull/1867)). Thanks @chrysle Other Changes: - Correct | Low | 7/1/2023 |
| 6.13.0 | Features: - Add support for self-referential extras ([#1791](https://github.com/jazzband/pip-tools/pull/1791)). Thanks @q0w - Add support for `pip==23.1` where removed `FormatControl` in `WheelCache` ([#1834](https://github.com/jazzband/pip-tools/pull/1834)). Thanks @atugushev - Add support for `pip==23.1` where refactored requirement options ([#1832](https://github.com/jazzband/pip-tools/pull/1832)). Thanks @atugushev - Add support for `pip==23.1` where deprecated `--install-option` has b | Low | 4/7/2023 |
| 6.12.3 | Bug Fixes: - Remove extras from user-supplied constraints in backtracking resolver ([#1808](https://github.com/jazzband/pip-tools/pull/1808)). Thanks @thomdixon - Fix for sync error when the ireqs being merged have no names ([#1802](https://github.com/jazzband/pip-tools/pull/1802)). Thanks @richafrank | Low | 3/1/2023 |
| 6.12.2 | Bug Fixes: - Raise error if input and output filenames are matched ([#1787](https://github.com/jazzband/pip-tools/pull/1787)). Thanks @atugushev - Add `pyproject.toml` as default input file format ([#1780](https://github.com/jazzband/pip-tools/pull/1780)). Thanks @berislavlopac - Fix a regression with unsafe packages for `--allow-unsafe` ([#1788](https://github.com/jazzband/pip-tools/pull/1788)). Thanks @q0w | Low | 1/31/2023 |
| 6.12.1 | Bug Fixes: - Set explicitly packages for setuptools ([#1782](https://github.com/jazzband/pip-tools/pull/1782)). Thanks @q0w | Low | 12/17/2022 |
| 6.12.0 | Features: - Add `--no-index` flag to `pip-compile` ([#1745](https://github.com/jazzband/pip-tools/pull/1745)). Thanks @atugushev Bug Fixes: - Treat `--upgrade-packages` PKGSPECs as constraints (not just minimums), consistently ([#1578](https://github.com/jazzband/pip-tools/pull/1578)). Thanks @AndydeCleyre - Filter out the user provided unsafe packages ([#1766](https://github.com/jazzband/pip-tools/pull/1766)). Thanks @q0w - Adopt PEP-621 for packaging ([#1763](https://github.com/jazz | Low | 12/14/2022 |
| 6.11.0 | Features: - Add `pyproject.toml` file ([#1643](https://github.com/jazzband/pip-tools/pull/1643)). Thanks @otherJL0 - Support build isolation using `setuptools/pyproject.toml` requirement files ([#1727](https://github.com/jazzband/pip-tools/pull/1727)). Thanks @atugushev Bug Fixes: - Improve punctuation/grammar with `pip-compile` header ([#1547](https://github.com/jazzband/pip-tools/pull/1547)). Thanks @blueyed - Generate hashes for all available candidates ([#1723](https://github.com/ | Low | 12/1/2022 |
| 6.10.0 | Features: - Deprecate `pip-compile --resolver=legacy` ([#1724](https://github.com/jazzband/pip-tools/pull/1724)). Thanks @atugushev - Prompt user to use the backtracking resolver on errors ([#1719](https://github.com/jazzband/pip-tools/pull/1719)). Thanks @maxfenv - Add support for Python 3.11 final ([#1708](https://github.com/jazzband/pip-tools/pull/1708)). Thanks @hugovk - Add `--newline=[LF|CRLF|native|preserve]` option to `pip-compile` ([#1652](https://github.com/jazzband/pip-tools/pul | Low | 11/14/2022 |
| 6.9.0 | Features: - Add `--all-extras` flag to `pip-compile` ([#1630](https://github.com/jazzband/pip-tools/pull/1630)). Thanks @apljungquist - Support Exclude Package with custom unsafe packages ([#1509](https://github.com/jazzband/pip-tools/pull/1509)). Thanks @hmc-cs-mdrissi Bug Fixes: - Fix compile cached vcs packages ([#1649](https://github.com/jazzband/pip-tools/pull/1649)). Thanks @atugushev - Include `py.typed` in wheel file ([#1648](https://github.com/jazzband/pip-tools/pull/1648)). | Low | 10/5/2022 |
| 6.8.0 | Features: - Add support for pip's 2020 dependency resolver. Use `pip-compile --resolver backtracking` to enable new resolver ([#1539](https://github.com/jazzband/pip-tools/pull/1539)). Thanks @atugushev | Low | 6/30/2022 |
| 6.7.0 | Features: - Support for the `importlib.metadata` metadata implementation ([#1632](https://github.com/jazzband/pip-tools/pull/1632)). Thanks @richafrank Bug Fixes: - Instantiate a new accumulator `InstallRequirement` for `combine_install_requirements` output ([#1519](https://github.com/jazzband/pip-tools/pull/1519)). Thanks @richafrank Other Changes: - Replace direct usage of the `pep517` module with the `build` module, for loading project metadata ([#1629](https://github.com/jazzb | Low | 6/28/2022 |
| 6.6.2 | Bug Fixes: - Update `PyPIRepository::resolve_reqs()` for pip>=22.1.1 ([#1624](https://github.com/jazzband/pip-tools/pull/1624)). Thanks @m000 | Low | 5/23/2022 |
| 6.6.1 | Bug Fixes: - Fix support for pip>=22.1 ([#1618](https://github.com/jazzband/pip-tools/pull/1618)). Thanks @wizpig64 | Low | 5/13/2022 |
| 6.6.0 | Features: - Add support for pip>=22.1 ([#1607](https://github.com/jazzband/pip-tools/pull/1607)). Thanks @atugushev Bug Fixes: - Ensure `pip-compile --dry-run --quiet` still shows what would be done, while omitting the dry run message ([#1592](https://github.com/jazzband/pip-tools/pull/1592)). Thanks @AndydeCleyre - Fix `--generate-hashes` when hashes are computed from files ([#1540](https://github.com/jazzband/pip-tools/pull/1540)). Thanks @RazerM | Low | 4/6/2022 |
| 6.5.1 | Bug Fixes: - Ensure canonicalized requirement names are used as keys, to prevent unnecessary reinstallations during sync ([#1572](https://github.com/jazzband/pip-tools/pull/1572)). Thanks @AndydeCleyre | Low | 2/8/2022 |
| 6.5.0 | Features: - Add support for pip>=22.0, drop support for Python 3.6 ([#1567](https://github.com/jazzband/pip-tools/pull/1567)). Thanks @di - Test on Python 3.11 ([#1527](https://github.com/jazzband/pip-tools/pull/1527)). Thanks @hugovk Other Changes: - Minor doc edits ([#1445](https://github.com/jazzband/pip-tools/pull/1445)). Thanks @ssiano | Low | 2/4/2022 |
| 6.4.0 | Features: - Add support for `pip>=21.3` ([#1501](https://github.com/jazzband/pip-tools/pull/1501)). Thanks @atugushev - Add support for Python 3.10 ([#1497](https://github.com/jazzband/pip-tools/pull/1497)). Thanks @joshuadavidthomas Other Changes: - Bump pip minimum version to `>= 21.2` ([#1500](https://github.com/jazzband/pip-tools/pull/1500)). Thanks @atugushev | Low | 10/12/2021 |
| 6.3.1 | Bug Fixes: - Ensure `pip-tools` unions dependencies of multiple declarations of a package with different extras ([#1486](https://github.com/jazzband/pip-tools/pull/1486)). Thanks @richafrank - Allow comma-separated arguments for `--extra` ([#1493](https://github.com/jazzband/pip-tools/pull/1493)). Thanks @AndydeCleyre - Improve clarity of help text for options supporting multiple ([#1492](https://github.com/jazzband/pip-tools/pull/1492)). Thanks @AndydeCleyre | Low | 10/8/2021 |
| 6.3.0 | Features: - Enable single-line annotations with `pip-compile --annotation-style=line` ([#1477](https://github.com/jazzband/pip-tools/pull/1477)). Thanks @AndydeCleyre - Generate PEP 440 direct reference whenever possible ([#1455](https://github.com/jazzband/pip-tools/pull/1455)). Thanks @FlorentJeannot - PEP 440 Direct Reference support ([#1392](https://github.com/jazzband/pip-tools/pull/1392)). Thanks @FlorentJeannot Bug Fixes: - Change log level of hash message ([#1460](https://gith | Low | 9/21/2021 |
| 6.2.0 | Features: - Add `--emit-options/--no-emit-options` flags to `pip-compile` ([#1123](https://github.com/jazzband/pip-tools/pull/1123)). Thanks @atugushev - Add `--python-executable` option for `pip-sync` ([#1333](https://github.com/jazzband/pip-tools/pull/1333)). Thanks @MaratFM - Log which python version was used during compile ([#828](https://github.com/jazzband/pip-tools/pull/828)). Thanks @graingert Bug Fixes: - Fix `pip-compile` package ordering ([#1419](https://github.com/jazzband | Low | 6/22/2021 |
| 6.1.0 | Features: - Add support for `pyproject.toml` or `setup.cfg` as input dependency file (PEP-517) for `pip-compile` ([#1356](https://github.com/jazzband/pip-tools/pull/1356)). Thanks @orsinium - Add `pip-compile --extra` option to specify `extras_require` dependencies ([#1363](https://github.com/jazzband/pip-tools/pull/1363)). Thanks @orsinium Bug Fixes: - Restore ability to set compile cache with env var `PIP_TOOLS_CACHE_DIR` ([#1368](https://github.com/jazzband/pip-tools/pull/1368)). Th | Low | 4/14/2021 |
| 6.0.1 | Bug Fixes: - Fixed a bug with undeclared dependency on `importlib-metadata` at Python 3.6 ([#1353](https://github.com/jazzband/pip-tools/pull/1353)). Thanks @atugushev Dependencies: - Add `pep517` dependency ([#1353](https://github.com/jazzband/pip-tools/pull/1353)). Thanks @atugushev | Low | 3/15/2021 |
| 6.0.0 | Backwards Incompatible Changes: - Remove support for EOL Python 3.5 and 2.7 ([#1243](https://github.com/jazzband/pip-tools/pull/1243)). Thanks @jdufresne - Remove deprecated `--index/--no-index` option from `pip-compile` ([#1234](https://github.com/jazzband/pip-tools/pull/1234)). Thanks @jdufresne Features: - Use `pep517` to parse dependencies metadata from `setup.py` ([#1311](https://github.com/jazzband/pip-tools/pull/1311)). Thanks @astrojuanlu Bug Fixes: - Fix a bug where `pip | Low | 3/13/2021 |
| 5.5.0 | Features: - Add Python 3.9 support ([1222](https://github.com/jazzband/pip-tools/pull/1222)). Thanks @jdufresne - Improve formatting of long "via" annotations ([1237](https://github.com/jazzband/pip-tools/pull/1237)). Thanks @jdufresne - Add `--verbose` and `--quiet` options to `pip-sync` ([1241](https://github.com/jazzband/pip-tools/pull/1241)). Thanks @jdufresne - Add `--no-allow-unsafe` option to `pip-compile` ([1265](https://github.com/jazzband/pip-tools/pull/1265)). Thanks @jdufresne | Low | 12/30/2020 |
| 5.4.0 | Features: - Add `pip>=20.3` support ([1216](https://github.com/jazzband/pip-tools/pull/1216)). Thanks @atugushev and @AndydeCleyre - Exclude `--no-reuse-hashes` option from Β«command to runΒ» header ([1197](https://github.com/jazzband/pip-tools/pull/1197)). Thanks @graingert Dependencies: - Bump `pip` minimum version to `>= 20.1` ([1191](https://github.com/jazzband/pip-tools/pull/1191)). Thanks @atugushev and @AndydeCleyre | Low | 11/21/2020 |
| 5.3.1 | Bug Fixes: - Fix `pip-20.2` compatibility issue that caused `pip-tools` to sometime fail to stabilize in a constant number of rounds ([1194](https://github.com/jazzband/pip-tools/pull/1194)). Thanks @vphilippon | Low | 7/31/2020 |
| 5.3.0 | Features: - Add `-h` alias for `--help` option to `pip-sync` and `pip-compile` ([1163](https://github.com/jazzband/pip-tools/pull/1163)). Thanks @jan25 - Add `pip>=20.2` support ([1168](https://github.com/jazzband/pip-tools/pull/1168)). Thanks @atugushev - `pip-sync` now exists with code `1` on `--dry-run` ([1172](https://github.com/jazzband/pip-tools/pull/1172)). Thanks @francisbrito - `pip-compile` now doesn't resolve constraints from `-c constraints.txt`that are not (yet) requirements ([1 | Low | 7/26/2020 |
| 5.2.1 | Bug Fixes: - Fix a bug where `pip-compile` would lose some dependencies on update a `requirements.txt` ([1159](https://github.com/jazzband/pip-tools/pull/1159)). Thanks @richafrank | Low | 6/9/2020 |
| 5.2.0 | Features: - Show basename of URLs when `pip-compile` generates hashes in a verbose mode ([1113](https://github.com/jazzband/pip-tools/pull/1113)). Thanks @atugushev - Add `--emit-index-url/--no-emit-index-url` options to `pip-compile` ([1130](https://github.com/jazzband/pip-tools/pull/1130)). Thanks @atugushev Bug Fixes: - Fix a bug where `pip-compile` would ignore some of package versions when `PIP_PREFER_BINARY` is set on ([1119](https://github.com/jazzband/pip-tools/pull/1119)). Thanks | Low | 5/27/2020 |
| 5.1.2 | Bug Fixes: - Fix grouping of editables and non-editables requirements ([1132](https://github.com/jazzband/pip-tools/pull/1132)). Thanks @richafrank | Low | 5/5/2020 |
| 5.1.1 | Bug Fixes: - Fix a bug where `pip-compile` would generate hashes for `*.egg` files ([#1122](https://github.com/jazzband/pip-tools/pull/1122)). Thanks @atugushev | Low | 5/1/2020 |
| 5.1.0 | Features: - Show progress bar when downloading packages in `pip-compile` verbose mode ([#949](https://github.com/jazzband/pip-tools/pull/949)). Thanks @atugushev - `pip-compile` now gets hashes from `PyPI` JSON API (if available) which significantly increases the speed of hashes generation ([#1109](https://github.com/jazzband/pip-tools/pull/1109)). Thanks @atugushev | Low | 4/27/2020 |
| 5.0.0 | Backwards Incompatible Changes: - `pip-tools` now requires `pip>=20.0` (previosly `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](https://github.com/jazzband/pip-tools/pull/1055)). Thanks @atugushev - `--build-isolation` option now set on by default for `pip-compile` ([#1060](https://github.com/jazzband/pip-tools/pull/1060)). Thanks @hramezani Features: - Exclude requirements with non-matchin | Low | 4/16/2020 |
| 4.5.1 | Bug Fixes: - Strip line number annotations such as "(line XX)" from file requirements, to prevent diff noise when modifying input requirement files ([#1075](https://github.com/jazzband/pip-tools/pull/1075)). Thanks @adamchainz Improved Documentation: - Updated `README` example outputs for primary requirement annotations ([#1072](https://github.com/jazzband/pip-tools/pull/1072)). Thanks @richafrank | Low | 2/26/2020 |
| 4.5.0 | # 4.5.0 (2020-02-20) Features: - Primary requirements and VCS dependencies are now get annotated with any source `.in` files and reverse dependencies ([#1058](https://github.com/jazzband/pip-tools/pull/1058)). Thanks @AndydeCleyre Bug Fixes: - Always use normalized path for cache directory as it is required in newer versions of `pip` ([#1062](https://github.com/jazzband/pip-tools/pull/1062)). Thanks @kammala Improved Documentation: - Replace outdated link in the `README` with rationa | Low | 2/20/2020 |
| 4.4.1 | Bug Fixes: - Fix a bug where `pip-compile` would keep outdated options from `requirements.txt` ([#1029](https://github.com/jazzband/pip-tools/pull/1029)). Thanks @atugushev - Fix the `No handlers could be found for logger "pip.*"` error by configuring the builtin logging module ([#1035](https://github.com/jazzband/pip-tools/pull/1035)). Thanks @vphilippon - Fix a bug where dependencies of relevant constraints may be missing from output file ([#1037](https://github.com/jazzband/pip-tools/pull/ | Low | 1/31/2020 |
| 4.4.0 | Features: - Add `--cache-dir` option to `pip-compile` ([#1022](https://github.com/jazzband/pip-tools/pull/1022)). Thanks @richafrank - Add `pip>=20.0` support ([#1024](https://github.com/jazzband/pip-tools/pull/1024)). Thanks @atugushev 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](https://github.com/jazzband/pip-tools/pull/1031)). Thanks @AndydeCleyre | Low | 1/21/2020 |
| 4.3.0 | Features: - Add Python 3.8 support ([#956](https://github.com/jazzband/pip-tools/pull/956)). Thanks @hramezani - Unpin commented out unsafe packages in `requirements.txt` ([#975](https://github.com/jazzband/pip-tools/pull/975)). Thanks @atugushev Bug Fixes: - Fix `pip-compile` doesn't copy `--trusted-host` from `requirements.in` to `requirements.txt` ([#964](https://github.com/jazzband/pip-tools/pull/964)). Thanks @atugushev - Add compatibility with `pip>=20.0` ([#953](https://github.com | Low | 11/26/2019 |
| 4.2.0 | Features: - Add `--ask` option to `pip-sync` ([#913](https://github.com/jazzband/pip-tools/pull/913)). Thanks @georgek Bug Fixes: - Add compatibility with `pip>=19.3` ([#864](https://github.com/jazzband/pip-tools/pull/864), [#904](https://github.com/jazzband/pip-tools/pull/904), [#910](https://github.com/jazzband/pip-tools/pull/910), [#912](https://github.com/jazzband/pip-tools/pull/912) and [#915](https://github.com/jazzband/pip-tools/pull/915)). Thanks @atugushev - Ensure `pip-compile -- | Low | 10/11/2019 |
| 4.1.0 | # 4.1.0 (2019-08-26) Features: - Add `--no-emit-find-links` option to `pip-compile` ([#873](https://github.com/jazzband/pip-tools/pull/873)). Thanks @jacobtolar Bug Fixes: - Prevent `--dry-run` log message from being printed with `--quiet` option in `pip-compile` ([#861](https://github.com/jazzband/pip-tools/pull/861)). Thanks @ddormer - Fix resolution of requirements from Git URLs without `-e` ([#879](https://github.com/jazzband/pip-tools/pull/879)). Thanks @andersk | Low | 8/26/2019 |
