
    Jxh-&                     t   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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)m*Z*  ej+        e,          Z- G d de          Z. G d d          Z/ G d de%          Z0 G d de'          Z1dS )    N)
CollectionIterableIteratorListMapping
NamedTupleOptional)pkg_resources)Requirement)NormalizedNamecanonicalize_name)parse)InvalidWheelNoneMetadataErrorUnsupportedWheel)egg_link_path_from_location)display_pathnormalize_path)parse_wheelread_wheel_metadata_file   )BaseDistributionBaseEntryPointBaseEnvironmentDistributionVersionInfoPathWheelc                   .    e Zd ZU eed<   eed<   eed<   dS )
EntryPointnamevaluegroupN)__name__
__module____qualname__str__annotations__     W/var/www/html/what/lib/python3.11/site-packages/pip/_internal/metadata/pkg_resources.pyr   r      s+         
IIIJJJJJJJJr)   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dS )InMemoryMetadatazIMetadataProvider that reads metadata files from a dictionary.

    This also maps metadata decoding exceptions to our internal exception type.
    metadata
wheel_namereturnNc                 "    || _         || _        d S N)	_metadata_wheel_name)selfr-   r.   s      r*   __init__zInMemoryMetadata.__init__*   s    !%r)   r    c                     || j         v S r1   )r2   r4   r    s     r*   has_metadatazInMemoryMetadata.has_metadata.   s    t~%%r)   c           
          	 | 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)r2   decodeUnicodeDecodeErrorr   r3   )r4   r    es      r*   get_metadatazInMemoryMetadata.get_metadata1   sr    	>$'..000! 	 	 	"Ut/?UU1UU$UUU  	s   ! 
AA		Ac                 P    t          j        |                     |                    S r1   )r
   yield_linesr=   r7   s     r*   get_metadata_linesz#InMemoryMetadata.get_metadata_lines:   s!    ():):4)@)@AAAr)   c                     dS NFr(   r7   s     r*   metadata_isdirzInMemoryMetadata.metadata_isdir=   s    ur)   c                     g S r1   r(   r7   s     r*   metadata_listdirz!InMemoryMetadata.metadata_listdir@   s    	r)   script_name	namespacec                     d S r1   r(   )r4   rF   rG   s      r*   
run_scriptzInMemoryMetadata.run_scriptC   s    r)   )r#   r$   r%   __doc__r   r&   bytesr5   boolr8   r=   r   r@   rC   r   rE   rI   r(   r)   r*   r,   r,   $   s1        
&e!4 &# &$ & & & && & & & & &     Bs Bx} B B B 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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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!j"        j#        fdZ$dde%e         dee&         fdZ'dee         fdZ(dS )Distributiondistr/   Nc                     || _         d S r1   )_distr4   rO   s     r*   r5   zDistribution.__init__H   s    


r)   	directoryc                 0   |                     t          j                  }t          j                            |          \  }}t          j        ||          }|                    d          r2t
          j        }t          j        	                    |          d         }na|                    d          sJ t
          j
        }t          j        	                    |          d                             d          d         } ||||          } | |          S )Nz	.egg-infor   z
