diff options
Diffstat (limited to 'src/pip/_internal/operations/check.py')
-rw-r--r-- | src/pip/_internal/operations/check.py | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/src/pip/_internal/operations/check.py b/src/pip/_internal/operations/check.py index 224633561..5699c0b91 100644 --- a/src/pip/_internal/operations/check.py +++ b/src/pip/_internal/operations/check.py @@ -3,7 +3,7 @@ import logging from collections import namedtuple -from typing import Any, Callable, Dict, List, Optional, Set, Tuple +from typing import TYPE_CHECKING, Any, Callable, Dict, List, Optional, Set, Tuple from pip._vendor.packaging.utils import canonicalize_name from pip._vendor.pkg_resources import RequirementParseError @@ -12,23 +12,25 @@ from pip._internal.distributions import make_distribution_for_install_requiremen from pip._internal.req.req_install import InstallRequirement from pip._internal.utils.misc import get_installed_distributions +if TYPE_CHECKING: + from pip._vendor.packaging.utils import NormalizedName + logger = logging.getLogger(__name__) # Shorthands -PackageSet = Dict[str, 'PackageDetails'] +PackageSet = Dict['NormalizedName', 'PackageDetails'] Missing = Tuple[str, Any] Conflicting = Tuple[str, str, Any] -MissingDict = Dict[str, List[Missing]] -ConflictingDict = Dict[str, List[Conflicting]] +MissingDict = Dict['NormalizedName', List[Missing]] +ConflictingDict = Dict['NormalizedName', List[Conflicting]] CheckResult = Tuple[MissingDict, ConflictingDict] ConflictDetails = Tuple[PackageSet, CheckResult] PackageDetails = namedtuple('PackageDetails', ['version', 'requires']) -def create_package_set_from_installed(**kwargs): - # type: (**Any) -> Tuple[PackageSet, bool] +def create_package_set_from_installed(**kwargs: Any) -> Tuple["PackageSet", bool]: """Converts a list of distributions into a PackageSet. """ # Default to using all packages installed on the system @@ -59,7 +61,7 @@ def check_package_set(package_set, should_ignore=None): missing = {} conflicting = {} - for package_name in package_set: + for package_name, package_detail in package_set.items(): # Info about dependencies of package_name missing_deps = set() # type: Set[Missing] conflicting_deps = set() # type: Set[Conflicting] @@ -67,8 +69,8 @@ def check_package_set(package_set, should_ignore=None): if should_ignore and should_ignore(package_name): continue - for req in package_set[package_name].requires: - name = canonicalize_name(req.project_name) # type: str + for req in package_detail.requires: + name = canonicalize_name(req.project_name) # Check if it's missing if name not in package_set: @@ -114,7 +116,7 @@ def check_install_conflicts(to_install): def _simulate_installation_of(to_install, package_set): - # type: (List[InstallRequirement], PackageSet) -> Set[str] + # type: (List[InstallRequirement], PackageSet) -> Set[NormalizedName] """Computes the version of packages after installing to_install. """ @@ -136,7 +138,7 @@ def _simulate_installation_of(to_install, package_set): def _create_whitelist(would_be_installed, package_set): - # type: (Set[str], PackageSet) -> Set[str] + # type: (Set[NormalizedName], PackageSet) -> Set[NormalizedName] packages_affected = set(would_be_installed) for package_name in package_set: |