
    ~(ph                        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       @/var/www/html/venv/lib/python3.13/site-packages/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   h   s    rD   c                 B    U R                  [        R                  S5      $ )NrE   )replaceosseprI   s    rB   rK   rK   j   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   t   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   {   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)-GXu),d4 	4rD   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_hashK  s    I	.Wi0F $$&))&188>EEgN    	."#C#,$- . .	.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_recordW  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_records^  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_zipn  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>|  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   rB  libkeyis_puredefault_pyverdefault_abidefault_archr  r   data_dirr   r  r7  ra   rootdirsfilesr   r  rpr  r  r   r  idnwheel_metadatar   r   r   r5  rr   s"    `                                rB   buildWheel.buildt  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 2.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 = rf  libprefixzinstallation failed.)Jr]  r;  rN   ra   r=   r   r   r`   r   r   r   r   r   r	   r   r   r   tupleintrB  r   r   recordr:   dont_write_bytecodetempfilemkdtemp
source_dir
target_dirinfolist
isinstancer   r   rU  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   valuesrl  suffixflagsjsonloadr<  r   itemsr   r   write_shared_locationswrite_installed_filesshutilrmtree	exceptionrollback)Drm   r"  makerkwargsr]  rX  rY  bc_hashed_invalidationrr   r   rI  r   metadata_namewheel_metadata_namerecord_namer   r   bwfr   r   wvrN  file_versionr  r  r   readerr  r  data_pfxinfo_pfx
script_pfxfileopbcoutfilesworkdirzinforT  	u_arcnamekindvaluer   r(   r   	is_scriptwhererM  outfile	newdigestpycr   worknamerO  	filenamesdistcommandsepepdatar7  rx   r-   ry   rV   console_scriptsgui_scripts
script_dirscriptoptionssD                                                                       rB   installWheel.install  s|	   " --H%::j%0!',J,1"3 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c'[[]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)2););F)C%C  !++H55'0sA'>5""$'',,uU|\"=M"N %)<(JJ$"$'',,v|I7N"O$WWW-"..r7; . 77g-HHW&+&9&9R&?5%HJ 0&3q6!%gt!4')wwy/3}}T4/H9#,#6*: <@BI<J +K %K $7 "5 '"2"25"9"9	>&,&9&9$+8N ': 'P !) 4 #:2  WW--l7.CD#%77<<#<WWW-"..r8< . "$w!7B+-($)JJrN	229= 	2[ +^ 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/68 g&Y $#-- "6 *) &%R .-, .- "5!4 $- > !'/H8< !/ !>> .-0 "-  ) 6"NN ,5 66 "8!7
  ) F"NN ,E FFP    !78!
 g&Y $#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   rw  r:   r;   r   )rm   bases     rB   _get_dylib_cacheWheel._get_dylib_cache  sI    =77<< 0#m2D '#*:*:2A*> >@D$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5      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   T)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   rT  r   r~   r   r   r   rs   r  rl  
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:F!#ejj&!AJ77==44J/)3)9)9);!ww||JW8MN!ww~~d33&*G(*(>(>I(0(9(9(G(G ))+I#%::g#6D)1):):DNN)KJ&09&<G"JJw;tTl3 *< & $4 1 &%,  1 $#4 sO   JI2%F*I!I2!
I/	+I2.J/I22
I?<J>I??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.unmount6  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_  r`  )rN   ra   r=   r   r   r`   r   r   r   r   r	   r   r   r   ru  rv  r   r   r   r   rU  rw  rx  r  r   )rm   rr   r   r   r  r  r   r   r  r   r  r   r  r  r  r  rT  r  r  r  r   r(   r   s                          rB   r   Wheel.verifyB  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   r7  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   )rw  ).0rN  s     rB   	<genexpr>7Wheel.update.<locals>.update_version.<locals>.<genexpr>  s      ?/(-1As   z0Cannot update non-compliant (PEP-440) version %rr  )ra   legacyzVersion updated from %r to %r)r   r   r   rn  r=   r   r  r  r   r   r?  r   r  )r   ra   updatedrN  rV   r>   mdr  s           rB   update_version$Wheel.update.<locals>.update_version  s   G+!'*LL%q5$w.G-4UV_-B-B3-GH-GSV-GEH"INI)0!chh ?/(-?/ 7/ 0G 4($
'?@d2<gO  I + +!")++s(   'C" C" C1C" C" " DDr'   r   r
  r   r   r  r  Nr   zwheel-update-)r  rl  dirzNot a directory: %r)rN   ra   r=   r   r   r`   r   r   r   r	   ru  rv  r   r   r   r  r   rq  mkstempcloser<  r   r  r  r  r  copyfile)rm   modifierdest_dirr  r  r  rr   r   r   r  r  r   r  r  rT  r  ra   original_versionr(   modifiedcurrent_versionfdnewpathr  r  r   s                             rB   rq   Wheel.updatez  sL   "	!	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&:I7>#@KB HHRL77==22./D/708 9 9 ggll8]]CG $X^^%5 677<<:)""4-@w6#OOGX6[ \ [ (' Y\ 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__rB  r   rn   propertyr   r   r   r   r   r   r   r   r   r  r  r  rQ  rU  r  r  r  r  r  r  r  r   rq   r   rH   rD   rB   r   r      s     MI'2R 4 4  $ $ + +  >  <
!%&  sj6 n'`!F#0*
06?pd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   isdigitrn  rm  )r  verr~   rV   s       rB   _get_glibc_versionr    se    



