HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/pip/_internal/operations/__pycache__/check.cpython-310.pyc
o

@%Ne��@s�dZddlZddlmZmZmZmZmZmZm	Z	ddl
mZddlm
Z
mZddlmZddlmZddlmZdd	lmZe�e�ZGd
d�de�Zee
efZe	e
efZe	e
eefZee
eefZee
eefZe	eefZ e	ee fZ!de	ee"ffd
d�Z#	ddedeee$ge"fde fdd�Z%deede!fdd�Z&deededee
fdd�Z'dee
dedee
fdd�Z(dS)z'Validation of dependencies of packages
�N)�Callable�Dict�List�
NamedTuple�Optional�Set�Tuple)�Requirement)�NormalizedName�canonicalize_name)�)make_distribution_for_install_requirement)�get_default_environment)�DistributionVersion)�InstallRequirementc@s"eZdZUeed<eeed<dS)�PackageDetails�version�dependenciesN)�__name__�
__module__�__qualname__r�__annotations__rr	�rr�@/usr/lib/python3/dist-packages/pip/_internal/operations/check.pyrs
r�returncCs�i}d}t�}|jddd�D]2}|j}zt|���}t|j|�||<Wqttfy@}zt	�
d||�d}WYd}~qd}~ww||fS)z3Converts a list of distributions into a PackageSet.Fr)�
local_only�skipz%Error parsing requirements for %s: %sTN)r
�iter_installed_distributions�canonical_name�list�iter_dependenciesrr�OSError�
ValueError�logger�warning)�package_set�problems�env�dist�namer�errr�!create_package_set_from_installed"s��r*r$�
should_ignorecCs�i}i}|��D]_\}}t�}t�}|r||�rq|jD]6}t|j�}	|	|vr=d}
|jdur3|j��}
|
r<|�|	|f�q||	j}|j	j
|dd�sR|�|	||f�q|r]t|td�||<|rgt|td�||<q||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)
�items�setrrr(�marker�evaluate�addr�	specifier�contains�sorted�str)r$r+�missing�conflicting�package_name�package_detail�missing_deps�conflicting_deps�reqr(�missedrrrr�check_package_set3s4	




��r?�
to_installcs6t�\}}t||�}t||��|t|�fdd�d�fS)zeFor checking if the dependency graph would be consistent after     installing given requirements
    cs|�vS�Nr)r(��	whitelistrr�<lambda>osz)check_install_conflicts.<locals>.<lambda>)r+)r*�_simulate_installation_of�_create_whitelistr?)r@r$�_�would_be_installedrrBr�check_install_conflicts`s


��rIcCsLt�}|D]}t|�}|��}|j}t|jt|����||<|�|�q|S)z=Computes the version of packages after installing to_install.)	r/r�get_metadata_distributionrrrrrr2)r@r$�	installed�inst_req�
abstract_distr'r(rrrrEtsrErHcCsLt|�}|D]}||vr
q||jD]}t|j�|vr"|�|�nqq|SrA)r/rrr(r2)rHr$�packages_affectedr9r=rrrrF�s
��rFrA))�__doc__�logging�typingrrrrrrr�"pip._vendor.packaging.requirementsr	�pip._vendor.packaging.utilsr
r�pip._internal.distributionsr�pip._internal.metadatar
�pip._internal.metadata.baser�pip._internal.req.req_installr�	getLoggerrr"r�
PackageSet�Missing�Conflicting�MissingDict�ConflictingDict�CheckResult�ConflictDetails�boolr*r6r?rIrErFrrrr�<module>sT$
���
�-��
����