
    )h.)                     r   d dl Zd dlZd dlZd dl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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&m'Z'm(Z(m)Z)m*Z* g dZ+ ejX                  e-      Z.dZ/ G d de      Z0 G d d      Z1 G d de&      Z2 G d de(      Z3y)    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                   ,    e Zd ZU eed<   eed<   eed<   y)
EntryPointnamevaluegroupN)__name__
__module____qualname__str__annotations__     W/var/www/html/venv/lib/python3.12/site-packages/pip/_internal/metadata/pkg_resources.pyr"   r"   *   s    
IJJr,   r"   c                       e Zd ZdZdeeef   deddfdZdedefdZ	dedefd	Z
dedee   fd
ZdedefdZdedee   fdZdededdfdZy)InMemoryMetadatazIMetadataProvider that reads metadata files from a dictionary.

    This also maps metadata decoding exceptions to our internal exception type.
    metadata
wheel_namereturnNc                      || _         || _        y N)	_metadata_wheel_name)selfr0   r1   s      r-   __init__zInMemoryMetadata.__init__6   s    !%r,   r#   c                     || j                   v S r4   )r5   r7   r#   s     r-   has_metadatazInMemoryMetadata.has_metadata:   s    t~~%%r,   c           
          	 | j                   |   j                         S # t        $ r$}t        d| j                   d| d| d      d }~ww xY w)NzError decoding metadata for z: z in z file)r5   decodeUnicodeDecodeErrorr   r6   )r7   r#   es      r-   get_metadatazInMemoryMetadata.get_metadata=   s[    	>>$'..00! 	".t/?/?.@1#T$uU 	s    	AAAc                 J    t        j                  | j                  |            S r4   )r
   yield_linesr@   r:   s     r-   get_metadata_linesz#InMemoryMetadata.get_metadata_linesF   s    (():):4)@AAr,   c                      yNFr+   r:   s     r-   metadata_isdirzInMemoryMetadata.metadata_isdirI   s    r,   c                     g S r4   r+   r:   s     r-   metadata_listdirz!InMemoryMetadata.metadata_listdirL   s    	r,   script_name	namespacec                      y r4   r+   )r7   rI   rJ   s      r-   
run_scriptzInMemoryMetadata.run_scriptO   s    r,   )r&   r'   r(   __doc__r   r)   bytesr8   boolr;   r@   r   rC   rF   r   rH   rL   r+   r,   r-   r/   r/   0   s    
&e!4 &# &$ && & &  Bs Bx} B3 4 S T#Y c c d r,   r/   c            	          e Zd Zdej                  ddfdZedeee	f   fd       Z
ede	defd       Zeded	e	d
e	defd       Zedede	defd       Zedee	   fd       Zedee	   fd       Zedee	   fd       Zedefd       Zedefd       Zedefd       Zede	fd       ZdedefdZdee	   fdZdede	fdZ de!e"   fdZ#de$jJ                  jL                  fdZ'dde(e	   de!e)   fdZ*de!e   fdZ+y) r   distr2   Nc                      || _         d | _        y r4   )_dist_Distribution__extra_mappingr7   rQ   s     r-   r8   zDistribution.__init__T   s    
 HLr,   c                     | j                   3| j                  j                  D ci c]  }t        |      | c}| _         | j                   S c c}w r4   )rT   rS   extrasr   )r7   extras     r-   _extra_mappingzDistribution._extra_mappingZ   sN    '=AZZ=N=N$49!%(%/$D  ###	$s   A	directoryc                    |j                  t        j                        }t        j                  j	                  |      \  }}t        j                  ||      }|j                  d      r3t
        j                  }t        j                  j                  |      d   }nW|j                  d      sJ t
        j                  }t        j                  j                  |      d   j	                  d      d   } ||||      } | |      S )Nz	.egg-infor   z
.dist-info-)project_namer0   )rstriposseppathsplitr
   PathMetadataendswithr   splitextDistInfoDistribution)	clsrZ   dist_dirbase_dirdist_dir_namer0   dist_cls	dist_namerQ   s	            r-   from_directoryzDistribution.from_directoryc   s    ##BFF+ #%''--"9- --hA [)$11H((7:I$$\222$99H((7:@@EaHIy8L4yr,   metadata_contentsfilenamer]   c                 ^    d|i}t        j                  |t        ||      |      } | |      S )NMETADATAlocationr0   r]   )r
   rf   r/   )rg   rn   ro   r]   metadata_dictrQ   s         r-   from_metadata_file_contentsz(Distribution.from_metadata_file_contentsw   s?     )
 11%mX>%

 4yr,   wheelr#   c           	      ,   	 |j                         5 }t        ||      \  }}|j                         D ci c]6  }|j                  | d      r |j	                  dd      d   t        ||      8 }}d d d        t        j                  |j                  t        |j                        |      }	 | |	      S c c}w # 1 sw Y   LxY w# t        j                  $ r}t        |j                  |      |d }~wt        $ r}t        | d|       d }~ww xY w)N/r   z has an invalid wheel, rr   )
as_zipfiler   namelist
startswithrb   r   zipfile
BadZipFiler   rs   r   r
   rf   r/   )
rg   rv   r#   zfinfo_dir_ra   rt   r?   rQ   s
             r-   
