3 ig@sxdZddlZddlmZmZmZmZmZmZm Z ddl m Z ddl m Z mZddlmZddlmZddlmZdd lmZejeZGd 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@seZdZUeeedS)PackageDetailsN)__name__ __module__ __qualname__rversionrr dependenciesrr=/tmp/pip-build-88gy_88q/pip/pip/_internal/operations/check.pyrs r)returncCsi}d}t}xv|jdfdD]d}|j}y t|j}t|j|||<Wqttfk r}zt j d||d}WYdd}~XqXqW||fS)z3Converts a list of distributions into a PackageSet.F) local_onlyskipz%Error parsing requirements for %s: %sTN) r Ziter_installed_distributionscanonical_namelistiter_dependenciesrrOSError ValueErrorloggerwarning) package_setZproblemsenvdistnamererrr!create_package_set_from_installed"s r')r" should_ignorerc Csi}i}x|jD]\}}t}t}|r4||r4qxv|jD]l}t|j} | |kr~d} |jdk rj|jj} | r<|j| |fq<|| j} |j j | dds<|j| | |fqosz)check_install_conflicts..)r()r'_simulate_installation_of_create_whitelistr7)r8r"_would_be_installedr)r9rcheck_install_conflicts`s    r?)r8r"rcCsPt}xD|D]<}t|}|j}|j}t|jt|j||<|j|q W|S)z=Computes the version of packages after installing to_install.) r,r Zget_metadata_distributionrrrrrr/)r8r" installedZinst_req abstract_distr$r%rrrr;ts r;)r>r"rcCsRt|}xD|D]<}||krqx,||jD]}t|j|kr(|j|Pq(WqW|S)N)r,rr r%r/)r>r"Zpackages_affectedr5r6rrrr<s   r<)N))__doc__loggingZtypingrrrrrrrZ"pip._vendor.packaging.requirementsr pip._vendor.packaging.utilsr r Zpip._internal.distributionsr Zpip._internal.metadatar Zpip._internal.metadata.baserZpip._internal.req.req_installr getLoggerrr rZ PackageSetZMissingZ ConflictingZ MissingDictZConflictingDictZ CheckResultZConflictDetailsboolr'r3r7r?r;r<rrrrs2$          +