diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fca3d39f8..2b85d7651 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,7 +33,9 @@ jobs: - os: Ubuntu python-version: 3.11-dev pip-version: latest - + - os: Ubuntu + python-version: 3.7 + pip-version: main env: PY_COLORS: 1 TOXENV: pip${{ matrix.pip-version }}-coverage diff --git a/piptools/_compat/pip_compat.py b/piptools/_compat/pip_compat.py index e2ab6ce44..7fea2b8f4 100644 --- a/piptools/_compat/pip_compat.py +++ b/piptools/_compat/pip_compat.py @@ -12,6 +12,12 @@ PIP_VERSION = tuple(map(int, parse_version(pip.__version__).base_version.split("."))) +__all__ = [ + "get_build_tracker", + "update_env_context_manager", +] + + def parse_requirements( filename: str, session: PipSession, @@ -24,3 +30,15 @@ def parse_requirements( filename, session, finder=finder, options=options, constraint=constraint ): yield install_req_from_parsed_requirement(parsed_req, isolated=isolated) + + +if PIP_VERSION[:2] <= (22, 0): + from pip._internal.req.req_tracker import ( + get_requirement_tracker as get_build_tracker, + ) + from pip._internal.req.req_tracker import update_env_context_manager +else: + from pip._internal.operations.build.build_tracker import ( + get_build_tracker, + update_env_context_manager, + ) diff --git a/piptools/repositories/pypi.py b/piptools/repositories/pypi.py index ffaad4187..7ec300c7a 100644 --- a/piptools/repositories/pypi.py +++ b/piptools/repositories/pypi.py @@ -30,7 +30,6 @@ from pip._internal.models.wheel import Wheel from pip._internal.network.session import PipSession from pip._internal.req import InstallRequirement, RequirementSet -from pip._internal.req.req_tracker import get_requirement_tracker from pip._internal.utils.hashes import FAVORITE_HASH from pip._internal.utils.logging import indent_log, setup_logging from pip._internal.utils.misc import normalize_path @@ -41,6 +40,7 @@ from pip._vendor.requests import RequestException, Session from .._compat import PIP_VERSION +from .._compat.pip_compat import get_build_tracker from ..exceptions import NoCandidateFound from ..logging import log from ..utils import ( @@ -169,18 +169,23 @@ def resolve_reqs( ireq: InstallRequirement, wheel_cache: WheelCache, ) -> Set[InstallationCandidate]: - with get_requirement_tracker() as req_tracker, TempDirectory( + with get_build_tracker() as build_tracker, TempDirectory( kind="resolver" ) as temp_dir, indent_log(): preparer_kwargs = { "temp_build_dir": temp_dir, "options": self.options, - "req_tracker": req_tracker, "session": self.session, "finder": self.finder, "use_user_site": False, "download_dir": download_dir, } + + if PIP_VERSION[:2] <= (22, 0): + preparer_kwargs["req_tracker"] = build_tracker + else: + preparer_kwargs["build_tracker"] = build_tracker + preparer = self.command.make_requirement_preparer(**preparer_kwargs) reqset = RequirementSet() diff --git a/piptools/resolver.py b/piptools/resolver.py index 7bd3a5478..d76a8b010 100644 --- a/piptools/resolver.py +++ b/piptools/resolver.py @@ -6,11 +6,11 @@ import click from pip._internal.req import InstallRequirement from pip._internal.req.constructors import install_req_from_line -from pip._internal.req.req_tracker import update_env_context_manager from piptools.cache import DependencyCache from piptools.repositories.base import BaseRepository +from ._compat.pip_compat import update_env_context_manager from .logging import log from .utils import ( UNSAFE_PACKAGES,