
    uPhW                      T   d dl Zd dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
mZmZmZmZmZmZ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 d d	lmZm Z m!Z!m"Z" d d
l#m$Z$ d dl%m&Z& d dl'm(Z( d dl)m*Z*m+Z+ ddl,m-Z-m.Z.m/Z/  G d dej`                  jb                        Z2 G d de      Z1y)    N)PathLike)	
CollectionDictIterableIteratorMappingOptionalSequenceUnioncast)Requirement)NormalizedNamecanonicalize_name)Version)parse)InvalidWheelUnsupportedWheel)BaseDistributionBaseEntryPointInfoPathWheel)normalize_path)get_requirement)TempDirectory)parse_wheelread_wheel_metadata_file   )BasePathget_dist_canonical_name*parse_name_and_version_from_info_directoryc            	           e Zd ZdZdeej                  ef   dej                  ddfdZe	de
j                  ded	edd fd
       Zdedeej                     fdZdedee   fdZdeedf   dej(                  fdZy)WheelDistributiona  An ``importlib.metadata.Distribution`` read from a wheel.

    Although ``importlib.metadata.PathDistribution`` accepts ``zipfile.Path``,
    its implementation is too "lazy" for pip's needs (we can't keep the ZipFile
    handle open for the entire lifetime of the distribution object).

    This implementation eagerly reads the entire metadata directory into the
    memory instead, and operates from that.
    filesinfo_locationreturnNc                      || _         || _        y N)_filesr$   )selfr#   r$   s      rC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\pip/_internal/metadata/importlib/_dists.py__init__zWheelDistribution.__init__5   s    
 *    zfnamelocationc           	         
 t        ||      \  
}
fd|j                         D        }|D ci c]  \  }}|t        ||       }}}t        j                  |
      }	 | ||	      S c c}}w )Nc              3      K   | ]B  }|j                   d       r,|t        j                  |j                  d d      d         f D yw)/r   N)
startswithpathlibPurePosixPathsplit).0r.   info_dirs     r*   	<genexpr>z1WheelDistribution.from_zipfile.<locals>.<genexpr>E   sK      
%(1~. 7((C);B)?@A%s   AA)r   namelistr   r5   r6   )clsr-   r.   r/   _pathsfullpathrelpathr#   r$   r9   s             @r*   from_zipfilezWheelDistribution.from_zipfile=   s     ""d+!

 &+
%*!' -b(;;%* 	 
  --hA5-((
s   A(pathc                     t        j                  t        |            | j                  v rt	        | j                        S t        |      r'   )r5   r6   strr(   iterFileNotFoundErrorr)   rB   s     r*   iterdirzWheelDistribution.iterdirQ   s7      T+t{{:$$%%r,   filenamec                 
   	 | j                   t        j                  |         }	 |j	                  d      }|S # t        $ r Y y w xY w# t
        $ r2}| j                  j                  }d| d| d| d}t        |      d }~ww xY w)Nzutf-8zError decoding metadata for z: z in z file)	r(   r5   r6   KeyErrordecodeUnicodeDecodeErrorr$   parentr   )r)   rI   datatextewheelerrors          r*   	read_textzWheelDistribution.read_textW   s    	;;w44X>?D	*;;w'D
   		 " 	*&&--E25'A3d8*ERE"5))	*s&   "8 A 	AA	B-A==BzPathLike[str]c                     t         r'   )NotImplementedErrorrG   s     r*   locate_filezWheelDistribution.locate_filed   s
     "!r,   )__name__
__module____qualname____doc__r   r5   r6   bytesr+   classmethodzipfileZipFilerD   rA   r   r   rH   r	   rT   r   PathrW    r,   r*   r"   r"   *   s    +w,,e34+ ,,+ 
	+ )OO) ) 	)
 
) )&&H &'2G2G)H &# (3- "c?&: ; " "r,   r"   c            	          e Zd Zdej                  j
                  dee   dee   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#jH                  jJ                  fdZ&de e   fdZ'dde(e
   de e)   fdZ*y) Distributiondistr$   installed_locationr%   Nc                 .    || _         || _        || _        y r'   )_dist_info_location_installed_location)r)   rd   r$   re   s       r*   r+   zDistribution.__init__k   s     
+#5 r,   	directoryc                     t        j                  |      }t        j                  j                  j                  |      } | |||j                        S r'   )r5   r`   	importlibmetadatarc   atrN   )r<   rj   r$   rd   s       r*   from_directoryzDistribution.from_directoryu   sA    Y/!!..11-@4(<(<==r,   metadata_contentsrI   project_namec                    t        j                  t        dd      j                        }|dz  }|j	                  |       t
        j                  j                  j                  |j                        } | ||j                  d       S )Nrm   T)kindglobally_managedMETADATA)
