Skip to content

Commit d85efce

Browse files
sbidoulpradyunsg
authored andcommitted
Fix pip show of dist with legacy dependency specifiers
1 parent f24fa66 commit d85efce

File tree

2 files changed

+16
-6
lines changed

2 files changed

+16
-6
lines changed

src/pip/_internal/commands/show.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from optparse import Values
33
from typing import Generator, Iterable, Iterator, List, NamedTuple, Optional
44

5+
from pip._vendor.packaging.requirements import InvalidRequirement
56
from pip._vendor.packaging.utils import canonicalize_name
67

78
from pip._internal.cli.base_command import Command
@@ -100,12 +101,19 @@ def _get_requiring_packages(current_dist: BaseDistribution) -> Iterator[str]:
100101
except KeyError:
101102
continue
102103

103-
requires = sorted(
104-
# Avoid duplicates in requirements (e.g. due to environment markers).
105-
{req.name for req in dist.iter_dependencies()},
106-
key=str.lower,
107-
)
108-
required_by = sorted(_get_requiring_packages(dist), key=str.lower)
104+
try:
105+
requires = sorted(
106+
# Avoid duplicates in requirements (e.g. due to environment markers).
107+
{req.name for req in dist.iter_dependencies()},
108+
key=str.lower,
109+
)
110+
except InvalidRequirement:
111+
requires = sorted(dist.iter_raw_dependencies(), key=str.lower)
112+
113+
try:
114+
required_by = sorted(_get_requiring_packages(dist), key=str.lower)
115+
except InvalidRequirement:
116+
required_by = ["#N/A"]
109117

110118
try:
111119
entry_points_text = dist.read_text("entry_points.txt")

tests/functional/test_invalid_versions_and_specifiers.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,3 +105,5 @@ def test_show_require_invalid_version(
105105
_install_require_invalid_version(script, data)
106106
result = script.pip("show", "require-invalid-version")
107107
assert "Name: require-invalid-version\nVersion: 1.0\n" in result.stdout
108+
assert "Requires: invalid-version ==2010i\n" in result.stdout
109+
assert "Required-by: #N/A\n" in result.stdout

0 commit comments

Comments
 (0)