
    q"h˫                        S SK Jr  S SKrS SKrS SKrS SKJr  S SKrS SKrS SK	r	S SK
r
S SK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  SSKJrJrJrJrJr  SSKJr  SSKJrJrJr  SS	K J!r!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*  SS
K+J,r,J-r-  \	R\                  " \/5      r0Sq1\2" \S5      (       a  Sr3O8\Rh                  Rk                  S5      (       a  Sr3O\Rh                  S:X  a  Sr3OSr3\Rl                  " S5      r7\7(       d  S\Rp                  SS -  r7S\7-   r9\3\7-   r:\*" 5       Rw                  SS5      Rw                  SS5      r<\Rl                  " S5      r=\=(       a;  \=Rk                  S5      (       a%  \=Rw                  SS5      R}                  S5      S    r=OS r?\?" 5       r=C?\R                  " S\R                  \R                  -  5      rC\R                  " S\R                  \R                  -  5      rD\R                  " S5      rE\R                  " S5      rFS rGS!rH\
R                  S":X  a  S# rJOS$ rJ\Rp                  S    S%:  a  S SKKrKO
SrKS SKLrMS SKNrMS& rOS' rP " S( S)\Q5      rR\R" 5       rS " S* S+\Q5      rTS, rUS- rV\V" 5       rWCVS/S. jrXg)0    )unicode_literalsN)message_from_file   )__version__DistlibException)	sysconfigZipFilefsdecode	text_typefilter)InstalledDistribution)MetadataWHEEL_METADATA_FILENAMELEGACY_METADATA_FILENAME)
FileOperatorconvert_path	CSVReader	CSVWriterCachecached_propertyget_cache_baseread_exportstempdirget_platform)NormalizedVersionUnsupportedVersionErrorpypy_version_infoppjavajycliipcppy_version_nodotz%s%s   py-_.SOABIzcpython-c                     S[         /n [        R                  " S5      (       a  U R                  S5        [        S:X  a  [
        R                  S S nUS:  a}  [        R                  " S5      nUc  SnU(       a  U R                  S5        US	:  aD  [        R                  " S
5      nUS:X  d  Uc%  [
        R                  S:X  a  U R                  S5        SR                  U 5      $ )Nr#   Py_DEBUGdr%   )      WITH_PYMALLOCTm)r.   r.   Py_UNICODE_SIZE   i u )	
VER_SUFFIXr   get_config_varappend
IMP_PREFIXsysversion_info
maxunicodejoin)partsviwpmuss       K/var/www/html/env/lib/python3.13/site-packages/pip/_vendor/distlib/wheel.py_derive_abirC   :   s    z"##J//LL!!"1%BF{..?;CLL%;"112CDBQw2:#..H2LS)wwu~    zz
(?P<nm>[^-]+)
-(?P<vn>\d+[^-]*)
(-(?P<bn>\d+[^-]*))?
-(?P<py>\w+\d+(\.\w+\d+)*)
-(?P<bi>\w+)
-(?P<ar>\w+(\.\w+)*)
\.whl$
z7
(?P<nm>[^-]+)
-(?P<vn>\d+[^-]*)
(-(?P<bn>\d+[^-]*))?$
s   \s*#![^\r\n]*s   ^(\s*#!("[^"]+"|\S+))\s+(.*)$s   #!pythons	   #!pythonw/c                     U $ N os    rB   <lambda>rK   f   s    rD   c                 B    U R                  [        R                  S5      $ )NrE   )replaceosseprI   s    rB   rK   rK   h   s    2663/rD   r.   c                      [         (       a(  [         R                  " 5        V s/ s H  o S   PM	     sn $ [        R                  R                  $ s  sn f )Nr   )impget_suffixes	importlib	machineryEXTENSION_SUFFIXES)ss    rB   _get_suffixesrW   r   s@    
s!..010!011""555 2s   Ac                     [         (       a  [         R                  " X5      $ [        R                  R	                  X5      n[        R                  R                  U5      nU[        R                  U '   UR                  R                  U5        U$ rG   )
rQ   load_dynamicrS   utilspec_from_file_locationmodule_from_specr:   modulesloaderexec_module)namepathspecmodules       rB   _load_dynamicrd   y   se    
s++~~55dA006"D'rD   c                   6    \ rS rSrS rS rS rS	S jrS rSr	g)
Mounter   c                      0 U l         0 U l        g rG   impure_wheelslibsselfs    rB   __init__Mounter.__init__   s    	rD   c                 V    X R                   U'   U R                  R                  U5        g rG   )rj   rk   update)rm   pathname
extensionss      rB   addMounter.add   s"    '18$		$rD   c                     U R                   R                  U5      nU H#  u  p4X0R                  ;   d  M  U R                  U	 M%     g rG   )rj   poprk   )rm   rr   rs   kvs        rB   removeMounter.remove   s8    ''++H5
DAII~IIaL rD   Nc                 0    XR                   ;   a  U nU$ S nU$ rG   )rk   )rm   fullnamera   results       rB   find_moduleMounter.find_module   s$    yy F  FrD   c                 $   U[         R                  ;   a  [         R                  U   nU$ XR                  ;  a  [        SU-  5      e[	        XR                  U   5      nXl        UR                  SS5      n[        U5      S:  a
  US   Ul        U$ )Nzunable to find extension for %sr)   r   r   )	r:   r]   rk   ImportErrorrd   
__loader__rsplitlen__package__)rm   r}   r~   r>   s       rB   load_moduleMounter.load_module   s    s{{"[[*F  yy(!"Ch"NOO"8YYx-@AF $OOC+E5zA~%*1X"rD   ri   rG   )
__name__
__module____qualname____firstlineno__rn   rt   rz   r   r   __static_attributes__rH   rD   rB   rf   rf      s    %!rD   rf   c                       \ rS rSrSrSrSrSS jr\S 5       r	\S 5       r
\S	 5       r\S
 5       rS r\S 5       rS rSS jrS rS rS rS S jrS rS rS rS rS rS rS!S jrS rS rSS jrSr g)"Wheel   z8
Class to build and install from Wheel files (PEP 427).
)r   r   sha256Nc                    X l         X0l        SU l        [        /U l        S/U l        S/U l        [        R                  " 5       U l	        Uc   SU l
        SU l        U R                  U l        g[        R                  U5      nU(       aQ  UR!                  S5      nUS   U l
        US   R#                  S	S
5      U l        US   U l        U R                  U l        g[        R$                  R'                  U5      u  pa[(        R                  U5      nU(       d  [+        SU-  5      eU(       a$  [        R$                  R-                  U5      U l	        Xl        UR!                  S5      nUS   U l
        US   U l        US   U l        US   R'                  S5      U l        US   R'                  S5      U l        US   R'                  S5      U l        g)z2
Initialise an instance using a (valid) filename.
r5   noneanyNdummyz0.1nmvnr(   r'   bnzInvalid name or filename: %rr&   r)   biar)signshould_verifybuildverPYVERpyverabiarchrN   getcwddirnamer`   versionfilename	_filenameNAME_VERSION_REmatch	groupdictrM   ra   splitFILENAME_REr   abspath)rm   r   r   verifyr1   infor   s          rB   rn   Wheel.__init__   s    	#W
8G	yy{DI DL!]]DN%%h/A{{2 J	#Dz11#s; $T
!%$&GGMM($;!%%h/* ,:<D,E F F#%77??7#;DL!){{2 J	#Dz $T
!$Z--c2
:++C0 J,,S1	rD   c                 h   U R                   (       a  SU R                   -   nOSnSR                  U R                  5      nSR                  U R                  5      nSR                  U R                  5      nU R
                  R                  SS5      nU R                  < SU< U< SU< SU< SU< S3$ )z:
Build and return a filename from the various components.
r'   r5   r)   r(   .whl)r   r=   r   r   r   r   rM   r`   )rm   r   r   r   r   r   s         rB   r   Wheel.filename   s    
 ==T]]*HH$hhtxx xx		",,&&sC0)-GXucSWXXrD   c                     [         R                  R                  U R                  U R                  5      n[         R                  R                  U5      $ rG   )rN   ra   r=   r   r   isfile)rm   ra   s     rB   existsWheel.exists   s1    ww||DLL$--8ww~~d##rD   c              #      #    U R                    H/  nU R                   H  nU R                   H	  nXU4v   M     M     M1     g 7frG   )r   r   r   )rm   r   r   r   s       rB   tags
Wheel.tags   s:     ZZExx IIDd** &    s   AAc                    [         R                  R                  U R                  U R                  5      nU R
                  < SU R                  < 3nSU-  n[        R                  " S5      n[        US5       nU R                  U5        [        [        /nS nU HX  n [        R                  " X85      n	UR                  U	5       n
U" U
5      n[        US9nU(       a   S S S 5          O S S S 5        MZ     U(       d  [#        SSR                  U5      -  5      e S S S 5        U$ ! , (       d  f       M  = f! [          a     M  f = f! , (       d  f       W$ = f)Nr'   %s.dist-infoutf-8r)fileobjz8Invalid wheel, because metadata is missing: looked in %sz, )rN   ra   r=   r   r   r`   r   codecs	getreaderr	   get_wheel_metadatar   r   	posixpathopenr   KeyError
ValueError)rm   rr   name_verinfo_dirwrapperzffnsr~   fnmetadata_filenamebfwfs               rB   metadataWheel.metadata   s8   77<<dmm<"ii6!H,""7+Xs#r##B' +,DECF(1x(D%!23r$R[!)"!5!!	 43 " 43    "9;?99S>"J K K + $0  43
   ' $#0 s`   9%E	'D8D& D8(E	+D83(E	&
D50D83E	5D88
EE	EE		
Ec                 .   U R                   < SU R                  < 3nSU-  n[        R                  " US5      nUR	                  U5       n[
        R                  " S5      " U5      n[        U5      nS S S 5        [        W5      $ ! , (       d  f       N= f)Nr'   r   WHEELr   )	r`   r   r   r=   r   r   r   r   dict)rm   r   r   r   r   r   r   messages           rB   r   Wheel.get_wheel_metadata  sw    "ii6!H,%NN8W=WW&'2!!'*2.B'+G ( G} ('s   (B
Bc                     [         R                  R                  U R                  U R                  5      n[        US5       nU R                  U5      nS S S 5        U$ ! , (       d  f       W$ = f)Nr   )rN   ra   r=   r   r   r	   r   )rm   rr   r   r~   s       rB   r   
Wheel.info#  sR    77<<dmm<Xs#r,,R0F $ $#s   A
A,c                    [         R                  U5      nU(       ax  UR                  5       nUS U XS  pTSUR                  5       ;   a  [        nO[
        n[        R                  U5      nU(       a  SUR                  5       S   -   nOSnXg-   nXE-   nU$ UR                  S5      nUR                  S5      n	US:  d  X:  a  Sn
OXUS-    S	:X  a  S	n
OSn
[
        U
-   U-   nU$ )
Ns   pythonw    rD         
r   r%   s   
)	
SHEBANG_REr   endlowerSHEBANG_PYTHONWSHEBANG_PYTHONSHEBANG_DETAIL_REgroupsfind)rm   datar1   r   shebangdata_after_shebangshebang_pythonargscrlfterms              rB   process_shebangWheel.process_shebang*  s    T"%%'C*.t*d4j'W]]_,!0!/!''0Aahhjn,$+G/D  5!B5!BAv26?g-"D D!D(4/DrD   c                    Uc  U R                   n [        [        U5      nU" U5      R                  5       n[        R                  " U5      R                  S5      R                  S5      nX$4$ ! [         a    [	        SU-  5      ef = f)NzUnsupported hash algorithm: %r   =ascii)
	hash_kindgetattrhashlibAttributeErrorr   digestbase64urlsafe_b64encoderstripdecode)rm   r   r   hasherr~   s        rB   get_hashWheel.get_hashH  s    I	QWi0F $$&))&188>EEgN  	  	Q"#Ci#OPP	Qs   A. .Bc                     [        U5      nUR                  USS45        [        U5       nU H  nUR                  U5        M     S S S 5        g ! , (       d  f       g = fNr5   )listr8   r   writerow)rm   recordsrecord_patharchive_record_pathwriterrows         rB   write_recordWheel.write_recordS  sK    w-+R45{#v$  $##s   A
Ac                    / nUu  pVU Hp  u  px[        US5       n	U	R                  5       n
S S S 5        SU R                  W
5      -  n[        R                  R                  U5      nUR                  X{U45        Mr     [        R                  R                  US5      n[        [        R                  R                  US5      5      nU R                  XHU5        UR                  Xx45        g ! , (       d  f       N= f)Nrbz%s=%sRECORD)
r   readr   rN   ra   getsizer8   r=   to_posixr  )rm   r   libdirarchive_pathsr  distinfor   appfr   r   sizes                rB   write_recordsWheel.write_recordsZ  s    !"EBa!vvx t}}T22F77??1%DNNB-. # GGLL8,bggll8X67'b)bW% s   C++
C9	c                     [        US[        R                  5       nU H,  u  pE[        R	                  SXT5        UR                  XT5        M.     S S S 5        g ! , (       d  f       g = f)NwzWrote %s to %s in wheel)r	   zipfileZIP_DEFLATEDloggerdebugwrite)rm   rr   r  r   r  r  s         rB   	build_zipWheel.build_zipj  sH    XsG$8$89R&6> ' :99s   3A
A&c           
      
  ^ Uc  0 n[        [        U4S jS5      5      S   nUS:X  a  Sn[        /n[        /n[        /nOSn[
        /nS/nS	/nUR                  S
U5      U l        UR                  SU5      U l        UR                  SU5      U l	        TU   n	U R                  < SU R                  < 3n
SU
-  nSU
-  n/ nS GHf  nUT;  a  M  TU   n[        R                  R                  U5      (       d  M7  [        R                  " U5       GH  u  nnnU GH  n[!        [        R                  R#                  UU5      5      n[        R                  R%                  UU5      n['        [        R                  R#                  XU5      5      nUR)                  UU45        US:X  d  M  UR+                  S5      (       a  M  [-        US5       nUR/                  5       nSSS5        U R1                  W5      n[-        US5       nUR3                  U5        SSS5        GM     GM     GMi     U	nSn[        R                  " U5       H  u  nnnUU:X  ai  [5        U5       HL  u  nn[!        U5      nUR+                  S5      (       d  M)  [        R                  R#                  UU5      nUU	   O   U(       d   S5       eU H  n[!        U5      R+                  S5      (       a  M$  [        R                  R#                  UU5      n['        [        R                  R%                  UU5      5      nUR)                  UU45        M     M     [        R6                  " U5      nU Hp  nUS;  d  M  [!        [        R                  R#                  UU5      5      n['        [        R                  R#                  UU5      5      nUR)                  UU45        Mr     SU=(       d    U R8                  -  S[:        -  SU-  /nU R<                   H$  u  nnnUR)                  SU< SU< SU< 35        M&     [        R                  R#                  US5      n[-        US5       nUR3                  SR#                  U5      5        SSS5        ['        [        R                  R#                  US5      5      nUR)                  UU45        S  n [?        UU S!9nU RA                  UU4X5        [        R                  R#                  U RB                  U RD                  5      n!U RG                  U!U5        U!$ ! , (       d  f       GNN= f! , (       d  f       GM/  = f! , (       d  f       N= f)"zq
Build a wheel from files in specified paths, and use any specified tags
when determining the name of the wheel.
Nc                    > U T;   $ rG   rH   )rJ   pathss    rB   rK   Wheel.build.<locals>.<lambda>x  s	    qEzrD   )purelibplatlibr   r&  falsetruer   r   r   r   r   r'   %s.datar   )r   headersscriptsr+  .exer
  wb
.dist-infoz(.dist-info directory expected, not found)z.pycz.pyo)r  	INSTALLERSHAREDr   zWheel-Version: %d.%dzGenerator: distlib %szRoot-Is-Purelib: %szTag: r   r  
c                 J    U S   nUR                  S5      nSU;   a  US-  nX!4$ )Nr   rE   r.  i'  )count)tr  ns      rB   sorterWheel.build.<locals>.sorter  s0    1BAr!U
7NrD   )key)$r   r   IMPVERABIARCHr   getr   r   r   r`   r   rN   ra   isdirwalkr
   r=   relpathr  r8   endswithr   r  r   r  	enumeratelistdirwheel_versionr   r   sortedr  r   r   r  )"rm   r#  r   rC  libkeyis_puredefault_pyverdefault_abidefault_archr  r   data_dirr   r  r8  ra   rootdirsfilesr   r  rpr  r  r   r  idnwheel_metadatar   r   r   r6  rr   s"    `                                rB   buildWheel.buildp  sW   
 <Df13IJKANYG#HM%K 6LG"GM!(K!7LXXg}5
88E;/HHV\2	v"ii6x'!H, 2C%:Dww}}T"")+%D$#$RWW\\$%;<WW__Q5%bggll8"&EF%,,b!W5)+AJJv4F4F!%a!'(vvx "/#'#7#7#=D!%a! ! "/ $ *7 2( !#D$t| 't_EAr!"B{{<00#%77<<b#9 G -  K!KKxB<(()9::GGLLr*bggooa67$$b!W-  "/* 

8$BCCRWW\\(B78bggll8R89$$b!W-	  #m&It7I7IJ#k1!G+

 !%		E3!!UC"FG !*GGLL7+!S\QGGDIIn-. bggll8W56b!W%	 }&9 	Hh/G77<<dmm<x/M "/ "/V \s$   T)	T;	!U)
T8;
U
Uc                 $    UR                  S5      $ )zT
Determine whether an archive entry should be skipped when verifying
or installing.
)rE   z/RECORD.jws)r@  )rm   arcnames     rB   
skip_entryWheel.skip_entry  s      455rD   c           	      >   UR                   nUR                  S5      nUR                  SS5      nUR                  SS5      n[        R                  R	                  U R
                  U R                  5      nU R                  < SU R                  < 3n	SU	-  n
SU	-  n[        R                  " U[        5      n[        R                  " US5      n[        R                  " US	5      n[        R                  " S
5      n[        US5       nUR                  U5       nU" U5      n[        U5      nSSS5        WS   R!                  SS5      n[#        U Vs/ s H  n[%        U5      PM     sn5      nUU R&                  :w  a  U(       a  U" U R&                  U5        US   S:X  a  US   nOUS   n0 nUR                  U5       n[)        US9 nU H  nUS   nUUU'   M     SSS5        SSS5        [        R                  " U
S5      n[        R                  " US5      n[        R                  " U
SS5      n[+        US9n SU l        [.        R0                  (       + n!/ n"[2        R4                  " 5       n#U#Ul        SUl         UR;                  5        GH  n$U$R                  n%[=        U%[>        5      (       a  U%n&OU%RA                  S
5      n&U RC                  U&5      (       a  MQ  UU&   nUS   (       a*  [E        U$RF                  5      US   :w  a  [I        SU&-  5      eUS   (       ak  US   R!                  SS5      u  n'n(UR                  U%5       nURK                  5       n)SSS5        U RM                  W)U'5      u  n*n+U+U(:w  a  [I        SU%-  5      eU(       a1  U&RO                  UU45      (       a  [P        RS                  SU&5        GM7  U&RO                  U5      =(       a    U&RU                  S5      (       + n,U&RO                  U5      (       aC  U&R!                  S S5      u  n*n-n.[        R                  R	                  UU-   [W        U.5      5      n/O3U&X4;   a  GM  [        R                  R	                  U[W        U&5      5      n/U,(       Gd   UR                  U%5       nU RY                  UU/5        SSS5        [        R                  S!:X  a'  [        RZ                  " U/U$R\                  S"-	  S#-  5        U"R_                  U/5        U(       dY  US   (       aO  [        U/S$5       nURK                  5       n)U RM                  U)W'5      u  n*n0U0W+:w  a  [I        S%U/-  5      e SSS5        U!(       a>  U/RU                  S&5      (       a%   U Ra                  U/US'9n1U"R_                  U15        GM  GM  GM  [        R                  Rg                  [W        U%5      5      n2[        R                  R	                  U#U25      n3UR                  U%5       nU RY                  UU35        SSS5        [        R                  R!                  U/5      u  n4n2U4Ul        URi                  U25      n5U Rk                  U55        U"Rm                  U55        GM     U(       a  [P        RS                  S*5        Sn6GOSn7U Rn                  S   nUS+:X  a  [        R                  " US,5      n8 UR                  U85       n[q        U5      n9SSS5        0 n7S- H  n:S.U:-  n;U;W9;   d  M  0 =U7S/U:-  '   n<U9U;   Rs                  5        Ha  n=U=Rt                  < S0U=Rv                  < 3n>U=Rx                  (       a!  U>S1S2R	                  U=Rx                  5      -  -  n>U>U<U=R                  '   Mc     M     O` UR                  U5       nU" U5      n[z        R|                  " U5      R                  S45      n7U7(       a  U7R                  S55      n7SSS5        U7(       Ga  U7R                  S70 5      n?U7R                  S80 5      n@U?(       d  W@(       a  UR                  SS5      nA[        R                  R                  UA5      (       d  [        S95      eWAUl        U?R                  5        H1  u  n;n=U;< S:U=< 3nBURi                  UB5      n5U Rk                  U55        M3     W@(       aJ  S;S0nCW@R                  5        H2  u  n;n=U;< S:U=< 3nBURi                  UBWC5      n5U Rk                  U55        M4     [        R                  R	                  UU5      n[        U5      n6[        U5      nUS	 US	 UUS<'   U6R                  X5      nU(       a  U"R_                  U5        U6R                  U"US=   U5        U6[        R                  " U#5        sSSS5        $ ! , (       d  f       GN= fs  snf ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNM= f! , (       d  f       GN= f! [b         a    [P        Re                  S(SS)9   GM  f = f! , (       d  f       GN/= f! , (       d  f       GNl= f! [b         a    [P        Re                  S35         GNf = f! , (       d  f       GN= f! [b         a    [P        Re                  S65         GNf = f! [b         a'    [P        R                  S>5        U R                  5         e f = f! [        R                  " U#5        f = f! , (       d  f       g= f)?a  
Install a wheel to the specified paths. If kwarg ``warner`` is
specified, it should be a callable, which will be called with two
tuples indicating the wheel version of this software and the wheel
version in the file, if there is a discrepancy in the versions.
This can be used to issue any warnings to raise any exceptions.
If kwarg ``lib_only`` is True, only the purelib/platlib files are
installed, and the headers, scripts, data and dist-info metadata are
not written. If kwarg ``bytecode_hashed_invalidation`` is True, written
bytecode will try to use file-hash based invalidation (PEP-552) on
supported interpreter versions (CPython 3.7+).

The return value is a :class:`InstalledDistribution` instance unless
``options.lib_only`` is True, in which case the return value is ``None``.
warnerlib_onlyFbytecode_hashed_invalidationr'   r)  r   r   r  r   r   NzWheel-Versionr)   r   zRoot-Is-Purelibr(  r%  r&  streamr   r5   r+  )dry_runTr%   size mismatch for %s=digest mismatch for %szlib_only: skipping %sr,  rE   posix   i  r
  zdigest mismatch on write for %sz.py)hashed_invalidationzByte-compilation failed)exc_infozlib_only: returning Nonez1.0zentry_points.txt)consoleguiz
%s_scriptszwrap_%s:z [%s],zAUnable to read legacy script metadata, so cannot generate scriptsrs   zpython.commandsz8Unable to read JSON metadata, so cannot generate scriptswrap_consolewrap_guizValid script path not specifiedz = rg  libprefixzinstallation failed.)Jr^  r<  rN   ra   r=   r   r   r`   r   r   r   r   r   r	   r   r   r   tupleintrC  r   r   recordr:   dont_write_bytecodetempfilemkdtemp
source_dir
target_dirinfolist
isinstancer   r   rV  str	file_sizer   r  r   
startswithr  r  r@  r   copy_streamchmodexternal_attrr8   byte_compile	Exceptionwarningbasenamemakeset_executable_modeextendr   r   valuesrm  suffixflagsjsonloadr=  r   itemsr   r   write_shared_locationswrite_installed_filesshutilrmtree	exceptionrollback)Drm   r#  makerkwargsr^  rY  rZ  bc_hashed_invalidationrr   r   rJ  r   metadata_namewheel_metadata_namerecord_namer   r   bwfr   r   wvrO  file_versionr  r  r   readerr  r  data_pfxinfo_pfx
script_pfxfileopbcoutfilesworkdirzinforU  	u_arcnamekindvaluer   r(   r   	is_scriptwhererN  outfile	newdigestpycr   worknamerP  	filenamesdistcommandsepepdatar8  rx   r-   ry   rV   console_scriptsgui_scripts
script_dirscriptoptionssD                                                                       rB   installWheel.install  s^	   " --H%::j%0!',JE!R77<<dmm<"ii6x'!H,!x1IJ'nnXw?nnXx8""7+Xs#r,-S\+B/ . )//Q7B "!5"Q#a&"!56L 2 22t))<8()V3y)y)G%b)V%F%(
  & * & !~~h3H ~~h3H")R@J "'2F FM,,,BH &&(G  'E#E]'[[]E#nnG!'955$+	$+NN7$;	y11 !),C1v#eoo"6#a&"@. 046?0@ A A1v&)!fll3&:eWWW-#%779D .$(MM$$=	6!U?"2 48:A4B #C C  I$8$8(H9M$N$N%<iH !*!5!5j!A!d)J\J\]cJdFdI ++H55'0sA'>5""$'',,uU|\"=M"N %)<(JJ$"$'',,v|I7N"O$WWW-"..r7; . 77g-HHWu/B/Bb/HE.QR 0&3q6!%gt!4')wwy/3}}T4/H9#,#6*: <@BI<J +K %K $7 "5 '"2"25"9"9Y&,&9&9'Wm&9&n ( 4 #:2  WW--l7.CD#%77<<#<WWW-"..r8< . "$w!7B+-($)JJrN	229= 	2Q +T LL!;<D  $H#'99_#=L#u,&^^H6HI6!#)5c): "-')H'9$03$6#$;DF$FHY_$=-3AY-=-=-?78xx,J+,77,-388AGG;L1L,LA45!&&		 .@	 (:F!#!73%,S\+/99R=+<+<\+J#+/7||<M/NH	 "8  *2,,~r*J&.ll:r&B*k).9b)AJ#%77==#<#<&0 2= '> !>/9E,(7(=(=(?167);,1JJv,>	 & : :9 E )@
  ++0$-,7,=,=,?DAq:;Q-?F05

670KI$*$>$>y$I -@
 VX6A03D !KEi(i(#)E%L33ECA * ..xx'R g&M $#-- "6 *) &%R .-* .- "5!4 $- Y !'/HSW XY .-0 "-  ) 6"NN ,5 66 "8!7
  ) F"NN ,E FFN    !78!
 g&M $#s  lf&.&lf8
)Al
gf=g'Bl Cj?g!D<j?g3-A1j?:h%j??!h A"j?h=B7j?i!i*i!Bi!j?jAj%j-Fj?l&
f5	0l=
gg
g	l!
g0+j?3
h=j?
hj?h:5j?9h::j?=
ij?
i	i!!j j?jj?
j	jj?jj<8j?;j<<j??1k00k33ll
lc                     [         cQ  [        R                  R                  [	        5       [        S5      S[        R                  S S -  5      n[        U5      q [         $ )Nzdylib-cachez%s.%sr%   )	cacherN   ra   r=   r   rx  r:   r;   r   )rm   bases     rB   _get_dylib_cacheWheel._get_dylib_cache  sH    =77<< 0#m2DgPSP`P`acbcPdFdeD$KErD   c           	      :   [         R                  R                  U R                  U R                  5      nU R
                  < SU R                  < 3nSU-  n[        R                  " US5      n[        R                  " S5      n/ n[        US5       n UR                  U5       nU" U5      n	[        R                  " U	5      n
U R                  5       nUR                  U R                  SS9n[         R                  R                  UR                   U5      n[         R                  R#                  U5      (       d  [         R$                  " U5        U
R'                  5        H  u  p[         R                  R                  U[)        U5      5      n[         R                  R+                  U5      (       d  SnOr[         R,                  " U5      R.                  n[0        R0                  R3                  U5      nUR5                  U5      n[0        R0                  " UR6                  6 nUU:  nU(       a  UR9                  X5        UR;                  UU45        M     S S S 5        S S S 5        U$ ! , (       d  f       N= f! [<         a     N'f = f! , (       d  f       U$ = f)	Nr'   r   
EXTENSIONSr   r   F)use_abspathT)rN   ra   r=   r   r   r`   r   r   r   r   r	   r   r  r  r  prefix_to_dirr  r=  makedirsr  r   r   statst_mtimedatetimefromtimestampgetinfo	date_timeextractr8   r   )rm   rr   r   r   rU  r   r~   r   r   r   rs   r  rm  
cache_baser`   r?  destr  	file_timer   
wheel_times                        rB   _get_extensionsWheel._get_extensions  s   77<<dmm<"ii6!H,..<8""7+Xs#rWWW% B!%2J 113E"00E0RF!#ejj&!AJ77==44J/)3)9)9);!ww||JW8MN!ww~~d33&*G(*(>(>I(0(9(9(G(G	(RI#%::g#6D)1):):DNN)KJ&09&<G"JJw;tTl3 *< & $2 / &%*  / $#2 sO   JI;%F3I*I;*
I8	4I;7J8I;;
JJJJ
Jc                     [        U 5      $ )z=
Determine if a wheel is compatible with the running system.
)is_compatiblerl   s    rB   r  Wheel.is_compatible  s     T""rD   c                     g)z@
Determine if a wheel is asserted as mountable by its metadata.
TrH   rl   s    rB   is_mountableWheel.is_mountable  s     rD   c                    [         R                  R                  [         R                  R                  U R                  U R
                  5      5      nU R                  5       (       d  SU-  n[        U5      eU R                  5       (       d  SU-  n[        U5      eU[        R                  ;   a  [        R                  SU5        g U(       a   [        R                  R                  U5        O [        R                  R                  SU5        U R                  5       nU(       aQ  [        [        R                   ;  a#  [        R                   R                  [        5        [        R#                  X$5        g g )Nz)Wheel %s not compatible with this Python.z$Wheel %s is marked as not mountable.z%s already in pathr   )rN   ra   r   r=   r   r   r  r   r  r:   r  r  r8   insertr  _hook	meta_pathrt   )rm   r8   rr   msgrs   s        rB   mountWheel.mount  s    77??277<<dmm#LM!!##=HC"3''  ""88CC"3''sxxLL-x8)8,--/J-MM((/		(/ rD   c                 0   [         R                  R                  [         R                  R                  U R                  U R
                  5      5      nU[        R                  ;  a  [        R                  SU5        g [        R                  R                  U5        U[        R                  ;   a  [        R                  U5        [        R                  (       d=  [        [        R                  ;   a$  [        R                  R                  [        5        g g g )Nz%s not in path)rN   ra   r   r=   r   r   r:   r  r  rz   r  rj   r  )rm   rr   s     rB   unmountWheel.unmount)  s    77??277<<dmm#LM388#LL)84HHOOH%5...X&&&CMM)MM((/ * 'rD   c                 b   [         R                  R                  U R                  U R                  5      nU R
                  < SU R                  < 3nSU-  n[        R                  " US5      n[        R                  " US5      n[        R                  " S5      n[        US5       nUR                  U5       nU" U5      n	[        U	5        S S S 5        0 n
UR                  U5       n[        US9 nU H  nUS   nXU'   M     S S S 5        S S S 5        UR                  5        GH&  nUR                  n[        U[         5      (       a  UnOUR#                  S5      nUR%                  S	5      nS
U;   a  ['        SU-  5      eU R)                  U5      (       a  Mv  U
U   nUS   (       a*  [+        UR,                  5      US   :w  a  ['        SU-  5      eUS   (       d  M  US   R%                  SS5      u  nnUR                  U5       nUR/                  5       nS S S 5        U R1                  WU5      u  nnUU:w  d  GM  ['        SU-  5      e   S S S 5        g ! , (       d  f       GN= f! , (       d  f       GNm= f! , (       d  f       GNw= f! , (       d  f       N{= f! , (       d  f       g = f)Nr'   r   r   r  r   r   r\  r   rE   ..invalid entry in wheel: %rr%   r_  r   r`  ra  )rN   ra   r=   r   r   r`   r   r   r   r   r	   r   r   r   rv  rw  r   r   r   r   rV  rx  ry  r  r   )rm   rr   r   r   r  r  r   r   r  r   r  r   r  r  r  r  rU  r  r  r  r   r(   r   s                          rB   r   Wheel.verify5  sK   77<<dmm<"ii6!H, (nnXw?nnXx8""7+Xs#r,-S\!"% . G%b)V%F%(
  & * & ..gy11 'I 'w 7I OOC(19* ,79B,C D D ??9--i(q6c%//2c!f<* ,02;,< = =q66"%a&,,sA"6KD%)R!wwy * $dD 9IAv. 046=0> ? ?5 ' $#-- *) &%8 *)K $#sy   'J 9IJ (
I=2I+I=CJ  )J 	J!J  J 
I(	#J +
I:5I==
J	J 
JJ  
J.c           	      `   S nS n[         R                  R                  U R                  U R                  5      nU R
                  < SU R                  < 3nSU-  n[        R                  " US5      n	[        5        n
[        US5       n0 nUR                  5        H  nUR                  n[        U[        5      (       a  UnOUR                  S5      nX:X  a  M?  SU;   a  [        S	U-  5      eUR                  X5        [         R                  R                  U
[!        U5      5      nUX'   M     S
S
S
5        U" WU5      u  nnU" U40 UD6nU(       Ga*  U" X5      u  nnU(       a  UU:X  a	  U" UU5        Uc0  ["        R$                  " SSU
S9u  nn[         R&                  " U5        O[[         R                  R)                  U5      (       d  [        SU-  5      e[         R                  R                  X R                  5      n[+        UR-                  5       5      n[         R                  R                  X5      nUU4nU R/                  UU
U5        U R1                  UU5        Uc  [2        R4                  " UU5        S
S
S
5        U$ ! , (       d  f       GN`= f! , (       d  f       W$ = f)a)  
Update the contents of a wheel in a generic way. The modifier should
be a callable which expects a dictionary argument: its keys are
archive-entry paths, and its values are absolute filesystem paths
where the contents the corresponding archive entries can be found. The
modifier is free to change the contents of the files pointed to, add
new entries and remove entries, before returning. This method will
extract the entire contents of the wheel to a temporary location, call
the modifier, and then use the passed (and possibly updated)
dictionary to write a new wheel. If ``dest_dir`` is specified, the new
wheel is written there -- otherwise, the original wheel is overwritten.

The modifier should return True if it updated the wheel, else False.
This method returns the same value the modifier returns.
c                 t    S =p#U< S[         < 3nX@;  a  SU-  nX@;   a  X   n[        US9R                  nX#4$ )NrE   z%s/PKG-INFOra   )r   r   r   )path_mapr   r   ra   r8  s        rB   get_version!Wheel.update.<locals>.get_version~  sI    !!G%'?@C"#h.}"-55= rD   c                    S n [        U 5        U R                  S5      nUS:  a  SU -  nO_XS-   S  R                  S5       Vs/ s H  n[        U5      PM     nnUS==   S-  ss'   U S U < SSR	                  S U 5       5      < 3n U(       aJ  [        US
9nX&l	        UR                  [        5      nUR                  XS9  [        R                  SX5        g g s  snf ! [
         a    [        R                  S	U 5         Nyf = f)Nr'   r   z%s+1r   r)   r   +c              3   8   #    U  H  n[        U5      v   M     g 7frG   )rx  ).0rO  s     rB   	<genexpr>7Wheel.update.<locals>.update_version.<locals>.<genexpr>  s     >Uu!s1vvus   z0Cannot update non-compliant (PEP-440) version %rr  )ra   legacyzVersion updated from %r to %r)r   r   r   ro  r=   r   r  r  r   r   r@  r   r  )r   ra   updatedrO  rV   r>   mdr  s           rB   update_version$Wheel.update.<locals>.update_version  s    G4!'*LL%q5$w.G-4UV_-B-B3-GH-GSV-GEH"INI)0!chh>Uu>U6UVG 4($
'?@d2<gO  I + 4 *+244s(   'C" C" C1C" C" " DDr'   r   r  r   r   r  r  Nr   zwheel-update-)r  rm  dirzNot a directory: %r)rN   ra   r=   r   r   r`   r   r   r   r	   rv  rw  r   r   r   r  r   rr  mkstempcloser=  r   r  r  r  r  copyfile)rm   modifierdest_dirr  r  r  rr   r   r   r  r  r   r  r  rU  r  ra   original_versionr(   modifiedcurrent_versionfdnewpathr  r  r   s                             rB   rq   Wheel.updatem  s?   "	!	P* 77<<dmm<"ii6!H,nnXx8Y'3'2[[]E#nnG!'955$+	$+NN7$;	 / y(. 0;=F0G H HJJu.77<<i1HID*.H' + ($ #.h"Aa3F3H(3H(G%";K(K"?D9#"*"2"2&^e"fKBHHRL77==22./Dx/OPP ggll8]]CG $X^^%5 677<<:)""4-@w6#OOGX6U V U (' YV s&   >JB(J3EJ
J	J
J-)
r   r   r   r   r   r`   r   r   r   r   )NFFrG   )NN)F)!r   r   r   r   __doc__rC  r   rn   propertyr   r   r   r   r   r   r   r   r   r  r  r  rR  rV  r  r  r  r  r  r  r  r   rq   r   rH   rD   rB   r   r      s     MI'2R Y Y $ $ + +  >  <	!%&  sj6 g'R D#0*
06?p_rD   r   c                      SS K n U R                  5       n/ nUS   S:X  aW  US   R                  S5       H4  nUR                  UR	                  5       (       a  [        U5      OS5        M6     [        U5      nU$ )Nr   glibcr   r)   )platformlibc_verr   r8   isdigitro  rn  )r  verr~   rV   s       rB   _get_glibc_versionr    se    



CF
1vQc"AMMAIIKK#a&Q7 #vMrD   c                  	    " S S5      n [        [        R                  R                  SS5       Vs/ s H$  nU " [        R                  R                  U5      PM&     nn/ n[        5        H?  nUR                  S5      (       d  M  UR                  UR                  SS5      S   5        MA     UR                  5         [        S:w  a  UR                  S	[        5        UR                  S5        / n[        /n[        R                  S
:X  Ga   [        R                  " S[        5      nU(       a  UR!                  5       u  pp[#        U
5      n
U/nUS;   a  UR                  S5        US;   a  UR                  S5        US;   a  UR                  S5        US;   a  UR                  S5        US;   a  UR                  S5        U
S	:  aD  U H1  nU< SU	< SU
< SU< 3nU[        :w  d  M   UR                  U5        M3     U
S-  n
U
S	:  a  MD  [%        U5       GH  u  nn['        U5      n/ nUS	:X  a  Un[(        S:X  a?  UR*                  S:  a/  S['        UR                  5      -   nUU;  a  UR                  U5        U GHd  nU GHY  nUR                  SR-                  [(        U45      UU45        US:w  d  M5  [        R                  R                  S5      (       d  M[  UR/                  SS5      n[1        5       n[3        U5      S:X  d  M  US:  a,  UR                  SR-                  [(        U45      USU-  45        US:  a,  UR                  SR-                  [(        U45      US U-  45        US!:  a,  UR                  SR-                  [(        U45      US"U-  45        UR                  SR-                  [(        U45      US#US	   < SUS   < SU< 345        GM\     GMg     GM     [%        U5       Hn  u  nn['        U5      nUR                  SR-                  [(        U45      SS$45        US	:X  d  MB  UR                  SR-                  [(        US	   45      SS$45        Mp     [%        U5       Hf  u  nn['        U5      nUR                  SR-                  S%U45      SS$45        US	:X  d  M>  UR                  SR-                  S%US	   45      SS$45        Mh     [5        U5      $ s  snf )&z?
Return (pyver, abi, arch) tuples compatible with this Python.
c                        \ rS rSrS rS rSrg)!compatible_tags.<locals>._Versioni  c                 t    Xl         X4U l        SR                  [        U5      [        U5      45      U l        g r   )majormajor_minorr=   rx  string)rm   r  minors      rB   rn   *compatible_tags.<locals>._Version.__init__  s.    J %~D''3u:s5z":;DKrD   c                     U R                   $ rG   )r  rl   s    rB   __str__)compatible_tags.<locals>._Version.__str__  s    ;;rD   )r  r  r  N)r   r   r   r   rn   r  r   rH   rD   rB   _Versionr    s    	<
	rD   r  r   z.abir)   r%   r   r   r   darwinz(\w+)_(\d+)_(\d+)_(\w+)$)i386ppcfat)r  r  x86_64fat3)ppc64r  fat64)r  r  intel)r  r  r  r  r  	universalr(   r#   )r.   r%   r   r5   linuxlinux_)r%      zmanylinux1_%s)r%      zmanylinux2010_%s)r%      zmanylinux2014_%s
manylinux_r   r&   )ranger:   r;   r  r  rW   rz  r8   r   sortr:  r  r;  r  rer   r   ro  rA  rx  r9   r  r=   rM   r  r   set)r  minor_versionversionsabisr  r~   archesr1   r`   r  r  r   matchesr   rV   rO  version_objectr   add_abislimited_api_abir   r>   s                         rB   compatible_tagsr2    sY     #3#3#3#9#92rBBM 	!!''7B   D/V$$KKS!,Q/0 " 	IIK
f}AsKKFVF
||xHH0$7'(xxz$DJEfG&u%00v&**w'))w'BB{+1*$E)-ueUCADya( % 
 1* 'x0>n%6H."<"<"F#c.*>*>&??Oh.0Crww
G'<=sDIJ&=S\\%<%<W%E%E<<"5D.0E5zQ F?"MM277J3H+I3P_bfPf*gh G+"MM277J3H+I3PbeiPi*jk G+"MM277J3H+I3PbeiPi*jkrww'1(347QVWXQY[`ab[cei9j'l m   1< 'x0>n%rww
G45vuEF6MM277J
#;<feLM	 1 'x0>n%rwwg/?@6MM277D'!*#56FG	 1 v;es   +S*c                     [        U [        5      (       d  [        U 5      n SnUc  [        nU H<  u  p4nX0R                  ;   d  M  X@R                  ;   d  M(  XPR
                  ;   d  M9  Sn  U$    U$ )NFT)rw  r   COMPATIBLE_TAGSr   r   r   )wheelr   r~   r  r   r   s         rB   r  r  B  se    eU##eF|$++#"2tzz7IFM	  MrD   rG   )Y
__future__r   r   r   r  emailr   r   r  loggingrN   r   r(  r  r:   rr  r  r5   r   r   compatr   r	   r
   r   r   databaser   r   r   r   r   rZ   r   r   r   r   r   r   r   r   r   r   r   r   r   	getLoggerr   r  r  hasattrr9   r  rz  r7   r6   r;   r   r9  rM   r;  r:  r   rC   compile
IGNORECASEVERBOSEr   r   r   r   r   r   rO   r  rQ   importlib.machineryrS   importlib.utilrW   rd   objectrf   r  r   r  r2  r4  r  rH   rD   rB   <module>rC     s\   (    #    	  	  
   + C C + Q Q8 8 8 ?			8	$
3#$$J\\V$$J\\UJJ%%&89
#**2A..Jz	j	 ~c3'//S9w'3>>*%%
++j$
'
-
-c
21
5C$ -Cjj ]]RZZ	! **  ]]RZZ	! ZZ)*
JJ@A 66S=H/HA
C6	"f "J 		_F _D`F "#
rD   