a Ra@sxdZddlZddlmZmZmZmZmZmZm Z ddl m Z ddl m Z mZddlmZddlmZddlmZdd lmZeeZGd d d eZee efZe e e fZe e ee fZee eefZee eefZe eefZ e ee fZ!e ee"fd d dZ#deeee$ge"fe dddZ%eee!dddZ&eeeee dddZ'ee eee dddZ(dS)z'Validation of dependencies of packages N)CallableDictList NamedTupleOptionalSetTuple) Requirement)NormalizedNamecanonicalize_name))make_distribution_for_install_requirement)get_default_environment)DistributionVersion)InstallRequirementc@s"eZdZUeed<eeed<dS)PackageDetailsversion dependenciesN)__name__ __module__ __qualname__r__annotations__rr rrO/opt/alt/python39/lib/python3.9/site-packages/pip/_internal/operations/check.pyrs r)returnc Csi}d}t}|jdddD]f}|j}z t|}t|j|||<Wqttfy}zt d||d}WYd}~qd}~00q||fS)z3Converts a list of distributions into a PackageSet.Fr)Z local_onlyskipz%Error parsing requirements for %s: %sTN) r Ziter_installed_distributionscanonical_namelistiter_dependenciesrrOSError ValueErrorloggerZwarning) package_setZproblemsenvdistnamererrr!create_package_set_from_installed"s r&)r! should_ignorerc Csi}i}|D]\}}t}t}|r2||r2q|jD]l}t|j} | |vrzd} |jdurf|j} | r8|| |fq8|| j} |j j | dds8|| | |fq8|rt |t d||<|rt |t d||<q||fS)zCheck if a package set is consistent If should_ignore is passed, it should be a callable that takes a package name and returns a boolean. TN)Z prereleases)key) itemssetrr r$ZmarkerZevaluateaddrZ specifiercontainssortedstr) r!r'ZmissingZ conflicting package_nameZpackage_detailZ missing_depsZconflicting_depsreqr$Zmissedrrrrcheck_package_set3s0       r1) to_installrcs6t\}}t||}t|||t|fdddfS)zeFor checking if the dependency graph would be consistent after installing given requirements cs|vSNr)r$Z whitelistrroz)check_install_conflicts..)r')r&_simulate_installation_of_create_whitelistr1)r2r!_would_be_installedrr4rcheck_install_conflicts`s    r;)r2r!rcCsLt}|D]<}t|}|}|j}t|jt|||<||q |S)z=Computes the version of packages after installing to_install.) r*r Zget_metadata_distributionrrrrrr+)r2r!Z installedZinst_reqZ abstract_distr#r$rrrr7ts r7)r:r!rcCsLt|}|D]:}||vrq ||jD] }t|j|vr$||q q$q |Sr3)r*rr r$r+)r:r!Zpackages_affectedr/r0rrrr8s r8)N))__doc__ZloggingtypingrrrrrrrZ"pip._vendor.packaging.requirementsr Zpip._vendor.packaging.utilsr r Zpip._internal.distributionsr Zpip._internal.metadatar Zpip._internal.metadata.baserZpip._internal.req.req_installrZ getLoggerrr rZ PackageSetZMissingZ ConflictingZ MissingDictZConflictingDictZ CheckResultZConflictDetailsboolr&r.r1r;r7r8rrrrs<$           -