U n a@s dZddlZddlmZddlmZddlmZddlm Z ddl m Z ddl m Z eeZe rdd lmZdd lmZmZmZmZmZmZmZeed fZeeefZeeeefZeeeefZeeeefZ eee fZ!ed d d gZ"ddZ#dddZ$ddZ%ddZ&ddZ'dS)z'Validation of dependencies of packages N) namedtuple)canonicalize_name)RequirementParseError))make_distribution_for_install_requirement)get_installed_distributions)MYPY_CHECK_RUNNING)InstallRequirement)AnyCallableDictOptionalSetTupleListPackageDetailsversionrequiresc Ks|ikrddd}i}d}tf|D]\}t|j}zt|j|||<Wq$tk r~}ztd||d}W5d}~XYq$Xq$||fS)z8Converts a list of distributions into a PackageSet. F) local_onlyskipz%Error parsing requirements for %s: %sTN) rr project_namerrrrloggerwarning)kwargs package_setproblemsdistnameerr_C:\Users\vtejo\AppData\Local\Temp\pip-unpacked-wheel-6mt8ur68\pip\_internal\operations\check.py!create_package_set_from_installed(s  r c Cs|dkrdd}i}i}|D]}t}t}||r6q||jD]l}t|j}||krd} |jdk rn|j} | r@|||fq@||j} |jj | dds@||| |fq@|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. NcSsdS)NFrrrrr should_ignoreEsz(check_package_set..should_ignoreT) prereleases)key) setrrrmarkerevaluateaddr specifiercontainssortedstr) rr"missing conflicting package_name missing_depsconflicting_depsreqrmissedrrrrcheck_package_set=s4    r4cs6t\}}t||}t|||t|fdddfS)zeFor checking if the dependency graph would be consistent after installing given requirements cs|kSNrr! whitelistrr|z)check_install_conflicts..)r")r _simulate_installation_of_create_whitelistr4) to_installr_would_be_installedrr6rcheck_install_conflictsls    r?cCsLt}|D]<}t|}|}t|j}t|j|||<||q |S)zBComputes the version of packages after installing to_install. ) r%rget_pkg_resources_distributionrr$rrrr()r<r installedinst_req abstract_distrrrrrr:s  r:cCsLt|}|D]:}||krq ||jD] }t|j|kr$||q q$q |Sr5)r%rrrr()r>rpackages_affectedr/r2rrrr;s r;)N)(__doc__logging collectionsrpip._vendor.packaging.utilsrZpip._vendor.pkg_resourcesrpip._internal.distributionsrpip._internal.utils.miscrpip._internal.utils.typingr getLogger__name__rZpip._internal.req.req_installrtypingr r r r r rrr,Z PackageSetZMissingZ ConflictingZ MissingDictZConflictingDictZ CheckResultrr r4r?r:r;rrrrs.        $    /