3 ”Rexã@s,dZddlZddlmZddlmZddlmZddlm Z ddl m Z ddl m Z ejeƒZe rðdd lmZdd lmZmZmZmZmZmZmZeed fZeeefZeeeefZeeeefZeeeefZ eee fZ!eee!fZ"ed d d gƒZ#dd„Z$ddd„Z%dd„Z&dd„Z'dd„Z(dS)z'Validation of dependencies of packages éN)Ú namedtuple)Úcanonicalize_name)ÚRequirementParseError)Ú)make_distribution_for_install_requirement)Úget_installed_distributions)ÚMYPY_CHECK_RUNNING)ÚInstallRequirement)ÚAnyÚCallableÚDictÚOptionalÚSetÚTupleÚListÚPackageDetailsÚversionÚrequirescKs’|ikrdfdœ}i}d}xntf|ŽD]`}t|jƒ}yt|j|jƒƒ||<Wq&ttfk r„}ztj d||ƒd}WYdd}~Xq&Xq&W||fS)z8Converts a list of distributions into a PackageSet. F)Ú local_onlyÚskipz%Error parsing requirements for %s: %sTN) rrÚ project_namerrrÚOSErrorrÚloggerÚwarning)ÚkwargsÚ package_setÚproblemsÚdistÚnameÚe©rú�/builddir/build/BUILDROOT/alt-python36-pip-20.2.4-5.el8.x86_64/opt/alt/python36/lib/python3.6/site-packages/pip/_internal/operations/check.pyÚ!create_package_set_from_installed%s  r!c CsÜi}i}xÊ|D]Â}tƒ}tƒ}|r,||ƒr,qxz||jD]l}t|jƒ}||krzd} |jdk rf|jjƒ} | r8|j||fƒq8||j} |jj | dd�s8|j|| |fƒq8W|r¼t |t d�||<|rt |t d�||<qW||fS)z—Check 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)Ú prereleases)Úkey) ÚsetrrrÚmarkerÚevaluateÚaddrÚ specifierÚcontainsÚsortedÚstr) rÚ should_ignoreÚmissingÚ conflictingÚ package_nameÚ missing_depsÚconflicting_depsÚreqrÚmissedrrrr Úcheck_package_set:s0      r4cs6tƒ\}}t||ƒ}t||ƒ‰|t|‡fdd„d�fS)zeFor checking if the dependency graph would be consistent after installing given requirements cs|ˆkS)Nr)r)Ú whitelistrr Úvsz)check_install_conflicts..)r,)r!Ú_simulate_installation_ofÚ_create_whitelistr4)Ú to_installrÚ_Úwould_be_installedr)r5r Úcheck_install_conflictsfs    r<cCs\tƒ}xP|D]H}t|ƒ}|jƒ}|dk s,t‚t|jƒ}t|j|jƒƒ||<|j |ƒq W|S)zBComputes the version of packages after installing to_install. N) r$rÚget_pkg_resources_distributionÚAssertionErrorrr#rrrr')r9rÚ installedÚinst_reqÚ abstract_distrrrrr r7{s   r7cCsRt|ƒ}xD|D]<}||krqx,||jD]}t|jƒ|kr(|j|ƒPq(WqW|S)N)r$rrrr')r;rÚpackages_affectedr/r2rrr r8‘s   r8)N))Ú__doc__ÚloggingÚ collectionsrZpip._vendor.packaging.utilsrZpip._vendor.pkg_resourcesrÚpip._internal.distributionsrÚpip._internal.utils.miscrÚpip._internal.utils.typingrÚ getLoggerÚ__name__rZpip._internal.req.req_installrÚtypingr r r r r rrr+Z PackageSetZMissingZ ConflictingZ MissingDictZConflictingDictZ CheckResultZConflictDetailsrr!r4r<r7r8rrrr Ús0        $     ,