B
    =)H[À  ã               @   sô   d 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
rÂddlmZ ddl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d	d
dgƒZdd„ Zdd„ Zdd„ Zdd„ ZdS )z'Validation of dependencies of packages
é    )Ú
namedtuple)Úcanonicalize_name)Úmake_abstract_dist)Úget_installed_distributions)ÚMYPY_CHECK_RUNNING)ÚInstallRequirement)ÚAnyÚDictÚIteratorÚSetÚTupleÚListÚPackageDetailsÚversionÚrequiresc              K   sL   | i krdddœ} i }x0t f | ŽD ]"}t|jƒ}t|j| ¡ ƒ||< q"W |S )z8Converts a list of distributions into a PackageSet.
    F© )Ú
local_onlyÚskip)r   r   Úproject_namer   r   r   )ÚkwargsÚretvalÚdistÚnamer   r   ú_C:\Users\HIRONO~1\AppData\Local\Temp\pip-install-qz7kpjmn\pip\pip\_internal\operations\check.pyÚ!create_package_set_from_installed   s    

r   c             C   sÚ   t ƒ }t ƒ }xÄ| D ]¼}tƒ }tƒ }xz| | jD ]l}t|jƒ}|| krpd}|jdk	r\|j ¡ }|r.| ||f¡ q.| | j}	|j	j
|	dd�s.| ||	|f¡ q.W dd„ }
|rºt||
d�||< |rt||
d�||< qW ||fS )z)Check if a package set is consistent
    TN)Úprereleasesc             S   s   t | ƒS )N)Ústr)Úxr   r   r   Ústr_keyH   s    z"check_package_set.<locals>.str_key)Úkey)ÚdictÚsetr   r   r   ÚmarkerÚevaluateÚaddr   Ú	specifierÚcontainsÚsorted)Úpackage_setÚmissingÚconflictingÚpackage_nameÚmissing_depsÚconflicting_depsÚreqr   Úmissedr   r   r   r   r   Úcheck_package_set+   s.    




r0   c             C   s   t ƒ }t| |ƒ |t|ƒfS )zeFor checking if the dependency graph would be consistent after     installing given requirements
    )r   Ú_simulate_installation_ofr0   )Ú
to_installÚstater   r   r   Úcheck_install_conflictsS   s    
r4   c             C   s@   x:| D ]2}t |ƒjdd�}t|jƒ}t|j| ¡ ƒ||< qW dS )zBComputes the version of packages after installing to_install.
    N)Úfinder)r   r   r   r   r   r   r   )r2   r3   Úinst_reqr   r   r   r   r   r1   a   s    

r1   N) Ú__doc__Úcollectionsr   Úpip._vendor.packaging.utilsr   Ú pip._internal.operations.preparer   Úpip._internal.utils.miscr   Úpip._internal.utils.typingr   Zpip._internal.req.req_installr   Útypingr   r	   r
   r   r   r   r   Z
PackageSetZMissingZConflictingZMissingDictZConflictingDictZCheckResultr   r   r0   r4   r1   r   r   r   r   Ú<module>   s&    (