
    *,h-&                     ^   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jV                  e,      Z- G d de      Z. G d d      Z/ G d de%      Z0 G d de'      Z1y)    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<   y)
EntryPointnamevaluegroupN)__name__
__module____qualname__str__annotations__     f/var/www/html/Resume-Scraper/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)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                   |   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   s[    	>>$'..00! 	".t/?/?.@1#T$uU 	s    	AAAc                 J    t        j                  | j                  |            S r1   )r
   yield_linesr=   r7   s     r*   get_metadata_linesz#InMemoryMetadata.get_metadata_lines:   s    (():):4)@AAr)   c                      yNFr(   r7   s     r*   metadata_isdirzInMemoryMetadata.metadata_isdir=   s    r)   c                     g S r1   r(   r7   s     r*   metadata_listdirz!InMemoryMetadata.metadata_listdir@   s    	r)   script_name	namespacec                      y 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,   $   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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!jD                  jF                  fdZ$dde%e   dee&   fdZ'dee   fdZ(y)Distributiondistr/   Nc                     || _         y r1   )_distr4   rO   s     r*   r5   zDistribution.__init__H   s	    
r)   	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_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    ##BFF+ #%''--"9- --hA [)$11H((7:I$$\22$99H((7:@@EaHIy8L4yr)   metadata_contentsfilenamerV   c                 ^    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_   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, rk   )
as_zipfiler   namelist
startswithr[   r   zipfile
BadZipFiler   rl   r   r
   r_   r,   )
r`   ro   r    zfinfo_dir_rZ   rm   r<   rO   s
             r*   
from_wheelzDistribution.from_wheelp   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 r1   )rQ   rl   r4   s    r*   rl   zDistribution.location       zz"""r)   c                     t        | j                        }|r|}t        |      S | j                  r| j                  }t        |      S y r1   )r   raw_namerl   r   )r4   egg_linkrl   s      r*   installed_locationzDistribution.installed_location   sI    .t}}=H
 h''	 ]]}}H h'' r)   c                 .    | j                   j                  S r1   )rQ   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rB   )rL   rQ   	_providerrZ   AttributeErrorr}   s    r*   installed_by_distutilsz#Distribution.installed_by_distutils   s4    
	

,,1122 		s   (+ 	77c                 @    t        | j                  j                        S r1   )r   rQ   rV   r}   s    r*   canonical_namezDistribution.canonical_name   s     !8!899r)   c                 @    t        | j                  j                        S r1   )parse_versionrQ   versionr}   s    r*   r   zDistribution.version   s    TZZ//00r)   rZ   c                 J    | j                   j                  t        |            S r1   )rQ   r8   r&   )r4   rZ   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)rQ   rE   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 r1   )r&   rQ   r8   FileNotFoundErrorr=   r   )r4   rZ   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"   )rQ   get_entry_mapitemsr&   	partitionr   strip)r4   r"   entriesr    entry_pointrz   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.
        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    
 djj-"D"DE&M&M	~~m4H ll--/"  "" ! 	}}".t}}"="&t}}"5NN4oFH	s   A; ;ACCextrasc                     |r.t        |      j                  | j                  j                        }| j                  j	                  |      S r1   )	frozensetintersectionrQ   r   requires)r4   r   s     r*   iter_dependencieszDistribution.iter_dependencies   s9    v&33DJJ4E4EFFzz""6**r)   c                 .    | j                   j                  S r1   )rQ   r   r}   s    r*   iter_provided_extrasz!Distribution.iter_provided_extras   s    zz   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7 D  s /?  &    	
 
   u C 4D  ( #(3- # # (HSM ( ( #x} # #    : : : 1, 1 12H 2 2:Xc] :h 3 V8N#; V# 5 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y)Environmentwsr/   Nc                     || _         y 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    =,,--r)   pathsc                 8     | t        j                  |            S r1   )r
   
WorkingSet)r`   r   s     r*   
from_pathszEnvironment.from_paths   s    =++E233r)   c              #   H   K   | j                   D ]  }t        |        y wr1   )r   rN   rR   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   )r4   r    r   rO   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r1   )r   r   requirer
   DistributionNotFound)r4   r    rO   s      r*   get_distributionzEnvironment.get_distribution   s`    ((.K	 HHT" ((.. 11 		s   A 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3   . . . 4xS	2 4 4 4%X.>%? %
 
:J1K 
/S /X6F-G /r)   r   )2email.messager   email.parserloggingrX   rv   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 % : I @ V V D A K  
		8	$    FT!# T!n0// 0/r)   