£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
3
Rex                 @   s,  d Z ddlZddlmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ ejeZerdd	lmZ dd
lmZmZmZmZmZmZmZ eedf Zeeef Zeeeef Zeeee f Zeeee f Z eee f Z!eee!f Z"edddgZ#dd Z$dddZ%dd Z&dd Z'dd Z(dS )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requiresc              K   s   | i krdf d} i }d}xnt f | D ]`}t|j}yt|j|j ||< W q& ttfk
r } ztj	d|| d}W Y dd}~X q&X q&W ||fS )z8Converts a list of distributions into a PackageSet.
    F)
local_onlyskipz%Error parsing requirements for %s: %sTN)
r   r   project_namer   r   r   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             C   s   i }i }x| D ]}t  }t  }|r,||r,qxz| | jD ]l}t|j}|| krzd}	|jdk	rf|jj }	|	r8|j||f q8| | j}
|jj	|
dds8|j||
|f q8W |rt
|td||< |rt
|td||< qW ||fS )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)prereleases)key)setr   r   r   markerevaluateaddr   	specifiercontainssortedstr)r   should_ignoremissingconflictingpackage_namemissing_depsconflicting_depsreqr   missedr   r   r   r    check_package_set:   s0    




r4   c                s6   t  \}}t| |}t|| |t| fdddfS )zeFor checking if the dependency graph would be consistent after     installing given requirements
    c                s   |  kS )Nr   )r   )	whitelistr   r    <lambda>v   s    z)check_install_conflicts.<locals>.<lambda>)r,   )r!   _simulate_installation_of_create_whitelistr4   )
to_installr   _would_be_installedr   )r5   r    check_install_conflictsf   s    


r<   c             C   s\   t  }xP| D ]H}t|}|j }|dk	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AssertionErrorr   r#   r   r   r   r'   )r9   r   	installedinst_reqabstract_distr   r   r   r   r    r7   {   s    

r7   c             C   sR   t | }xD|D ]<}||krqx,|| jD ]}t|j|kr(|j| P q(W qW |S )N)r$   r   r   r   r'   )r;   r   packages_affectedr/   r2   r   r   r    r8      s    


r8   )N))__doc__loggingcollectionsr   Zpip._vendor.packaging.utilsr   Zpip._vendor.pkg_resourcesr   pip._internal.distributionsr   pip._internal.utils.miscr   pip._internal.utils.typingr   	getLogger__name__r   Zpip._internal.req.req_installr   typingr	   r
   r   r   r   r   r   r+   Z
PackageSetZMissingZConflictingZMissingDictZConflictingDictZCheckResultZConflictDetailsr   r!   r4   r<   r7   r8   r   r   r   r    <module>   s0   
$
,