Rex@sdZddlZddlmZddlmZddlmZddlm Z ddl m Z ddl m Z ejeZe rFdd lmZdd lmZmZmZmZmZmZmZeed fZeeefZeeeefZeeeefZeeeefZ eee fZ!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)AnyCallableDictOptionalSetTupleListPackageDetailsversionrequirescKs|ikrdddfi}i}d}xt|D]|}t|j}y t|j|j||vsz)check_install_conflicts..)r!_simulate_installation_of_create_whitelistr4) to_installr_would_be_installedr)r5r check_install_conflictsfs r<cCst}xp|D]h}t|}|j}|dk s@tt|j}t|j|j||<|j |qW|S)zBComputes the version of packages after installing to_install. N) r$rget_pkg_resources_distributionAssertionErrorrr#rrrr')r9r installedinst_req abstract_distrrrrr r7{s    r7cCskt|}xX|D]P}||kr(qx8||jD])}t|j|kr6|j|Pq6WqW|S)N)r$rrrr')r;rpackages_affectedr/r2rrr r8s     r8))__doc__logging collectionsrZpip._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 CheckResultZConflictDetailsrr!r4r<r7r8rrrr s0 4 ,