From 0772a5bbaffb18446491adb18d2a5f74e657b88e Mon Sep 17 00:00:00 2001 From: Oz Tiram Date: Sat, 19 Nov 2022 20:25:58 +0100 Subject: [PATCH] resolver: fix for usage of vistir modules Vistir removed echo and TemporaryDirectory, so these changes are needed to fix the code. --- pipenv/utils/resolver.py | 19 +++++++++++++++---- pipenv/vendor/vistir/__init__.py | 1 - 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/pipenv/utils/resolver.py b/pipenv/utils/resolver.py index ff38fb79..71e1d151 100644 --- a/pipenv/utils/resolver.py +++ b/pipenv/utils/resolver.py @@ -32,7 +32,7 @@ from pipenv.vendor import click from pipenv.vendor.requirementslib import Requirement from pipenv.vendor.requirementslib.models.requirements import Line from pipenv.vendor.requirementslib.models.utils import DIRECT_URL_RE -from pipenv.vendor.vistir import TemporaryDirectory, open_file +from pipenv.vendor.vistir import open_file from pipenv.vendor.vistir.path import create_tracked_tempdir try: @@ -63,6 +63,16 @@ console = rich.console.Console() err = rich.console.Console(stderr=True) +class FakePipTempDirdirectory: + """A fake pip temp directory that is only used to pass path. + + We add this because we can't monkeypatch a string instance. + """ + + def __init__(self, path): + self.path = path + + def get_package_finder( install_cmd=None, options=None, @@ -650,15 +660,16 @@ class Resolver: @contextlib.contextmanager def get_resolver(self, clear=False): + from tempfile import TemporaryDirectory + with global_tempdir_manager(), get_build_tracker() as build_tracker, TemporaryDirectory( suffix="-build", prefix="pipenv-" ) as directory: pip_options = self.pip_options finder = self.finder wheel_cache = WheelCache(pip_options.cache_dir, pip_options.format_control) - directory.path = directory.name preparer = self.pip_command.make_requirement_preparer( - temp_build_dir=directory, + temp_build_dir=FakePipTempDirdirectory(path=directory), options=pip_options, build_tracker=build_tracker, session=self.session, @@ -915,7 +926,7 @@ def actually_resolve_deps( def resolve(cmd, st, project): from pipenv._compat import decode_output from pipenv.cmdparse import Script - from pipenv.vendor.vistir.misc import echo + from pipenv.vendor.click import echo c = subprocess_run(Script.parse(cmd).cmd_args, block=False, env=os.environ.copy()) is_verbose = project.s.is_verbose() diff --git a/pipenv/vendor/vistir/__init__.py b/pipenv/vendor/vistir/__init__.py index a584da36..d54c0a9d 100644 --- a/pipenv/vendor/vistir/__init__.py +++ b/pipenv/vendor/vistir/__init__.py @@ -1,5 +1,4 @@ # -*- coding=utf-8 -*- - from .contextmanagers import ( atomic_open_for_write, cd,