
    *,h                        d Z ddlZddlmZmZmZmZmZmZ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 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e	e!e(f   fdZ)	 dde!deee*ge(f      de&fdZ+dee   de'fdZ,dee   de!dee   fdZ-dee   de!dee   fdZ.de!ddfdZ/y)z'Validation of dependencies of packages
    N)CallableDictList
NamedTupleOptionalSetTuple)Requirement)LegacySpecifier)NormalizedNamecanonicalize_name)LegacyVersion))make_distribution_for_install_requirement)get_default_environment)DistributionVersion)InstallRequirement)
deprecatedc                   (    e Zd ZU eed<   ee   ed<   y)PackageDetailsversiondependenciesN)__name__
__module____qualname__r   __annotations__r   r
        `/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/pip/_internal/operations/check.pyr   r      s      {##r   r   returnc                  >   i } d}t               }|j                  dd      D ]A  }|j                  }	 t        |j	                               }t        |j                  |      | |<   C | |fS # t        t        f$ r#}t        j                  d||       d}Y d}~ud}~ww xY w)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_dependenciesr   r   OSError
ValueErrorloggerwarning)package_setproblemsenvdistnamer   es          r   !create_package_set_from_installedr1   %   s    KH
!
#C00E0K ""	 6 6 89L .t||\ JK	   	 $ 	NNBD!LH	s   2A**B9BBr+   should_ignorec                 H   t        |        i }i }| j                         D ]  \  }}t               }t               }|r	 ||      r%|j                  D ]  }t	        |j
                        }	|	| vrAd}
|j                  |j                  j                  ddi      }
|
r|j                  |	|f       ]| |	   j                  }|j                  j                  |d      r|j                  |	||f        |rt        |t              ||<   |s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.
    Textra )prereleases)key)#warn_legacy_versions_and_specifiersitemssetr   r   r/   markerevaluateaddr   	specifiercontainssortedstr)r+   r2   missingconflictingpackage_namepackage_detailmissing_depsconflicting_depsreqr/   missedr   s               r   check_package_setrJ   6   s3    (4GK(3(9(9(; J$n%(U-0U]<8!.. 	;C$SXX.D ;&::) ZZ00'2?F $$dC[1 "$'//G==))'t)D $$dGS%9:	;" $*<S$AGL!(./?S(IK%9J< Kr   
to_installc                 r    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   )r/   	whitelists    r   <lambda>z)check_install_conflicts.<locals>.<lambda>t   s    D	4I r   )r2   )r1   _simulate_installation_of_create_whitelistrJ   )rK   r+   _would_be_installedrO   s       @r   check_install_conflictsrU   e   sJ    
 78NK2:{K ""4kBI 	'I	
 r   c                     t               }| D ]j  }t        |      }|j                         }|j                  }t	        |j
                  t        |j                                     ||<   |j                  |       l |S )z=Computes the version of packages after installing to_install.)	r:   r   get_metadata_distributionr$   r   r   r%   r&   r=   )rK   r+   	installedinst_reqabstract_distr.   r/   s          r   rQ   rQ   y   sv    
 I  A(K668""*4<<d>T>T>V9WXDd r   rT   c                     t        |       }|D ]E  }||v r||   j                  D ],  }t        |j                        |v s|j	                  |        E G |S rN   )r:   r   r   r/   r=   )rT   r+   packages_affectedrD   rH   s        r   rR   rR      sp     ./# ,,|,99 	C *.??!%%l3		 r   c           
      V   | j                         D ]  \  }}t        |j                  t              r#t	        | d|j                   dd| ddd       |j
                  D ]E  }t        d |j                  D              s t	        | d|j                   d	| d
d| ddd       G  y )N z# has a non-standard version number.z!to upgrade to a newer version of z^ or contact the author to suggest that they release a version with a conforming version numberi/  z23.3)reasonreplacementissuegone_inc              3   <   K   | ]  }t        |t                y wrN   )
isinstancer   ).0specs     r   	<genexpr>z6warn_legacy_versions_and_specifiers.<locals>.<genexpr>   s     O:dO4Os   z) has a non-standard dependency specifier .ze or contact the author to suggest that they release a version with a conforming dependency specifiers)r9   rd   r   r   r   r   anyr>   )r+   project_namepackage_detailsdeps       r   r8   r8      s    )4):):)< %oo--}=#nAo&=&=%> ?9 : 8~ FI J  #// 	COOO'./*A*A)B CCCF%qJ <L> JT U  "	r   rN   )0__doc__loggingtypingr   r   r   r   r   r   r	   "pip._vendor.packaging.requirementsr
    pip._vendor.packaging.specifiersr   pip._vendor.packaging.utilsr   r   pip._vendor.packaging.versionr   pip._internal.distributionsr   pip._internal.metadatar   pip._internal.metadata.baser   pip._internal.req.req_installr   pip._internal.utils.deprecationr   	getLoggerr   r)   r   
PackageSetMissingConflictingMissingDictConflictingDictCheckResultConflictDetailsboolr1   rA   rJ   rU   rQ   rR   r8   r   r   r   <module>r      s    I I I : < I 7 Q : ; < 6			8	$$Z $ ..01

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