.dist-info-)project_namer-   )rstriposseppathsplitr
   PathMetadataendswithrN   splitextDistInfoDistribution)	clsrS   dist_dirbase_dirdist_dir_namer-   dist_cls	dist_namerO   s	            r*   from_directoryzDistribution.from_directoryK   s    ##BF++ #%'--"9"9- -hAA [)) 	I$1H((77:II$$\22222$9H((77:@@EEaHIxy8LLLs4yyr)   metadata_contentsfilenamerV   c                 j    d|i}t          j        |t          ||          |          } | |          S )NMETADATAlocationr-   rV   )r
   r_   r,   )r`   rg   rh   rV   metadata_dictrO   s         r*   from_metadata_file_contentsz(Distribution.from_metadata_file_contents_   sM     )
 1%mX>>%
 
 

 s4yyr)   wheelr    c                    	 |                                 5 t          |          \  }fd                                D             }d d d            n# 1 swxY w Y   nN# t          j        $ r}t          |j        |          |d }~wt          $ r}t          | d|           d }~ww xY wt          j	        |j        t          ||j                  |          } | |          S )Nc                     i | ]E}|                      d           |                    d d          d         t          |          FS )/r   )
startswithr[   r   ).0rZ   info_dirzfs     r*   
<dictcomp>z+Distribution.from_wheel.<locals>.<dictcomp>u   sa     ! ! !(~~~66!JJsA&&r*,DR,N,N! ! !r)   z has an invalid wheel, rk   )
as_zipfiler   namelistzipfile
BadZipFiler   rl   r   r
   r_   r,   )	r`   ro   r    _rm   r<   rO   rv   rw   s	          @@r*   
from_wheelzDistribution.from_wheelp   sc   	H!!## r)"d33!! ! ! ! ! "! ! !               ! 	< 	< 	<u~t44!; 	H 	H 	H"d#F#F1#F#FGGG	H1^%mU^DD
 
 

 s4yysF   A% 5AA% AA%  A!A% %B04B