from_wheelzDistribution.from_wheel   s   	H!!# r)"d3! !#!(1~6 JJsA&r*,DR,NN! ! 11^^%mU^^D

 4y!  !! 	<u~~t4!; 	H"dV+B1##FGG	HsK   C "B<;B7/B<1C 7B<<CC DC22D>DDc                 .    | j                   j                  S r4   )rS   rs   r7   s    r-   rs   zDistribution.location       zz"""r,   c                     t        | j                        }|r|}t        |      S | j                  r| j                  }t        |      S y r4   )r   raw_namers   r   )r7   egg_linkrs   s      r-   installed_locationzDistribution.installed_location   sI    .t}}=H
 h''	 ]]}}H h'' r,   c                 .    | j                   j                  S r4   )rS   egg_infor   s    r-   info_locationzDistribution.info_location   r   r,   c                 t    	 t        | j                  j                  j                        S # t        $ r Y yw xY wrE   )rO   rS   	_providerra   AttributeErrorr   s    r-   installed_by_distutilsz#Distribution.installed_by_distutils   s4    
	

,,1122 		s   (+ 	77c                 @    t        | j                  j                        S r4   )r   rS   r]   r   s    r-   canonical_namezDistribution.canonical_name   s     !8!899r,   c                 @    t        | j                  j                        S r4   )parse_versionrS   versionr   s    r-   r   zDistribution.version   s    TZZ//00r,   c                 .    | j                   j                  S r4   )rS   r   r   s    r-   raw_versionzDistribution.raw_version   s    zz!!!r,   ra   c                 J    | j                   j                  t        |            S r4   )rS   r;   r)   )r7   ra   s     r-   is_filezDistribution.is_file   s    zz&&s4y11r,   c              #   V   K   | j                   j                  d      E d {    y 7 w)Nscripts)rS   rH   r   s    r-   iter_distutils_script_namesz(Distribution.iter_distutils_script_names   s     ::..y999s   )')c                     t        |      }| j                  j                  |      st        |      | j                  j	                  |      }|t        | |      |S r4   )r)   rS   r;   FileNotFoundErrorr@   r   )r7   ra   r#   contents       r-   	read_textzDistribution.read_text   sS    4yzz&&t,#D))**))$/?#D$//r,   c              #   0  K   | j                   j                         j                         D ]g  \  }}|j                         D ]O  \  }}t        |      j	                  d      \  }}}t        |j                         |j                         |       Q i y w)N=)r#   r$   r%   )rS   get_entry_mapitemsr)   	partitionr"   strip)r7   r%   entriesr#   entry_pointr   r$   s          r-   iter_entry_pointszDistribution.iter_entry_points   s     "jj668>>@ 	VNE7%,]]_ V!k!$[!1!;!;C!@a djjl%++-uUUV	Vs   BBc                    t        | j                  t        j                        rd}nd}	 | j	                  |      }t        j                  j                         }|j                  |       |j                         S # t
        $ rR | j                  rt        | j                        }nt        | j                        }t        j                  d|       d}Y w xY w)z
        :raises NoneMetadataError: if the distribution reports `has_metadata()`
            True but `get_metadata()` returns None.
        rq   zPKG-INFOzNo metadata found in %s )
isinstancerS   r
   rf   r   r   rs   r   reprloggerwarningemailparser
FeedParserfeedclose)r7   metadata_namer0   displaying_pathfeed_parsers        r-   _metadata_implzDistribution._metadata_impl   s    
 djj-"D"DE&M&M	~~m4H ll--/"  "" ! 	}}".t}}"="&t}}"5NN4oFH	s   A; ;ACCrW   c                     |rKt        | j                        t        t        t        |            z  }|D cg c]  }| j                  |    }}| j                  j                  |      S c c}w r4   )setrY   mapr   rS   requires)r7   rW   relevant_extrasrX   s       r-   iter_dependencieszDistribution.iter_dependencies   sh    !$"5"56%v.: O ?NNUd))%0NFNzz""6** Os   A)c                 6    | j                   j                         S r4   )rY   keysr   s    r-   iter_provided_extrasz!Distribution.iter_provided_extras   s    ""''))r,   )r+   ),r&   r'   r(   r
   r   r8   propertyr   r   r)   rY   classmethodr   rm   rN   ru   r   r   r	   rs   r   r   rO   r   r   r   r   r   r   r   r   r   r   r   r   r   r   messageMessager   r   r   r   r   r+   r,   r-   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                       e Zd Zdej                  ddfdZedefd       Zede	e
e      defd       Zdee   fdZd	ede	e   fd
Zd	ede	e   fdZy)r    wsr2   Nc                     || _         y r4   )_ws)r7   r   s     r-   r8   zEnvironment.__init__   s	    r,   c                 .     | t         j                        S r4   )r
   working_set)rg   s    r-   defaultzEnvironment.default  s    =,,--r,   pathsc                 8     | t        j                  |            S r4   )r
   
WorkingSet)rg   r   s     r-   
from_pathszEnvironment.from_paths  s    =++E233r,   c              #   H   K   | j                   D ]  }t        |        y wr4   )r   r   rU   s     r-   _iter_distributionszEnvironment._iter_distributions	  s$     HH 	%Dt$$	%s    "r#   c                 j    t        |      }| j                         D ]  }|j                  |k(  s|c S  y)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   )r7   r#   r   rQ   s       r-   _search_distributionz Environment._search_distribution  s>     +40//1 	D""n4	 r,   c                     | j                  |      }|r|S 	 | j                  j                  |       | j                  |      S # t        j                  $ r Y y w xY wr4   )r   r   requirer
   DistributionNotFound)r7   r#   rQ   s      r-   get_distributionzEnvironment.get_distribution  s`    ((.K	 HHT" ((.. 11 		s   A AA)r&   r'   r(   r
   r   r8   r   r   r   r	   r   r)   r   r   r   r   r   r   r+   r,   r-   r    r       s    =33   . . . 4xS	2 4 4 4%X.>%? %
 
:J1K 
/S /X6F-G /r,   r    )4email.messager   email.parserloggingr_   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"   r/   r   r    r+   r,   r-   <module>r      s       	    & : I 1 @ V V D A K  2			8	$    Fg*# g*T0// 0/r,   