
    q"h.)                     r   S SK rS SKrS SKrS SKrS SKrS SKJrJrJ	r	J
r
JrJrJr  S SKJr  S SKJr  S SKJrJr  S SKJr  S SKJr  S SK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&J'r'J(r(J)r)J*r*  / SQr+\RX                  " \-5      r.Sr/ " S S\5      r0 " S S5      r1 " S S\&5      r2 " S S\(5      r3g)    N)
CollectionIterableIteratorListMapping
NamedTupleOptional)pkg_resources)Requirement)NormalizedNamecanonicalize_name)Version)parse)InvalidWheelNoneMetadataErrorUnsupportedWheel)egg_link_path_from_location)display_pathnormalize_path)parse_wheelread_wheel_metadata_file   )BaseDistributionBaseEntryPointBaseEnvironmentInfoPathWheel)NAMEDistributionEnvironmentr
   c                   4    \ rS rSr% \\S'   \\S'   \\S'   Srg)
EntryPoint*   namevaluegroup N)__name__
__module____qualname____firstlineno__str__annotations____static_attributes__r'       V/var/www/html/env/lib/python3.13/site-packages/pip/_internal/metadata/pkg_resources.pyr"   r"   *   s    
IJJr/   r"   c                       \ rS rSrSrS\\\4   S\SS4S jrS\S\	4S	 jr
S\S\4S
 jrS\S\\   4S jrS\S\	4S jrS\S\\   4S jrS\S\SS4S jrSrg)InMemoryMetadata0   zIMetadataProvider that reads metadata files from a dictionary.