CF
1vQc"AMMAIIKK#a&Q7 #vMrD   c                     [         /n [         S   n[        [        R                  S   S-
  SS5       H.  nU R	                  SR                  U[        U5      /5      5        M0     / 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 GHr  nU GHg  n	UR	                  SR                  [&        U S   45      X45        US:w  d  M7  [        R                  R                  S5      (       d  M]  U	R)                  SS5      n	[+        5       n[-        U5      S:X  d  M  US:  a/  UR	                  SR                  [&        U S   45      USU	-  45        US:  a/  UR	                  SR                  [&        U S   45      USU	-  45        US:  a/  UR	                  SR                  [&        U S   45      USU	-  45        UR	                  SR                  [&        U S   45      USUS   < SUS   < SU	< 345        GMj     GMu     [/        U 5       Hc  u  nnUR	                  SR                  [&        U45      SS45        US:X  d  M7  UR	                  SR                  [&        US   45      SS45        Me     [/        U 5       H[  u  nnUR	                  SR                  S U45      SS45        US:X  d  M3  UR	                  SR                  S US   45      SS45        M]     [1        U5      $ )!z?
Return (pyver, abi, arch) tuples compatible with this Python.
r   r   r   r5   z.abir)   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(   linuxlinux_)r%      zmanylinux1_%s)r%      zmanylinux2010_%s)r%      zmanylinux2014_%s
manylinux_r   r&   )r6   ranger:   r;   r8   r=   rw  rW   ry  r   sortr9  r  r:  r  rer   r   rn  r9   rM   r  r   r@  set)versionsmajorminorabisr  r~   archesr1   r`   r   matchesr   rV   r   r>   rN  r   s                    rB   compatible_tagsr"    s    |HqMEs''*Q.B7E
 345 8 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* DMM277J#<=sIJf}!8!8!A!A||Hb1*,u:?rww
HQK/H'I3'6'='? @'rww
HQK/H'I3'9D'@'B C'rww
HQK/H'I3'9D'@'B CMM*hqk!:;S16q58TJLM!  ,  )
7rww
G45vuEF6MM277J
#;<feLM *  )
7rwwg/?@6MM277D'!*#56FG *
 v;rD   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)rv  r   COMPATIBLE_TAGSr   r   r   )wheelr   r~   r  r   r   s         rB   r  r  A  se    eU##eF|$++#"2tzz7IFM	  MrD   rG   )Y
__future__r   r   r   r  emailr   r   r  loggingrN   r   r  r  r:   rq  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  ry  r7   r6   r;   r   r8  rM   r:  r9  r   rC   compile
IGNORECASEVERBOSEr   r   r   r   r   r   rO   r  rQ   importlib.machineryrS   importlib.utilrW   rd   objectrf   r  r   r  r"  r$  r  rH   rD   rB   <module>r3     s_   (    #    	  	  
   + C C + Q Q! ! ! @			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 		oF odM` "#
rD   