r5   r`   r   rB   write_bytesrl   rm   rc   rn   rN   )r<   rp   rI   rq   temp_dirmetadata_pathrd   s          r*   from_metadata_file_contentsz(Distribution.from_metadata_file_contents{   st     <<zDAFF
 !:-!!"34!!..11-2F2FG4--t44r,   rR   r.   c                 V   	 |j                         5 }t        j                  |||j                        }d d d         | |j                  t        j                  |j                              S # 1 sw Y   :xY w# t        j
                  $ r}t        |j                  |      |d }~ww xY wr'   )

as_zipfiler"   rA   r/   r^   
BadZipFiler   r$   r5   r6   )r<   rR   r.   r-   rd   rQ   s         r*   
from_wheelzDistribution.from_wheel   s    	<!!#r(55b$O $ 4++W-B-B5>>-RSS	 $#!! 	<u~~t4!;	<s-   A9 "A-A9 -A62A9 9B(B##B(c                 Z    | j                   y t        | j                   j                        S r'   )rh   rD   rN   r)   s    r*   r/   zDistribution.location   s(    &4&&--..r,   c                 F    | j                   y t        | j                         S r'   )rh   rD   r   s    r*   r$   zDistribution.info_location   s"    &4&&''r,   c                 X    | j                   y t        t        | j                               S r'   )ri   r   rD   r   s    r*   re   zDistribution.installed_location   s'    ##+c$":":;<<r,   c                 ,    t        | j                        S r'   )r   rg   r   s    r*   canonical_namezDistribution.canonical_name   s    &tzz22r,   c                     t        | j                        d   x}rt        |      S t        | j                  j                        S )Nr   )r    rg   parse_versionversion)r)   r   s     r*   r   zDistribution.version   s;    @LQOO7O ))TZZ//00r,   c                 .    | j                   j                  S r'   )rg   r   r   s    r*   raw_versionzDistribution.raw_version   s    zz!!!r,   rB   c                 N    | j                   j                  t        |            d uS r'   )rg   rT   rD   rG   s     r*   is_filezDistribution.is_file   s     zz##CI.d::r,   c              #      K   t        | j                  t        j                        sy | j                  j	                  d      j                         D ]  }|j                    y w)Nscripts)
isinstancerh   r5   r`   joinpathrH   r.   )r)   childs     r*   iter_distutils_script_namesz(Distribution.iter_distutils_script_names   sN      $--w||<((11)<DDFE** Gs   A#A%c                 h    | j                   j                  t        |            }|t        |      |S r'   )rg   rT   rD   rF   )r)   rB   contents      r*   rT   zDistribution.read_text   s/    **&&s4y1?#D))r,   c                 .    | j                   j                  S r'   )rg   entry_pointsr   s    r*   iter_entry_pointszDistribution.iter_entry_points   s    zz&&&r,   c                 r    t        t        j                  j                  | j                  j
                        S r'   )r   emailmessageMessagerg   rm   r   s    r*   _metadata_implzDistribution._metadata_impl   s%     EMM))4::+>+>??r,   c                 r    | j                   j                  dg       D cg c]  }t        |       c}S c c}w )NzProvides-Extra)rm   get_allr   )r)   extras     r*   iter_provided_extrasz!Distribution.iter_provided_extras   s@     ../?D
D e$D
 	
 
s   4extrasc              #   J  K   |D cg c]  }d|i }}| j                   j                  dg       D ]i  }t        |j                               j                  s -|s"j                  j                  ddi      r Qt        fd|D              sf k y c c}w w)Nr   zRequires-Dist c              3   T   K   | ]  }j                   j                  |       ! y wr'   )markerevaluate)r8   contextreqs     r*   r:   z1Distribution.iter_dependencies.<locals>.<genexpr>   s!     JgSZZ((1s   %()rm   r   r   stripr   r   any)r)   r   rQ   contexts
req_stringr   s        @r*   iter_dependencieszDistribution.iter_dependencies   s     DJ-KFqwlF-K--//DJ "*"2"2"45C::	

 3 3WbM B	JJJ	 E .Ls   B#BBB#B#)ra   )+rX   rY   rZ   rl   rm   rc   r	   r   r+   r]   rD   r   ro   r\   ry   r   r}   propertyr/   r$   re   r   r   r   r   r   r   boolr   r   r   rT   r   r   r   r   r   r   r   r   r   r   r   ra   r,   r*   rc   rc   j   s	   6  --6  )6 %X.	6
 
6 >s >/? > >
 5 5 5 	5
 
5 5  Tu TC T4D T T /(3- / /
 (x} ( (
 =HSM = =
 3 3 3 1 1 1
 "S " ";H ; ;Xc] h 3 '8N#; '@ 5 5 @
h~&> 

3 +AV r,   rc   )3email.messager   importlib.metadatarl   r5   r^   osr   typingr   r   r   r   r   r	   r
   r   r   "pip._vendor.packaging.requirementsr   pip._vendor.packaging.utilsr   r   pip._vendor.packaging.versionr   r   r   pip._internal.exceptionsr   r   pip._internal.metadata.baser   r   r   r   pip._internal.utils.miscr   pip._internal.utils.packagingr   pip._internal.utils.temp_dirr   pip._internal.utils.wheelr   r   _compatr   r   r    rm   rc   r"   ra   r,   r*   <module>r      s~        
 
 
 ; I 1 @ C  4 9 6 K ="	**77 ="@z# zr,   