
    ;ȋh                       d Z ddlmZ ddlZddlmZmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZmZ dd	lmZ dd
lmZmZ ddlmZ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$ G d de          Z%e&ee%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/d*dZ0	 d+d,dZ1d-dZ2d.d%Z3d/d'Z4d0d)Z5dS )1z&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                  $    e Zd ZU ded<   ded<   dS )PackageDetailsr   versionzlist[Requirement]dependenciesN)__name__
__module____qualname____annotations__     [/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/pip/_internal/operations/check.pyr   r      s*         ######r   r   returntuple[PackageSet, bool]c                 \   i } d}t                      }|                    dd          D ]}|j        }	 t          |                                          }t          |j        |          | |<   D# t          t          f$ r(}t          
                    d||           d}Y d}~xd}~ww xY w| |fS )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_dependenciesr   r   OSError
ValueErrorloggerwarning)package_setproblemsenvdistnamer   es          r   !create_package_set_from_installedr3   ,   s    KH
!
#
#C00E0KK  "	 6 6 8 899L .t|\ J JK$ 	 	 	NNA4KKKHHHHHH	   s   9A..B'?B""B'r-   
PackageSetshould_ignoreCallable[[str], bool] | NoneCheckResultc                N   i }i }|                                  D ]\  }}t                      }t                      }|r ||          r0|j        D ]}t          |j                  }	|	| vr?d}
|j        |j                            ddi          }
|
r|                    |	|f           Y| |	         j        }|j	        
                    |d          s|                    |	||f           |rt          |t                    ||<   |rt          |t                    ||<   
||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extra )prereleases)key)itemssetr   r   r1   markerevaluateaddr   	specifiercontainssortedstr)r-   r5   missingconflictingpackage_namepackage_detailmissing_depsconflicting_depsreqr1   missedr   s               r   check_package_setrN   =   sk    GK(3(9(9(;(; J J$n%(UU-0UU 	]]<88 	!. 	; 	;C$SX..D ;&&:) Z00'2??F 2 $$dC[111 "$'/G=))'t)DD ; $$dGS%9::: 	B$*<S$A$A$AGL! 	J(./?S(I(I(IK%Kr   
to_installlist[InstallRequirement]ConflictDetailsc                    t                      \  }}t          | |          }t          ||          |t          |fd          fS )zeFor checking if the dependency graph would be consistent after     installing given requirements
    c                    | vS Nr   )r1   	whitelists    r   <lambda>z)check_install_conflicts.<locals>.<lambda>y   s    D	4I r   )r5   )r3   _simulate_installation_of_create_whitelistrN   )rO   r-   _would_be_installedrU   s       @r   check_install_conflictsr[   j   sf    
 788NK2:{KK ""4kBBI 	'I'I'I'I	
 	
 	
 r   packagesIterable[BaseDistribution]supported_tagsIterable[Tag]'Generator[BaseDistribution, None, None]c              #    K   | D ]}t          t                    5  |                    d          }t          t          j        t          t          t                      	                    |          
                    dg                     t	                                }|                    |          r|V  d d d            n# 1 swxY w Y   d S )NWHEELr   )r   FileNotFoundError	read_textr   	frozensetunionmapr   r   parsestrget_all
isdisjoint)r\   r^   p
wheel_file
wheel_tagss        r   check_unsupportedrn   ~   s       	 	'(( 	 	W--J)/Ivxx00<<DDUBOOPP* *J
 $$^44 	 	 	 	 	 	 	 	 	 	 	 	 	 	 		 	s   BCC	
C	set[NormalizedName]c                   t                      }| D ]x}t          |          }|                                }|j        }t	          |j        t          |                                                    ||<   |                    |           y|S )z=Computes the version of packages after installing to_install.)	r>   r   get_metadata_distributionr&   r   r   r'   r(   rA   )rO   r-   	installedinst_reqabstract_distr0   r1   s          r   rW   rW      s    
 I   A(KK6688"*4<d>T>T>V>V9W9WXXDdr   rZ   c                    t          |           }|D ]D}||v r||         j        D ]/}t          |j                  |v r|                    |            n0E|S rT   )r>   r   r   r1   rA   )rZ   r-   packages_affectedrH   rL   s        r   rX   rX      s     .//#  ,,,|,9 	 	C **.???!%%l333 @ r   )r    r!   rT   )r-   r4   r5   r6   r    r7   )rO   rP   r    rQ   )r\   r]   r^   r_   r    r`   )rO   rP   r-   r4   r    ro   )rZ   ro   r-   r4   r    ro   )6__doc__
__future__r   loggingcollections.abcr   r   
contextlibr   email.parserr   	functoolsr   typingr	   r
   "pip._vendor.packaging.requirementsr   pip._vendor.packaging.tagsr   r   pip._vendor.packaging.utilsr   r   pip._vendor.packaging.versionr   pip._internal.distributionsr   pip._internal.metadatar   pip._internal.metadata.baser   pip._internal.req.req_installr   	getLoggerr   r+   r   dictr4   tupleMissingConflictingr'   MissingDictConflictingDictr7   rQ   r3   rN   r[   rn   rW   rX   r   r   r   <module>r      s{   , , " " " " " "  / / / / / / / /                         
 ; : : : : : 5 5 5 5 5 5 5 5 I I I I I I I I 1 1 1 1 1 1 Q Q Q Q Q Q : : : : : : 8 8 8 8 8 8 < < < < < <		8	$	$$ $ $ $ $Z $ $ $ ..01

+
,NG[89>4=01~tK'889K01
K/0! ! ! !$ LP*  *  *  *  * Z   (       &     r   