diff --git a/news/9122.bugfix.rst b/news/9122.bugfix.rst new file mode 100644 index 000000000..da2ae5e5f --- /dev/null +++ b/news/9122.bugfix.rst @@ -0,0 +1,2 @@ +Fix a regression that made ``pip wheel`` generate zip files of editable +requirements in the wheel directory. diff --git a/src/pip/_internal/commands/download.py b/src/pip/_internal/commands/download.py index 9535ef3cb..a2d3bf7d9 100644 --- a/src/pip/_internal/commands/download.py +++ b/src/pip/_internal/commands/download.py @@ -132,7 +132,7 @@ class DownloadCommand(RequirementCommand): downloaded = [] # type: List[str] for req in requirement_set.requirements.values(): - if not req.editable and req.satisfied_by is None: + if req.satisfied_by is None: assert req.name is not None preparer.save_linked_requirement(req) downloaded.append(req.name) diff --git a/src/pip/_internal/operations/prepare.py b/src/pip/_internal/operations/prepare.py index de017504a..13b2c0bee 100644 --- a/src/pip/_internal/operations/prepare.py +++ b/src/pip/_internal/operations/prepare.py @@ -530,7 +530,7 @@ class RequirementPreparer(object): assert self.download_dir is not None assert req.link is not None link = req.link - if link.is_vcs: + if link.is_vcs or (link.is_existing_dir() and req.editable): # Make a .zip of the source_dir we already created. req.archive(self.download_dir) return @@ -576,7 +576,6 @@ class RequirementPreparer(object): req, self.req_tracker, self.finder, self.build_isolation, ) - req.archive(self.download_dir) req.check_if_exists(self.use_user_site) return dist diff --git a/tests/functional/test_download.py b/tests/functional/test_download.py index 6ee02d817..8a816b63b 100644 --- a/tests/functional/test_download.py +++ b/tests/functional/test_download.py @@ -855,9 +855,9 @@ def test_download_editable(script, data, tmpdir): """ Test 'pip download' of editables in requirement file. """ - editable_path = os.path.join(data.src, 'simplewheel-1.0') + editable_path = str(data.src / 'simplewheel-1.0').replace(os.path.sep, "/") requirements_path = tmpdir / "requirements.txt" - requirements_path.write_text("-e " + str(editable_path.resolve()) + "\n") + requirements_path.write_text("-e " + editable_path + "\n") download_dir = tmpdir / "download_dir" script.pip( 'download', '--no-deps', '-r', str(requirements_path), '-d', str(download_dir)