Skip to content

Commit d31e805

Browse files
committed
avoid duplication of dist lookup
1 parent 50f72f2 commit d31e805

File tree

2 files changed

+18
-9
lines changed

2 files changed

+18
-9
lines changed

src/pip/_internal/commands/index.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@
88
from pip._internal.cli import cmdoptions
99
from pip._internal.cli.req_command import IndexGroupCommand
1010
from pip._internal.cli.status_codes import ERROR, SUCCESS
11-
from pip._internal.commands.search import print_dist_installation_info
11+
from pip._internal.commands.search import (
12+
get_installed_distribution,
13+
print_dist_installation_info_if_exists,
14+
)
1215
from pip._internal.exceptions import CommandError, DistributionNotFound, PipError
1316
from pip._internal.index.collector import LinkCollector
1417
from pip._internal.index.package_finder import PackageFinder
15-
from pip._internal.metadata import get_default_environment
1618
from pip._internal.models.selection_prefs import SelectionPreferences
1719
from pip._internal.models.target_python import TargetPython
1820
from pip._internal.network.session import PipSession
@@ -137,9 +139,9 @@ def get_available_package_versions(self, options: Values, args: List[Any]) -> No
137139
formatted_versions = [str(ver) for ver in sorted(versions, reverse=True)]
138140
latest = formatted_versions[0]
139141

142+
dist = get_installed_distribution(query)
143+
140144
if options.json:
141-
env = get_default_environment()
142-
dist = env.get_distribution(query)
143145
structured_output = {
144146
"name": query,
145147
"versions": formatted_versions,
@@ -154,4 +156,4 @@ def get_available_package_versions(self, options: Values, args: List[Any]) -> No
154156
else:
155157
write_output(f"{query} ({latest})")
156158
write_output("Available versions: {}".format(", ".join(formatted_versions)))
157-
print_dist_installation_info(query, latest)
159+
print_dist_installation_info_if_exists(latest, dist)

src/pip/_internal/commands/search.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from pip._internal.cli.status_codes import NO_MATCHES_FOUND, SUCCESS
1515
from pip._internal.exceptions import CommandError
1616
from pip._internal.metadata import get_default_environment
17+
from pip._internal.metadata.base import BaseDistribution
1718
from pip._internal.models.index import PyPI
1819
from pip._internal.network.xmlrpc import PipXmlrpcTransport
1920
from pip._internal.utils.logging import indent_log
@@ -111,9 +112,9 @@ def transform_hits(hits: List[Dict[str, str]]) -> List["TransformedHit"]:
111112
return list(packages.values())
112113

113114

114-
def print_dist_installation_info(name: str, latest: str) -> None:
115-
env = get_default_environment()
116-
dist = env.get_distribution(name)
115+
def print_dist_installation_info_if_exists(
116+
latest: str, dist: Optional[BaseDistribution]
117+
) -> None:
117118
if dist is not None:
118119
with indent_log():
119120
if dist.version == latest:
@@ -130,6 +131,11 @@ def print_dist_installation_info(name: str, latest: str) -> None:
130131
write_output("LATEST: %s", latest)
131132

132133

134+
def get_installed_distribution(name: str) -> Optional[BaseDistribution]:
135+
env = get_default_environment()
136+
return env.get_distribution(name)
137+
138+
133139
def print_results(
134140
hits: List["TransformedHit"],
135141
name_column_width: Optional[int] = None,
@@ -163,7 +169,8 @@ def print_results(
163169
line = f"{name_latest:{name_column_width}} - {summary}"
164170
try:
165171
write_output(line)
166-
print_dist_installation_info(name, latest)
172+
dist = get_installed_distribution(name)
173+
print_dist_installation_info_if_exists(latest, dist)
167174
except UnicodeEncodeError:
168175
pass
169176

0 commit comments

Comments
 (0)