
    q"h              	       F   S r SSKrSSKJr  SSKJr  SSKJr  SSKJ	r	J
r
JrJrJrJrJrJrJrJr  SSKJr  SSKJrJr  SS	KJrJr  SS
KJr  SSKJr  SSKJ r   SSK!J"r"  SSK#J$r$  \RJ                  " \&5      r' " S S\5      r(\
\\(4   r)\\\4   r*\\\\4   r+\
\\\*   4   r,\
\\\+   4   r-\\,\-4   r.\\)\.4   r/S\\)\04   4S jr1 SS\)S\\	\2/\04      S\.4S jjr3S\\$   S\/4S jr4S\\"   S\\   S\\"SS4   4S jr5S\\$   S\)S\\   4S jr6S\\   S\)S\\   4S jr7g)z&Validation of dependencies of packages    N)suppress)Parser)reduce)
CallableDict	FrozenSet	GeneratorIterableList
NamedTupleOptionalSetTuple)Requirement)Tag	parse_tag)NormalizedNamecanonicalize_name)Version))make_distribution_for_install_requirement)get_default_environment)BaseDistribution)InstallRequirementc                   0    \ rS rSr% \\S'   \\   \S'   Srg)PackageDetails!   versiondependencies N)	__name__
__module____qualname____firstlineno__r   __annotations__r   r   __static_attributes__r       P/var/www/html/env/lib/python3.13/site-packages/pip/_internal/operations/check.pyr   r   !   s    {##r&   r   returnc                  :   0 n Sn[        5       nUR                  SSS9 HA  nUR                  n [        UR	                  5       5      n[        UR                  U5      X'   MC     X4$ ! [        [        4 a#  n[        R                  SXF5        Sn SnAMv  SnAff = f)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_installedr:   1   s    KH
!
#C00E0K""	 6 6 89L .t||\ JK	 L   	 $ 	NNA4KH	s   1A''B7BBr4   should_ignorec                 h   0 n0 nU R                  5        GH  u  pE[        5       n[        5       nU(       a  U" U5      (       a  M0  UR                   H  n[        UR                  5      n	X;  aG  Sn
UR
                  b  UR
                  R                  SS05      n
U
(       a  UR                  X45        Md  X	   R                  nUR                  R                  USS9(       a  M  UR                  XU45        M     U(       a  [        U[        S9X$'   U(       d  GM  [        U[        S9X4'   GM     X#4$ )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.
Textra )prereleases)key)itemssetr   r   r8   markerevaluateaddr   	specifiercontainssortedstr)r4   r;   missingconflictingpackage_namepackage_detailmissing_depsconflicting_depsreqr8   missedr   s               r'   check_package_setrR   B   s    GK(3(9(9(;$%(U-0U]<88!..C$SXX.D &::) ZZ00'2?F $$d[1 "'//G==))'t)DD $$dS%9: /" $*<S$AG!(./?S(IK%9 )<< r&   
to_installc                 h   ^ [        5       u  p[        X5      n[        X15      mU[        UU4S jS94$ )zeFor checking if the dependency graph would be consistent after     installing given requirements
    c                    > U T;  $ Nr   )r8   	whitelists    r'   <lambda>)check_install_conflicts.<locals>.<lambda>~   s
    D	4Ir&   )r;   )r:   _simulate_installation_of_create_whitelistrR   )rS   r4   _would_be_installedrW   s       @r'   check_install_conflictsr^   o   sD    
 78NK2:K ""4BI 	'I	
 r&   packagessupported_tagsc              #   x  #    U  H  n[        [        5         UR                  S5      n[        [        R
                  [        [        [        5       R                  U5      R                  S/ 5      5      [	        5       5      nUR                  U5      (       a  Uv   S S S 5        M     g ! , (       d  f       M  = f7f)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)/Ivx00<DDUBOP*J
 $$^44 )( ((s   B:BB(B:(
B7	2B:c                     [        5       nU  Hj  n[        U5      nUR                  5       nUR                  n[	        UR
                  [        UR                  5       5      5      X'   UR                  U5        Ml     U$ )z=Computes the version of packages after installing to_install.)	rB   r   get_metadata_distributionr-   r   r   r.   r/   rE   )rS   r4   	installedinst_reqabstract_distr7   r8   s          r'   rZ   rZ      so    
 I A(K668""*4<<d>T>T>V9WXd  r&   r]   c                     [        U 5      nU HL  nX2;   a  M
  X   R                   H0  n[        UR                  5      U;   d  M  UR	                  U5          MJ     MN     U$ rV   )rB   r   r   r8   rE   )r]   r4   packages_affectedrL   rP   s        r'   r[   r[      sa     ./#,,99C *.??!%%l3 :	 $ r&   rV   )8__doc__logging
contextlibr   email.parserr   	functoolsr   typingr   r   r   r	   r
   r   r   r   r   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    r2   r   
PackageSetMissingConflictingMissingDictConflictingDictCheckResultConflictDetailsboolr:   rI   rR   r^   rn   rZ   r[   r   r&   r'   <module>r      s   ,       ; 5 I 1 Q : 8 <			8	$$Z $ ..01

+
,NG[89>4=01~tK'889K01
K/0!5T1A+B !$ OS* * ,4XseTk5J,K* * Z-?(@ _ ('(SM t+, '(7A&N+:Dr&   