Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions src/pip/_internal/commands/index.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,13 @@
from pip._internal.cli import cmdoptions
from pip._internal.cli.req_command import IndexGroupCommand
from pip._internal.cli.status_codes import ERROR, SUCCESS
from pip._internal.commands.search import print_dist_installation_info
from pip._internal.commands.search import (
get_installed_distribution,
print_dist_installation_info_if_exists,
)
from pip._internal.exceptions import CommandError, DistributionNotFound, PipError
from pip._internal.index.collector import LinkCollector
from pip._internal.index.package_finder import PackageFinder
from pip._internal.metadata import get_default_environment
from pip._internal.models.selection_prefs import SelectionPreferences
from pip._internal.models.target_python import TargetPython
from pip._internal.network.session import PipSession
Expand Down Expand Up @@ -137,9 +139,9 @@ def get_available_package_versions(self, options: Values, args: List[Any]) -> No
formatted_versions = [str(ver) for ver in sorted(versions, reverse=True)]
latest = formatted_versions[0]

dist = get_installed_distribution(query)

if options.json:
env = get_default_environment()
dist = env.get_distribution(query)
structured_output = {
"name": query,
"versions": formatted_versions,
Expand All @@ -154,4 +156,4 @@ def get_available_package_versions(self, options: Values, args: List[Any]) -> No
else:
write_output(f"{query} ({latest})")
write_output("Available versions: {}".format(", ".join(formatted_versions)))
print_dist_installation_info(query, latest)
print_dist_installation_info_if_exists(latest, dist)
15 changes: 11 additions & 4 deletions src/pip/_internal/commands/search.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
from pip._internal.cli.status_codes import NO_MATCHES_FOUND, SUCCESS
from pip._internal.exceptions import CommandError
from pip._internal.metadata import get_default_environment
from pip._internal.metadata.base import BaseDistribution
from pip._internal.models.index import PyPI
from pip._internal.network.xmlrpc import PipXmlrpcTransport
from pip._internal.utils.logging import indent_log
Expand Down Expand Up @@ -111,9 +112,9 @@ def transform_hits(hits: List[Dict[str, str]]) -> List["TransformedHit"]:
return list(packages.values())


def print_dist_installation_info(name: str, latest: str) -> None:
env = get_default_environment()
dist = env.get_distribution(name)
def print_dist_installation_info_if_exists(
latest: str, dist: Optional[BaseDistribution]
) -> None:
if dist is not None:
with indent_log():
if dist.version == latest:
Expand All @@ -130,6 +131,11 @@ def print_dist_installation_info(name: str, latest: str) -> None:
write_output("LATEST: %s", latest)


def get_installed_distribution(name: str) -> Optional[BaseDistribution]:
env = get_default_environment()
return env.get_distribution(name)


def print_results(
hits: List["TransformedHit"],
name_column_width: Optional[int] = None,
Expand Down Expand Up @@ -163,7 +169,8 @@ def print_results(
line = f"{name_latest:{name_column_width}} - {summary}"
try:
write_output(line)
print_dist_installation_info(name, latest)
dist = get_installed_distribution(name)
print_dist_installation_info_if_exists(latest, dist)
except UnicodeEncodeError:
pass

Expand Down
Loading