B0B++B0c                     | j         j        S r1   )rQ   rl   r4   s    r*   rl   zDistribution.location       z""r)   c                 t    t          | j                  }|r|}n| j        r| j        }nd S t          |          S r1   )r   raw_namerl   r   )r4   egg_linkrl   s      r*   installed_locationzDistribution.installed_location   sF    .t}== 	HH] 	}HH4h'''r)   c                     | j         j        S r1   )rQ   egg_infor   s    r*   info_locationzDistribution.info_location   r   r)   c                 b    	 t          | j        j        j                  S # t          $ r Y dS w xY wrB   )rL   rQ   	_providerrZ   AttributeErrorr   s    r*   installed_by_distutilsz#Distribution.installed_by_distutils   s?    
	
,1222 	 	 	55	s     
..c                 4    t          | j        j                  S r1   )r   rQ   rV   r   s    r*   canonical_namezDistribution.canonical_name   s     !8999r)   c                 4    t          | j        j                  S r1   )parse_versionrQ   versionr   s    r*   r   zDistribution.version   s    TZ/000r)   rZ   c                 P    | j                             t          |                    S r1   )rQ   r8   r&   )r4   rZ   s     r*   is_filezDistribution.is_file   s    z&&s4yy111r)   c              #   J   K   | j                             d          E d {V  d S )Nscripts)rQ   rE   r   s    r*   iter_distutils_script_namesz(Distribution.iter_distutils_script_names   s4      :..y99999999999r)   c                     t          |          }| j                            |          st          |          | j                            |          }|t          | |          |S r1   )r&   rQ   r8   FileNotFoundErrorr=   r   )r4   rZ   r    contents       r*   	read_textzDistribution.read_text   sb    4yyz&&t,, 	*#D)))*))$//?#D$///r)   c              #   \  K   | j                                                                         D ]}\  }}|                                D ]c\  }}t          |                              d          \  }}}t          |                                |                                |          V  d~d S )N=)r    r!   r"   )rQ   get_entry_mapitemsr&   	partitionr   strip)r4   r"   entriesr    entry_pointr}   r!   s          r*   iter_entry_pointszDistribution.iter_entry_points   s      "j6688>>@@ 	V 	VNE7%,]]__ V V!k!$[!1!1!;!;C!@!@a djjll%++--uUUUUUUUV	V 	Vr)   c                    t          | j        t          j                  rd}nd}	 |                     |          }n]# t
          $ rP | j        rt          | j                  }nt          | j                  }t          
                    d|           d}Y nw xY wt          j                                        }|                    |           |                                S )z
        :raises NoneMetadataError: if the distribution reports `has_metadata()`
            True but `get_metadata()` returns None.
        rj   zPKG-INFOzNo metadata found in %s )
isinstancerQ   r
   r_   r   r   rl   r   reprloggerwarningemailparser
FeedParserfeedclose)r4   metadata_namer-   displaying_pathfeed_parsers        r*   _metadata_implzDistribution._metadata_impl   s    
 dj-"DEE 	'&MM&M	~~m44HH  	 	 	} 6".t}"="="&t}"5"5NN4oFFFHHH	 l--//"""  """s   < ABBr(   extrasc                     |r,t          |                              | j        j                  }| j                            |          S r1   )	frozensetintersectionrQ   r   requires)r4   r   s     r*   iter_dependencieszDistribution.iter_dependencies   sA     	Gv&&33DJ4EFFFz""6***r)   c                     | j         j        S r1   )rQ   r   r   s    r*   iter_provided_extrasz!Distribution.iter_provided_extras   s    z  r)   )r(   ))r#   r$   r%   r
   rN   r5   classmethodr&   r   rf   rK   rn   r   r~   propertyr	   rl   r   r   rL   r   r   r   r   r   r   r   r   r   r   r   r   r   r   messageMessager   r   r   r   r   r(   r)   r*   rN   rN   G   s       ]7 D     s /?    [&    	
 
   [  u C 4D    [( #(3- # # # X# (HSM ( ( ( X( #x} # # # X#     X : : : : X: 1, 1 1 1 X12H 2 2 2 2 2:Xc] : : : :h 3    V8N#; V V V V# 5 # # # #,+ +
3 ++AV + + + +
!hsm ! ! ! ! ! !r)   rN   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dS )Environmentwsr/   Nc                     || _         d S r1   )_ws)r4   r   s     r*   r5   zEnvironment.__init__   s    r)   c                 ,     | t           j                  S r1   )r
   working_set)r`   s    r*   defaultzEnvironment.default   s    s=,---r)   pathsc                 <     | t          j        |                    S r1   )r
   
WorkingSet)r`   r   s     r*   
from_pathszEnvironment.from_paths   s    s=+E22333r)   c              #   @   K   | j         D ]}t          |          V  d S r1   )r   rN   rR   s     r*   _iter_distributionszEnvironment._iter_distributions   s8      H 	% 	%Dt$$$$$$	% 	%r)   r    c                 p    t          |          }|                                 D ]}|j        |k    r|c S dS )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   )r4   r    r   rO   s       r*   _search_distributionz Environment._search_distribution   sM     +400//11 	 	D"n44 5tr)   c                     |                      |          }|r|S 	 | j                            |           n# t          j        $ r Y d S w xY w|                      |          S r1   )r   r   requirer
   DistributionNotFound)r4   r    rO   s      r*   get_distributionzEnvironment.get_distribution   s{    ((.. 	K	 HT""""1 	 	 	44	((...s   6 A	A	)r#   r$   r%   r
   r   r5   r   r   r   r	   r   r&   r   r   r   r   r   r   r(   r)   r*   r   r      s       =3      . . . . [. 4xS	2 4 4 4 4 [4%X.>%? % % % %
 
:J1K 
 
 
 
/S /X6F-G / / / / / /r)   r   )2email.messager   email.parserloggingrX   r{   typingr   r   r   r   r   r   r	   pip._vendorr
   "pip._vendor.packaging.requirementsr   pip._vendor.packaging.utilsr   r   pip._vendor.packaging.versionr   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   r   	getLoggerr#   r   r   r,   rN   r   r(   r)   r*   <module>r      s;            				  V V V V V V V V V V V V V V V V V V % % % % % % : : : : : : I I I I I I I I @ @ @ @ @ @ V V V V V V V V V V D D D D D D A A A A A A A A K K K K K K K K                
	8	$	$                      FT! T! T! T! T!# T! T! T!n0/ 0/ 0/ 0/ 0// 0/ 0/ 0/ 0/ 0/r)   