HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: sport3497 (1034)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/lib/python3.10/dist-packages/pip/_internal/operations/__pycache__/check.cpython-310.pyc
o

��h�@s�dZddlmZddlZddlmZmZddlmZddl	m
Z
ddlmZddl
mZmZdd	lmZdd
lmZmZddlmZmZddlmZdd
lmZddlmZddlmZddl m!Z!e�"e#�Z$Gdd�de�Z%e&ee%fZ'e(eefZ)e(eeefZ*e&ee+e)fZ,e&ee+e*fZ-e(e,e-fZ.e(e'e.fZ/d0dd�Z0	d1d2dd�Z1d3d!d"�Z2d4d(d)�Z3d5d+d,�Z4d6d.d/�Z5dS)7z&Validation of dependencies of packages�)�annotationsN)�	Generator�Iterable)�suppress)�Parser)�reduce)�Callable�
NamedTuple)�Requirement)�Tag�	parse_tag)�NormalizedName�canonicalize_name)�Version)�)make_distribution_for_install_requirement)�get_default_environment)�BaseDistribution)�InstallRequirementc@seZdZUded<ded<dS)�PackageDetailsr�versionzlist[Requirement]�dependenciesN)�__name__�
__module__�__qualname__�__annotations__�rr�I/usr/local/lib/python3.10/dist-packages/pip/_internal/operations/check.pyrs
r�return�tuple[PackageSet, bool]cCs�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 dependencies of %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)�
PackageSet�
should_ignore�Callable[[str], bool] | None�CheckResultcCs�i}i}|��D]b\}}t�}t�}|r||�rq|jD]9}t|j�}	|	|vr@d}
|jdur6|j�ddi�}
|
r?|�|	|f�q||	j}|j	j
|dd�sU|�|	||f�q|r`t|td�||<|rjt|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�extra�)�prereleases)�key)
�items�setrrr-�marker�evaluate�addr�	specifier�contains�sorted�str)r)r1�missing�conflicting�package_name�package_detail�missing_deps�conflicting_deps�reqr-�missedrrrr�check_package_set=s4	



��rI�
to_install�list[InstallRequirement]�ConflictDetailscs6t�\}}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>ysz)check_install_conflicts.<locals>.<lambda>)r1)r/�_simulate_installation_of�_create_whitelistrI)rJr)�_�would_be_installedrrNr�check_install_conflictsjs


��rU�packages�Iterable[BaseDistribution]�supported_tags�
Iterable[Tag]�'Generator[BaseDistribution, None, None]c
csx�|D]6}tt��(|�d�}ttjttt��	|��
dg��t��}|�|�r*|VWd�n1s4wYqdS)N�WHEELr)r�FileNotFoundError�	read_textr�	frozenset�union�maprr�parsestr�get_all�
isdisjoint)rVrX�p�
wheel_file�
wheel_tagsrrr�check_unsupported~s�

�
����rg�set[NormalizedName]cCsLt�}|D]}t|�}|��}|j}t|jt|����||<|�|�q|S)z=Computes the version of packages after installing to_install.)	r9r�get_metadata_distributionr"rrr#r$r<)rJr)�	installed�inst_req�
abstract_distr,r-rrrrQ�srQrTcCsLt|�}|D]}||vr
q||jD]}t|j�|vr"|�|�nqq|SrM)r9rrr-r<)rTr)�packages_affectedrCrGrrrrR�s
��rR)rrrM)r)r0r1r2rr3)rJrKrrL)rVrWrXrYrrZ)rJrKr)r0rrh)rTrhr)r0rrh)6�__doc__�
__future__r�logging�collections.abcrr�
contextlibr�email.parserr�	functoolsr�typingrr	�"pip._vendor.packaging.requirementsr
�pip._vendor.packaging.tagsrr�pip._vendor.packaging.utilsr
r�pip._vendor.packaging.versionr�pip._internal.distributionsr�pip._internal.metadatar�pip._internal.metadata.baser�pip._internal.req.req_installr�	getLoggerrr'r�dictr0�tuple�Missing�Conflictingr#�MissingDict�ConflictingDictr3rLr/rIrUrgrQrRrrrr�<module>s@

�
-