This also maps metadata decoding exceptions to our internal exception type.
metadata
wheel_namereturnNc                     Xl         X l        g N	_metadata_wheel_name)selfr4   r5   s      r0   __init__InMemoryMetadata.__init__6   s    !%r/   r$   c                     XR                   ;   $ r8   )r:   r<   r$   s     r0   has_metadataInMemoryMetadata.has_metadata:   s    ~~%%r/   c           
           U R                   U   R                  5       $ ! [         a$  n[        SU R                   SU SU S35      eS nAff = f)NzError decoding metadata for z: z in z file)r:   decodeUnicodeDecodeErrorr   r;   )r<   r$   es      r0   get_metadataInMemoryMetadata.get_metadata=   s[    	>>$'..00! 	".t/?/?.@1#T$uU 	s    
AAAc                 L    [         R                  " U R                  U5      5      $ r8   )r
   yield_linesrG   r@   s     r0   get_metadata_lines#InMemoryMetadata.get_metadata_linesF   s    (():):4)@AAr/   c                     gNFr'   r@   s     r0   metadata_isdirInMemoryMetadata.metadata_isdirI   s    r/   c                     / $ r8   r'   r@   s     r0   metadata_listdir!InMemoryMetadata.metadata_listdirL   s    	r/   script_name	namespacec                     g r8   r'   )r<   rT   rU   s      r0   
run_scriptInMemoryMetadata.run_scriptO   s    r/   r9   )r(   r)   r*   r+   __doc__r   r,   bytesr=   boolrA   rG   r   rK   rO   r   rR   rW   r.   r'   r/   r0   r2   r2   0   s    
&e!4 &# &$ && & &  Bs Bx} B3 4 S T#Y c c d r/   r2   c            	       .   \ rS rSrS\R
                  SS4S jr\S\\	\
4   4S j5       r\S\
S\4S j5       r\S	\S
\
S\
S\4S j5       r\S\S\
S\4S j5       r\S\\
   4S j5       r\S\\
   4S j5       r\S\\
   4S j5       r\S\4S j5       r\S\	4S j5       r\S\4S j5       r\S\
4S j5       rS\S\4S jrS\\
   4S jr S\S\
4S jr!S\"\#   4S jr$S\%RL                  RN                  4S jr(S!S\)\
   S\"\*   4S jjr+S\"\	   4S jr,S r-g)"r   S   distr6   Nc                     Xl         S U l        g r8   )_dist_Distribution__extra_mappingr<   r^   s     r0   r=   Distribution.__init__T   s    
 HLr/   c                     U R                   c6  U R                  R                   Vs0 s H  n[        U5      U_M     snU l         U R                   $ s  snf r8   )ra   r`   extrasr   )r<   extras     r0   _extra_mappingDistribution._extra_mappingZ   sS    '=AZZ=N=N$=NE!%(%/=N$D  ###	$s   A	directoryc                    UR                  [        R                  5      n[        R                  R	                  U5      u  p4[
        R                  " X25      nUR                  S5      (       a3  [
        R                  n[        R                  R                  U5      S   nO\UR                  S5      (       d   e[
        R                  n[        R                  R                  U5      S   R	                  S5      S   nU" X7US9nU " U5      $ )Nz	.egg-infor   z
.dist-info-)project_namer4   )rstriposseppathsplitr
   PathMetadataendswithr   splitextDistInfoDistribution)	clsri   dist_dirbase_dirdist_dir_namer4   dist_cls	dist_namer^   s	            r0   from_directoryDistribution.from_directoryc   s    ##BFF+ #%''--"9 --hA [))$11H((7:I$$\2222$99H((7:@@EaHI8L4yr/   metadata_contentsfilenamerl   c                 X    SU0n[         R                  " U[        XB5      US9nU " U5      $ )NMETADATAlocationr4   rl   )r
   ru   r2   )rv   r~   r   rl   metadata_dictr^   s         r0   from_metadata_file_contents(Distribution.from_metadata_file_contentsw   s=     )
 11%m>%

 4yr/   wheelr$   c           	      D    UR                  5        n[        X25      u  pEUR                  5        Vs0 s H=  nUR                  U S35      (       d  M  UR	                  SS5      S   [        X65      _M?     nnS S S 5        [        R                  " UR                  [        WUR                  5      US9n	U " U	5      $ s  snf ! , (       d  f       NO= f! [        R                   a  n[        UR                  U5      UeS nAf[         a  n[        U SU 35      eS nAff = f)N/r   z has an invalid wheel, r   )
as_zipfiler   namelist
startswithrq   r   zipfile
BadZipFiler   r   r   r
   ru   r2   )
rv   r   r$   zfinfo_dir_rp   r   rF   r^   s
             r0   
from_wheelDistribution.from_wheel   s   	H!!#r)"3 !#! -(1~6 ODJJsA&r*,DR,NN -  ! $ 11^^%mU^^D

 4y! $# !! 	<u~~t4!; 	H"dV+B1##FGG	HsW   C  CB<#B<6C8C <C
CC C D&C==D
DDc                 .    U R                   R                  $ r8   )r`   r   r<   s    r0   r   Distribution.location       zz"""r/   c                     [        U R                  5      nU(       a  UnOU R                  (       a  U R                  nOg [        U5      $ r8   )r   raw_namer   r   )r<   egg_linkr   s      r0   installed_locationDistribution.installed_location   s6    .t}}=H]]}}Hh''r/   c                 .    U R                   R                  $ r8   )r`   egg_infor   s    r0   info_locationDistribution.info_location   r   r/   c                 v     [        U R                  R                  R                  5      $ ! [         a     gf = frN   )r[   r`   	_providerrp   AttributeErrorr   s    r0   installed_by_distutils#Distribution.installed_by_distutils   s4    
	

,,1122 		s   (+ 
88c                 @    [        U R                  R                  5      $ r8   )r   r`   rl   r   s    r0   canonical_nameDistribution.canonical_name   s     !8!899r/   c                 @    [        U R                  R                  5      $ r8   )parse_versionr`   versionr   s    r0   r   Distribution.version   s    TZZ//00r/   c                 .    U R                   R                  $ r8   )r`   r   r   s    r0   raw_versionDistribution.raw_version   s    zz!!!r/   rp   c                 J    U R                   R                  [        U5      5      $ r8   )r`   rA   r,   )r<   rp   s     r0   is_fileDistribution.is_file   s    zz&&s4y11r/   c              #   V   #    U R                   R                  S5       S h  vN   g  N7f)Nscripts)r`   rR   r   s    r0   iter_distutils_script_names(Distribution.iter_distutils_script_names   s     ::..y999s   )')c                     [        U5      nU R                  R                  U5      (       d  [        U5      eU R                  R	                  U5      nUc  [        X5      eU$ r8   )r,   r`   rA   FileNotFoundErrorrG   r   )r<   rp   r$   contents       r0   	read_textDistribution.read_text   sT    4yzz&&t,,#D))**))$/?#D//r/   c              #   ,  #    U R                   R                  5       R                  5        Hd  u  pUR                  5        HK  u  p4[        U5      R	                  S5      u  p5n[        UR                  5       UR                  5       US9v   MM     Mf     g 7f)N=)r$   r%   r&   )r`   get_entry_mapitemsr,   	partitionr"   strip)r<   r&   entriesr$   entry_pointr   r%   s          r0   iter_entry_pointsDistribution.iter_entry_points   so     "jj668>>@NE%,]]_!!$[!1!;!;C!@ djjl%++-uUU &5 As   BBc                    [        U R                  [        R                  5      (       a  SnOSn U R	                  U5      n[        R                  R                  5       nUR                  U5        UR                  5       $ ! [
         aW    U R                  (       a  [        U R                  5      nO[        U R                  5      n[        R                  SU5        Sn Nf = f)zu
:raises NoneMetadataError: if the distribution reports `has_metadata()`
    True but `get_metadata()` returns None.
r   zPKG-INFOzNo metadata found in %s )
isinstancer`   r
   ru   r   r   r   r   reprloggerwarningemailparser
FeedParserfeedclose)r<   metadata_namer4   displaying_pathfeed_parsers        r0   _metadata_implDistribution._metadata_impl   s    
 djj-"D"DEE&M&M	~~m4H ll--/"  "" ! 	}}".t}}"="&t}}"5NN4oFH	s   B   AC! C!re   c                     U(       aM  [        U R                  5      [        [        [        U5      5      -  nU Vs/ s H  o0R                  U   PM     nnU R                  R                  U5      $ s  snf r8   )setrg   mapr   r`   requires)r<   re   relevant_extrasrf   s       r0   iter_dependenciesDistribution.iter_dependencies   sg    !$"5"56%v.: O ?NNoU))%0oFNzz""6** Os   A0c                 6    U R                   R                  5       $ r8   )rg   keysr   s    r0   iter_provided_extras!Distribution.iter_provided_extras   s    ""''))r/   )__extra_mappingr`   )r'   ).r(   r)   r*   r+   r
   r   r=   propertyr   r   r,   rg   classmethodr   r|   rZ   r   r   r   r	   r   r   r   r[   r   r   r   r   r   r   r   r   r   r   r   r   r   r   messageMessager   r   r   r   r   r.   r'   r/   r0   r   r   S   s   L]77 LD L $(; < $ $ s /?  &    	
 
   u C 4D  ( #(3- # # (HSM ( ( #x} # #    : : : 1 1 1 "S " "2H 2 2:Xc] :h 3 V8N#; V# 5 5 #,+
3 ++AV +*h~&> *r/   r   c                       \ rS rSrS\R
                  SS4S jr\S\4S j5       r	\S\
\\      S\4S j5       rS\\   4S	 jrS
\S\
\   4S jrS
\S\
\   4S jrSrg)r       wsr6   Nc                     Xl         g r8   _ws)r<   r   s     r0   r=   Environment.__init__   s    r/   c                 .    U " [         R                  5      $ r8   )r
   working_set)rv   s    r0   defaultEnvironment.default  s    =,,--r/   pathsc                 :    U " [         R                  " U5      5      $ r8   )r
   
WorkingSet)rv   r   s     r0   
from_pathsEnvironment.from_paths  s    =++E233r/   c              #   L   #    U R                    H  n[        U5      v   M     g 7fr8   )r   r   rb   s     r0   _iter_distributionsEnvironment._iter_distributions	  s     HHDt$$ s   "$r$   c                 p    [        U5      nU R                  5        H  nUR                  U:X  d  M  Us  $    g)zFind a distribution matching the ``name`` in the environment.

This searches from *all* distributions available in the environment, to
match the behavior of ``pkg_resources.get_distribution()``.
N)r   iter_all_distributionsr   )r<   r$   r   r^   s       r0   _search_distribution Environment._search_distribution  s9     +40//1D""n4 2 r/   c                     U R                  U5      nU(       a  U$  U R                  R                  U5        U R                  U5      $ ! [        R                   a     g f = fr8   )r   r   requirer
   DistributionNotFound)r<   r$   r^   s      r0   get_distributionEnvironment.get_distribution  s`    ((.K	 HHT" ((.. 11 		s   A AAr   )r(   r)   r*   r+   r
   r   r=   r   r   r   r	   r   r,   r   r   r   r   r   r  r.   r'   r/   r0   r    r       s    =33   . . . 4xS	2 4 4 4%X.>%? %
 
:J1K 
/S /X6F-G /r/   r    )4email.messager   email.parserloggingrn   r   typingr   r   r   r   r   r   r	   pip._vendorr
   "pip._vendor.packaging.requirementsr   pip._vendor.packaging.utilsr   r   pip._vendor.packaging.versionr   r   r   pip._internal.exceptionsr   r   r   pip._internal.utils.egg_linkr   pip._internal.utils.miscr   r   pip._internal.utils.wheelr   r   baser   r   r   r   r   __all__	getLoggerr(   r   r   r"   r2   r   r    r'   r/   r0   <module>r     s       	    & : I 1 @ V V D A K  2			8	$    Fg*# g*T0// 0/r/   