From ef682bd58fb0e1e3e1484b6833b999f1f2859a8d Mon Sep 17 00:00:00 2001 From: Dan Ryan Date: Fri, 15 Feb 2019 02:04:16 -0500 Subject: [PATCH] Fix tuple bug in resolver Signed-off-by: Dan Ryan --- pipenv/core.py | 8 +--- pipenv/utils.py | 45 +------------------ .../requirementslib/models/requirements.py | 4 +- .../requirementslib/models/setup_info.py | 5 +-- tests/unit/test_utils.py | 2 +- 5 files changed, 7 insertions(+), 57 deletions(-) diff --git a/pipenv/core.py b/pipenv/core.py index dab8a15b..a579ff9f 100644 --- a/pipenv/core.py +++ b/pipenv/core.py @@ -693,7 +693,7 @@ def batch_install(deps_list, procs, failed_deps_queue, if dep.req.req: dep.req.req = strip_extras_markers_from_requirement(dep.req.req) if dep.markers: - dep.markers = strip_extras_markers_from_requirement(dep.get_markers()) + dep.markers = str(strip_extras_markers_from_requirement(dep.get_markers())) index = None if dep.index: index = project.find_source(dep.index) @@ -731,7 +731,6 @@ def batch_install(deps_list, procs, failed_deps_queue, is_wheel = False if link: is_wheel = link.is_wheel - is_non_editable_vcs = (dep.is_vcs and not dep.editable) needs_deps = dep.is_file_or_url and not (is_wheel or dep.editable) c = pip_install( dep, @@ -1366,13 +1365,8 @@ def pip_install( if "PIP_SRC" in os.environ: src_dir = os.environ["PIP_SRC"] src = ["--src", os.environ["PIP_SRC"]] - # else: - # src_dir = "{0}".format(project.virtualenv_src_location) - # os.environ["PIP_SRC"] = project.virtualenv_src_location if not requirement.editable: no_deps = False - # if not requirement.req.is_local: - # src_dir = vistir.path.create_tracked_tempdir(prefix="pipenv-build-dir") if src_dir is not None: repo = requirement.req.get_vcs_repo(src_dir=src_dir) diff --git a/pipenv/utils.py b/pipenv/utils.py index 07db6ea7..1d5a2346 100644 --- a/pipenv/utils.py +++ b/pipenv/utils.py @@ -372,7 +372,7 @@ class Resolver(object): if not r.url: continue line = r.url - new_req = cls.parse_line(line) + new_req, _, _ = cls.parse_line(line) new_constraints, new_lock = cls.get_deps_from_req(new_req) locked_deps.update(new_lock) constraints |= new_constraints @@ -958,8 +958,6 @@ def resolve_deps( if not os.environ.get("PIP_SRC"): os.environ["PIP_SRC"] = project.virtualenv_src_location backup_python_path = sys.executable - # os.environ["PIP_NO_BUILD_ISOLATION"] = "1" - # os.environ["PIP_NO_USE_PEP517"] = "1" results = [] if not deps: return results @@ -1490,7 +1488,6 @@ def get_vcs_deps( reqs=None ): from .vendor.requirementslib.models.requirements import Requirement - from .vendor import attr section = "vcs_dev_packages" if dev else "vcs_packages" if reqs is None: @@ -1508,7 +1505,6 @@ def get_vcs_deps( return [], [] reqs = [Requirement.from_pipfile(name, entry) for name, entry in packages.items()] result = [] - updated_reqs = [] for requirement in reqs: name = requirement.normalized_name commit_hash = None @@ -1523,51 +1519,12 @@ def get_vcs_deps( version = requirement._specifiers = "=={0}".format(requirement.req.setup_info.version) lockfile[name] = requirement.pipfile_entry[1] lockfile[name]['ref'] = commit_hash - # new_req = Requirement.from_line(repo.checkout_directory) - # si = new_req.req.setup_info - # hookcaller = pep517.wrappers.Pep517HookCaller(new_req.req.setup_info.base_dir, new_req.req.setup_info.build_backend) - # deps = hookcaller.get_requires_for_build_wheel() + hookcaller.get_requires_for_build_sdist() - # hookcaller.prepare_metadata_for_build_wheel(new_req.req.setup_info.egg_base) - # r._specifiers = new_req.specifiers - # pkging_req = r.req.req - # pkging_req.specifier = new_req.req.req.specifier - # pkging_req.spec = new_req.req.req.spec - # new_parsed_line = r.req._parsed_line - # new_parsed_line._setup_info = new_req.req.parsed_line.setup_info - # new_parsed_line.specifiers = new_req.req.parsed_line.specifiers - # new_parsed_line._requirement = pkging_req - # new_parsed_line.ireq.req = pkging_req - # req = attr.evolve( - # r.req, - # setup_info=new_req.req.setup_info, - # parsed_line=new_parsed_line - # ) - # r = attr.evolve( - # r, - # req=req, - # line_instance=new_parsed_line - # ) result.append(requirement) version = requirement.specifiers if not version and requirement.specifiers: version = requirement.specifiers if version: lockfile[name]['version'] = version - # new_req = Requirement.from_line(repo.checkout_directory) - # requirement._specifiers = new_req.specifiers - # new_parsed_line = requirement.req._parsed_line - # new_parsed_line._setup_info = new_req.req.parsed_line.setup_info - # new_parsed_line.specifiers = new_req.req.parsed_line.specifiers - # req = attr.evolve( - # requirement.req, - # _setup_info=new_req.req.setup_info, - # _parsed_line=new_parsed_line - # ) - # requirement = attr.evolve( - # requirement, - # req=req, - # line_instance=new_parsed_line - # ) except OSError: continue return result, lockfile diff --git a/pipenv/vendor/requirementslib/models/requirements.py b/pipenv/vendor/requirementslib/models/requirements.py index 3f0a1cc3..70280dea 100644 --- a/pipenv/vendor/requirementslib/models/requirements.py +++ b/pipenv/vendor/requirementslib/models/requirements.py @@ -214,6 +214,8 @@ class Line(object): if DIRECT_URL_RE.match(self.line): self._requirement = init_requirement(self.line) line = convert_direct_url_to_url(self.line) + else: + line = self.link.url if self.editable: if not line: @@ -2444,7 +2446,7 @@ class Requirement(object): def line_instance(self): # type: () -> Optional[Line] if self._line_instance is None: - if self.req.parsed_line is not None: + if self.req._parsed_line is not None: self._line_instance = self.req.parsed_line else: include_extras = True diff --git a/pipenv/vendor/requirementslib/models/setup_info.py b/pipenv/vendor/requirementslib/models/setup_info.py index ce7a1c86..68c97700 100644 --- a/pipenv/vendor/requirementslib/models/setup_info.py +++ b/pipenv/vendor/requirementslib/models/setup_info.py @@ -693,10 +693,7 @@ build-backend = "{1}" dist_path = self.build_sdist() self.get_egg_metadata(metadata_type="egg") except Exception: - print("Base dir: %s" % os.listdir(self.base_dir)) - print("Build dir: %s" % os.listdir(self.extra_kwargs["build_dir"])) - print("build dir with name %s" % os.listdir(os.path.join(self.extra_kwargs["build_dir"], self.name))) - print("Src dir: %s" % os.listdir(self.extra_kwargs["src_dir"])) + pass else: self.get_metadata_from_wheel( os.path.join(self.extra_kwargs["build_dir"], dist_path) diff --git a/tests/unit/test_utils.py b/tests/unit/test_utils.py index a2f3dd56..17e5bab1 100644 --- a/tests/unit/test_utils.py +++ b/tests/unit/test_utils.py @@ -132,7 +132,7 @@ def test_convert_deps_to_pip(monkeypatch, deps, expected): def test_convert_deps_to_pip_one_way(monkeypatch, deps, expected): with monkeypatch.context() as m: import pip_shims - m.setattr(pip_shims.shims, "unpack_url", mock_unpack) + # m.setattr(pip_shims.shims, "unpack_url", mock_unpack) assert pipenv.utils.convert_deps_to_pip(deps, r=False) == [expected.lower()]