
    wi                        d dl mZ d dlZd dlZd dlZd dlmZ d dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlZd dlZd dlZddlmZmZ ddlmZmZmZmZmZ ddlmZ ddlmZmZmZ dd	l m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* dd
l+m,Z,m-Z-  e	j.        e/          Z0da1 e2ed          rdZ3n-ej4        5                    d          rdZ3nej4        dk    rdZ3ndZ3 ej6        d          Z7e7sdej8        dd         z  Z7de7z   Z9e3e7z   Z: e*            ;                    dd          ;                    dd          Z< ej6        d          Z=e=rEe=5                    d          r0e=;                    dd          >                    d          d          Z=nd Z? e?            Z=[? ej@        dejA        ejB        z            ZC ej@        dejA        ejB        z            ZD ej@        d          ZE ej@        d          ZFd ZGd!ZHe
jI        d"k    rd# ZJnd$ ZJej8        d          d%k     rd dlKZKn
dZKd dlLZMd dlNZMd& ZOd' ZP G d( d)eQ          ZR eR            ZS G d* d+eQ          ZTd, ZUd- ZV eV            ZW[Vd/d.ZXdS )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                  2   dt           g} t          j        d          r|                     d           t          dk    rt
          j        d d         }|dk     rvt          j        d          }|d}|r|                     d           |d	k     rAt          j        d
          }|dk    s|%t
          j        dk    r|                     d           t          t          j        d                    r|                     d           d	                    |           S )Nr#   Py_DEBUGdr%   )      WITH_PYMALLOCTm)r.   r.   Py_UNICODE_SIZE   i uPy_GIL_DISABLEDt )

VER_SUFFIXr   get_config_varappend
IMP_PREFIXsysversion_info
maxunicodebooljoin)partsviwpmuss       ]/root/.openclaw/workspace/chatterbox_venv_py311/lib/python3.11/site-packages/distlib/wheel.py_derive_abirF   :   s   z"#J// 	LL!"1"%BF{{.??;C &LL%%%;;"12CDDBQww2:#.H2L2LS)))I,->??@@ "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                     | S N os    rE   <lambda>rN   h   s     rG   c                 B    |                      t          j        d          S )NrH   )replaceosseprL   s    rE   rN   rN   j   s    263// rG   r.   c                  l    t           rd t          j                    D             S t          j        j        S )Nc                     g | ]
}|d          S )r   rK   .0ss     rE   
<listcomp>z!_get_suffixes.<locals>.<listcomp>v   s    111!111rG   )impget_suffixes	importlib	machineryEXTENSION_SUFFIXESrK   rG   rE   _get_suffixesr^   t   s3    
 611c.001111"55rG   c                    t           rt          j        | |          S t          j                            | |          }t          j                            |          }|t          j        | <   |j        	                    |           |S rJ   )
rY   load_dynamicr[   utilspec_from_file_locationmodule_from_specr<   modulesloaderexec_module)namepathspecmodules       rE   _load_dynamicrk   {   sp    
 d+++~55dDAA0066"D'''rG   c                   .    e Zd Zd Zd Zd ZddZd ZdS )Mounterc                 "    i | _         i | _        d S rJ   )impure_wheelslibsselfs    rE   __init__zMounter.__init__   s    			rG   c                 N    || j         |<   | j                            |           d S rJ   )ro   rp   update)rr   pathname
extensionss      rE   addzMounter.add   s+    '18$	$$$$$rG   c                 l    | j                             |          }|D ]\  }}|| j        v r| j        |= d S rJ   )ro   poprp   )rr   rv   rw   kvs        rE   removezMounter.remove   sJ    '++H55
 	! 	!DAqDI~~IaL	! 	!rG   Nc                 "    || j         v r| }nd }|S rJ   )rp   )rr   fullnamerh   results       rE   find_modulezMounter.find_module   s     ty  FFFrG   c                 .   |t           j        v rt           j        |         }ns|| j        vrt          d|z            t	          || j        |                   }| |_        |                    dd          }t          |          dk    r|d         |_        |S )Nzunable to find extension for %sr)   r   r   )	r<   rd   rp   ImportErrorrk   
__loader__rsplitlen__package__)rr   r   r   rA   s       rE   load_modulezMounter.load_module   s    s{""[*FFty((!"Ch"NOOO"8TYx-@AAF $FOOC++E5zzA~~%*1X"rG   rJ   )__name__
__module____qualname__rs   rx   r}   r   r   rK   rG   rE   rm   rm      sd          % % %! ! !       rG   rm   c                       e Zd ZdZdZdZddZed             Zed             Z	ed	             Z
ed
             Zd Zed             Zd ZddZd Zd Zd ZddZd Zd Zd Zd Zd Zd Zd dZd Zd ZddZdS )!Wheelz@
    Class to build and install from Wheel files (PEP 427).
    )r   r   sha256NFc                    || _         || _        d| _        t          g| _        dg| _        dg| _        t          j                    | _	        |d| _
        d| _        | j        | _        dS t                              |          }|r^|                    d          }|d         | _
        |d                             d	d
          | _        |d         | _        | j        | _        dS t          j                            |          \  }}t(                              |          }|st+          d|z            |r$t          j                            |          | _	        || _        |                    d          }|d         | _
        |d         | _        |d         | _        |d                             d          | _        |d                             d          | _        |d                             d          | _        dS )zB
        Initialise an instance using a (valid) filename.
        r7   noneanyNdummyz0.1nmvnr(   r'   bnzInvalid name or filename: %rr&   r)   biar)signshould_verifybuildverPYVERpyverabiarchrQ   getcwddirnamerg   versionfilename	_filenameNAME_VERSION_REmatch	groupdictrP   rh   splitFILENAME_REr   abspath)rr   r   r   verifyr1   infor   s          rE   rs   zWheel.__init__   s    	#W
8G	y{{DI DL!]DNNN%%h//A 2{{2 J	#Dz11#s;; $T
!%$&GMM($;$;!%%h// F* ,:<D,E F F F <#%7??7#;#;DL!){{2 J	#Dz $T
!$Z--c22
:++C00 J,,S11			rG   c                 ,   | j         rd| j         z   }nd}d                    | j                  }d                    | j                  }d                    | j                  }| j                            dd          }| j        d||d|d|d|dS )zJ
        Build and return a filename from the various components.
        r'   r7   r)   r(   .whl)r   r@   r   r   r   r   rP   rg   )rr   r   r   r   r   r   s         rE   r   zWheel.filename   s    
 = 	T]*HHH$$hhtx  xx	"",&&sC00)-GGXXXuuucccSWSWSWXXrG   c                     t           j                            | j        | j                  }t           j                            |          S rJ   )rQ   rh   r@   r   r   isfile)rr   rh   s     rE   existszWheel.exists   s/    w||DL$-88w~~d###rG   c              #   T   K   | j         D ]}| j        D ]}| j        D ]	}|||fV  
d S rJ   )r   r   r   )rr   r   r   r   s       rE   tagsz
Wheel.tags   sc      Z 	+ 	+Ex + + I + +Dd*****++	+ 	+rG   c                    t           j                            | j        | j                  }| j        d| j        }d|z  }t          j        d          }t          |d          5 }| 
                    |           t          t          g}d }|D ]}	 t          j        ||          }	|                    |	          5 }
 ||
          }t          |          }|r	 d d d             n)	 d d d            n# 1 swxY w Y   r# t           $ r Y ~w xY w|s%t#          dd                    |          z            	 d d d            n# 1 swxY w Y   |S )Nr'   %s.dist-infoutf-8r)fileobjz8Invalid wheel, because metadata is missing: looked in %sz, )rQ   rh   r@   r   r   rg   r   codecs	getreaderr	   get_wheel_metadatar   r   	posixpathopenr   KeyError
ValueError)rr   rv   name_verinfo_dirwrapperzffnsr   fnmetadata_filenamebfwfs               rE   metadatazWheel.metadata   s'   7<<dm<<"iii6!H,"7++Xs## 	Kr##B''' +,DECF 	 	(1x(D(D%!233 "r$WR[[!)"!5!5!5! "!	" " " " " " " """ " " " " " " " " " " " " " "
     D K  "9;?99S>>"J K K KK+	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K0 sf   %*E*C?:C3C?$E'C?3C77C?:C7;C?>E?
D	ED*EE
Ec                 (   | j         d| j        }d|z  }t          j        |d          }|                    |          5 } t          j        d          |          }t          |          }d d d            n# 1 swxY w Y   t          |          S )Nr'   r   WHEELr   )	rg   r   r   r@   r   r   r   r   dict)rr   r   r   r   r   r   r   messages           rE   r   zWheel.get_wheel_metadata  s    "iii6!H,%N8W==WW&'' 	,2*!'**2..B'++G	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, G}}s   -A::A>A>c                     t           j                            | j        | j                  }t          |d          5 }|                     |          }d d d            n# 1 swxY w Y   |S )Nr   )rQ   rh   r@   r   r   r	   r   )rr   rv   r   r   s       rE   r   z
Wheel.info%  s    7<<dm<<Xs## 	1r,,R00F	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   AA!$A!c                    t                               |          }|r|                                }|d |         ||d          }}d|                                v rt          }nt
          }t                              |          }|rd|                                d         z   }nd}||z   }||z   }n\|                    d          }|                    d          }	|dk     s||	k    rd}
n|||dz            d	k    rd	}
nd}
t
          |
z   |z   }|S )
Ns   pythonw    rG         
r   r%   s   
)	
SHEBANG_REr   endlowerSHEBANG_PYTHONWSHEBANG_PYTHONSHEBANG_DETAIL_REgroupsfind)rr   datar1   r   shebangdata_after_shebangshebang_pythonargscrlfterms              rE   process_shebangzWheel.process_shebang,  s#   T"" 	0%%''C*.tt*d344j'GW]]__,,!0!/!''00A ahhjjn,$t+G//DD5!!B5!!BAvvb26	?g--"DD D!D(4/DrG   c                 8   || j         }	 t          t          |          }n # t          $ r t	          d|z            w xY w ||                                          }t          j        |                              d          	                    d          }||fS )NzUnsupported hash algorithm: %r   =ascii)
	hash_kindgetattrhashlibAttributeErrorr   digestbase64urlsafe_b64encoderstripdecode)rr   r   r   hasherr   s        rE   get_hashzWheel.get_hashJ  s    I	QWi00FF 	Q 	Q 	Q"#Ci#OPPP	Q$$&&)&1188>>EEgNN&  s   ! >c                     t          |          }|                    |ddf           t          |          5 }|D ]}|                    |           	 d d d            d S # 1 swxY w Y   d S Nr7   )listr:   r   writerow)rr   recordsrecord_patharchive_record_pathwriterrows         rE   write_recordzWheel.write_recordU  s    w--+R4555{## 	%v % %$$$$%	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   A  A$'A$c                 0   g }|\  }}|D ]\  }}t          |d          5 }	|	                                }
d d d            n# 1 swxY w Y   d|                     |
          z  }t          j                            |          }|                    |||f           t          j                            |d          }t          t          j                            |d                    }| 	                    |||           |                    ||f           d S )Nrbz%s=%sRECORD)
r   readr   rQ   rh   getsizer:   r@   to_posixr   )rr   r   libdirarchive_pathsr   distinfor   appfr   r   sizes                rE   write_recordszWheel.write_records\  s>   !(" 	/ 	/EBa  !vvxx                             t}}T222F7??1%%DNNB-....GLL8,,bgll8X6677'1b)))b!W%%%%%s   A  A	A	c                     t          |dt          j                  5 }|D ]7\  }}t                              d||           |                    ||           8	 d d d            d S # 1 swxY w Y   d S )NwzWrote %s to %s in wheel)r	   zipfileZIP_DEFLATEDloggerdebugwrite)rr   rv   r  r   r  r  s         rE   	build_zipzWheel.build_zipl  s    XsG$899 	 R&    A62>>>B 	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s   ;A%%A),A)c                    |i }t          t          fdd                    d         }|dk    rd}t          g}t          g}t          g}nd}t
          g}dg}d	g}|                    d
|          | _        |                    d|          | _        |                    d|          | _	        |         }	| j
        d| j        }
d|
z  }d|
z  }g }dD ]}|vr|         }t          j                            |          r_t          j        |          D ]I\  }}}|D ]>}t!          t          j                            ||                    }t          j                            ||          }t'          t          j                            |||                    }|                    ||f           |dk    r|                    d          st-          |d          5 }|                                }ddd           n# 1 swxY w Y   |                     |          }t-          |d          5 }|                    |           ddd           n# 1 swxY w Y   @K|	}d}t          j        |          D ]\  }}}||k    rjt5          |          D ]N\  }}t!          |          }|                    d          r%t          j                            ||          }||=  nO|s
J d            |D ]}t!          |                              d          r%t          j                            ||          }t'          t          j                            ||                    }|                    ||f           t          j        |          D ]\  }}}|D ]}|dvrt!          t          j                            ||                    }t          j                            ||          }t'          t          j                            t          j                            |||                              }|                    ||f           d|p| j        z  dt:          z  d|z  g}| j        r|                    d| j        z             | j        D ]$\  }} }!|                    d|d| d|!           %t          j                            |d          }t-          |d          5 }|                    d                     |                     ddd           n# 1 swxY w Y   t'          t          j                            |d                    }|                    ||f           d! }"tA          ||""          }| !                    ||f|	|           t          j                            | j"        | j#                  }#| $                    |#|           |#S )#z
        Build a wheel from files in specified paths, and use any specified tags
        when determining the name of the wheel.
        Nc                     | v S rJ   rK   )rM   pathss    rE   rN   zWheel.build.<locals>.<lambda>z  s    qEz rG   )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	Build: %szTag: r   r  
c                 V    | d         }|                     d          }d|v r|dz  }||fS )Nr   rH   r  i'  )count)r6   r  ns      rE   sorterzWheel.build.<locals>.sorter  s7    1BAr!!U
r7NrG   )key)%r   r   IMPVERABIARCHr   getr   r   r   rg   r   rQ   rh   isdirwalkr
   r@   relpathr  r:   endswithr   r   r   r  	enumeratenormpathwheel_versionr   r   r   sortedr	  r   r   r  )$rr   r  r   r1  libkeyis_puredefault_pyverdefault_abidefault_archr  r   data_dirr   r  r&  rh   rootdirsfilesr   r  rpr  r  r   r  idnr(   r   wheel_metadatar   r   r   r%  rv   s$    `                                  rE   buildzWheel.buildr  s   
 <Df11113IJJKKANYG#HM%K 6LLG"GM!(K!7LXXg}55
88E;//HHV\22	v"iii6x'!H, 2 	. 	.C%:Dw}}T"" .)+ . .%D$# 
. 
.$RW\\$%;%;<<W__Q55%bgll8S"&E&EFF%,,b!W555)++AJJv4F4F+!%a 0!'(vvxx0 0 0 0 0 0 0 0 0 0 0 0 0 0 0#'#7#7#=#=D!%a .! !. . . . . . . . . . . . . . .
. !# 	. 	.D$t|| 't__  EAr!"B{{<00 #%7<<b#9#9 G  KK!KKKx . .B<<(()9:: GLLr**bgooa6677$$b!W----. !gh// 	2 	2ND!U 2 2GGG dB!7!788Ah77A!"'"2"227<<!R3P3P"Q"QRRB!(("a1112 #m&It7IJ#k1!G+

 = 	?!!+"=>>> $	 	H 	HE3!!!UUUCCC"FGGGGGLL7++!S\\ 	/QGGDIIn--...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/bgll8W5566b!W%%%	 	 	 }&999 	Hh/GGG7<<dm<<x///s6   "H	H
H3I	II0)T%%T),T)c                 ,    |                     d          S )zl
        Determine whether an archive entry should be skipped when verifying
        or installing.
        )rH   z/RECORD.jws)r.  )rr   arcnames     rE   
skip_entryzWheel.skip_entry  s      4555rG   c                    |j         }|                    d          }|                    dd          }|                    dd          }t          j                            | j        | j                  }| j        d| j        }	d|	z  }
d|	z  }t          j        |t                    }t          j        |d          }t          j        |d	          }t          j        d
          }t          |d          5 }|                    |          5 } ||          }t          |          }ddd           n# 1 swxY w Y   |d                             dd          }t#          d |D                       }|| j        k    r|r || j        |           |d         dk    r	|d         }n|d         }i }|                    |          5 }t'          |          5 }|D ]}|d         }|||<   	 ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   t          j        |
d          }t          j        |d          }t          j        |
dd          }t)          |          }d|_        t,          j         } g }!t1          j                    }"|"|_        d|_        	 |                                D ]}#|#j        }$t;          |$t<                    r|$}%n|$                    d
          }%|                      |%          rM||%         }|d         r0tC          |#j"                  |d         k    rtG          d|%z            |d         r|d                             dd          \  }&}'|                    |$          5 }|$                                }(ddd           n# 1 swxY w Y   | %                    |(|&          \  })}*|*|'k    rtG          d|$z            |r4|%&                    ||f          rtN          (                    d|%           \|%&                    |          o|%)                    d            }+|%&                    |          rN|%                    d!d          \  })},}-t          j                            ||,         tU          |-                    }.n5|%||fv rt          j                            |tU          |%                    }.|+su|                    |$          5 }|+                    ||.           ddd           n# 1 swxY w Y   t          j        d"k    r t          j,        |.|#j-        d#z	  d$z             |!.                    |.           |sv|d         rnt          |.d%          5 }|$                                }(| %                    |(|&          \  })}/|/|*k    rtG          d&|.z            	 ddd           n# 1 swxY w Y   | rq|.)                    d'          r\	 |/                    |.|(          }0|!.                    |0           h# t`          $ r  tN          1                    d)d*           Y w xY wt          j        2                    tU          |$                    }1t          j                            |"|1          }2|                    |$          5 }|+                    ||2           ddd           n# 1 swxY w Y   t          j                            |.          \  }3}1|3|_        |3                    |1          }4|4                    |4           |!5                    |4           |rtN          (                    d+           d}5n[d}6| j6        d         }|d,k    rt          j        |d-          }7	 |                    |7          5 }to          |          }8ddd           n# 1 swxY w Y   i }6d.D ]t}9d/|9z  }:|:|8v rii x|6d0|9z  <   };|8|:         8                                D ]D}<|<j9        d1|<j:        }=|<j;        r |=d2d3                    |<j;                  z  z  }=|=|;|<j        <   Eun# t`          $ r tN          1                    d4           Y nw xY w	 |                    |          5 } ||          }ty          j=        |                              d5          }6|6r|6                    d6          }6ddd           n# 1 swxY w Y   n*# t`          $ r tN          1                    d7           Y nw xY w|6r|6                    d8i           }>|6                    d9i           }?|>s|?r|                    dd          }@t          j        >                    |@          st          d:          |@|_        |>@                                D ]6\  }:}<|:d;|<}A|3                    |A          }4|4                    |4           7|?rPd<di}B|?@                                D ]7\  }:}<|:d;|<}A|3                    |A|B          }4|4                    |4           8t          j                            ||          }t          |          }5t          |          }|d= |d= ||d=<   |5C                    ||          }|r|!.                    |           |5D                    |!|d>         |           |5t          jF        |"           cddd           S # t`          $ r0 tN          G                    d?           |H                                  w xY w# t          jF        |"           w xY w# 1 swxY w Y   dS )@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   c                 ,    g | ]}t          |          S rK   intrV   r=  s     rE   rX   z!Wheel.install.<locals>.<listcomp>   s    !5!5!5Q#a&&!5!5!5rG   zRoot-Is-Purelibr  r  r  streamr   r7   r  )dry_runTr%   size mismatch for %s=digest mismatch for %szlib_only: skipping %sr  rH   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 scriptsrw   zpython.commandsz8Unable to read JSON metadata, so cannot generate scriptswrap_consolewrap_guizValid script path not specifiedz = rW  libprefixzinstallation failed.)IrN  r*  rQ   rh   r@   r   r   rg   r   r   r   r   r   r	   r   r   r   tupler1  r   r   recordr<   dont_write_bytecodetempfilemkdtemp
source_dir
target_dirinfolist
isinstancer   r   rC  str	file_sizer   r   r   
startswithr  r  r.  r   copy_streamchmodexternal_attrr:   byte_compile	Exceptionwarningbasenamemakeset_executable_modeextendr   r   valuesr]  suffixflagsjsonloadr+  r   itemsr   r   write_shared_locationswrite_installed_filesshutilrmtree	exceptionrollback)Crr   r  makerkwargsrN  rE  rF  bc_hashed_invalidationrv   r   r8  r   metadata_namewheel_metadata_namerecord_namer   r   bwfr   r   wvfile_versionr  r   r   readerr   r  data_pfxinfo_pfx
script_pfxfileopbcoutfilesworkdirzinforB  	u_arcnamekindvaluer   r(   r   	is_scriptwherer<  outfile	newdigestpycr   worknamer>  	filenamesdistcommandsepepdatar&  r{   r-   r|   rW   console_scriptsgui_scripts
script_dirscriptoptionssC                                                                      rE   installzWheel.install  s   " -H%%::j%00!',JE!R!R7<<dm<<"iii6x'!H,!x1IJJ'nXw??nXx88"7++Xs## F	'r,-- 0WS\\+B//0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )//Q77B !5!5"!5!5!566L 2222t)<888()V33y)y)G%% )b))) )V% ) )F%(

)) ) ) ) ) ) ) ) ) ) ) ) ) ) )) ) ) ) ) ) ) ) ) ) ) ) ) ) ) !~h33H ~h33H")R@@J "'222F FM,,BH &((G  'E#E]'[[]] H3 H3E#nG!'955 <$+		$+NN7$;$;	y11 ! !),C1v A#eo"6"6#a&"@"@. 046?0@ A A A1v C&)!fll3&:&:eWWW-- -#%7799D- - - - - - - - - - - - - - -$(MM$$=$=	6!U??"2 48:A4B #C #C C   !I$8$8(H9M$N$N !%<iHHH !*!5!5j!A!A!d)J\J\]cJdJdFdI ++H55 P'0sA'>'>5""$',,uU|\"=M=M"N"N %)<k(JJJ$"$',,v|I7N7N"O"O$ &3WWW-- <"..r7;;;< < < < < < < < < < < < < < < 7g--HWu/Bb/HE.QRRR 000& K3q6 K!%gt!4!4 K')wwyy/3}}T4/H/H9#,#6#6*: <@BI<J +K +K %K $7K K K K K K K K K K K K K K K  Y'"2"25"9"9 YY&,&9&9'Wm&9&n&n ( 4 4 4 4#, Y Y Y !'/HSW X X X X XY
  W--l7.C.CDD#%7<<#<#<WWW-- ="..r8<<<= = = = = = = = = = = = = = = "$w!7!7B+-($)JJrNN	229=== 	2222 KSLL!;<<<DD  $H#'9_#=L#u,,&^H6HII6!# ;)5c):):; ; ; ; ; ; ; ; ; ; ; ; ; ; ;')H'9 6 6$03$6#$;;DF$FHY_$=-3AY-=-=-?-? %6 %678xxx,J+,7 )M,-388AG;L;L1L,LA45!&		6  ) 6 6 6"NN ,5 6 6 6 6 66
F!#!7!7 O3%,WS\\+/9R==+<+<\+J+J#+ !O/7||<M/N/NH	O O O O O O O O O O O O O O O
  ) F F F"NN ,E F F F F FF   J*2,,~r*J*J&.ll:r&B&B* Jk J).9b)A)AJ#%7==#<#< >&0 2= '> '> !>/9E,(7(=(=(?(? F F167aa);,1JJv,>,>	 & : :9 E E E E* J+0$-,7,=,=,?,? !J !JDAq:;!!QQ-?F05

670K0KI$*$>$>y$I$I$I$IVX66A033D !KKEi(i(#)E%L33E7CCA + *** ..xx'RRR g&&&MF	' F	' F	' F	' F	' F	' F	' F	'B      !7888!!!
 g&&&&MF	' F	' F	' F	' F	' F	' F	' F	' F	' F	's  6l7D3'l73D7	7l7:D7	;B
l7HG6*H6G::H=G:>Hl7H	l7H	B
l7 Ck!=Nk!N""k!%N"&Ek!+Tk!Tk!TA"k!8AW?k!Wk!Wk!.,Xk!&Yk!YA&k!,[k![k![B7k!a$_ 4a _	a_	A<ak!$a,)k!+a,,k!0c'A
cc'c	c'"c	#c'&k!'$dk!dF2k! l7!:lll44l77l;>l;c                     t           ^t          j                            t	                      t          d          dt          j        d d         z            }t          |          a t           S )Nzdylib-cachez%s.%sr%   )	cacherQ   rh   r@   r   rg  r<   r=   r   )rr   bases     rE   _get_dylib_cachezWheel._get_dylib_cache  sQ    =7<< 0 0#m2D2DgPSP`acbcacPdFdeeD$KKErG   c           	         t           j                            | j        | j                  }| j        d| j        }d|z  }t          j        |d          }t          j	        d          }g }t          |d          5 }	 |                    |          5 } ||          }	t          j        |	          }
|                                 }|                    | j        d          }t           j                            |j        |          }t           j                            |          st          j        |           |
                                D ]\  }}t           j                            |t)          |                    }t           j                            |          sd}nft          j        |          j        }t0          j                            |          }|                    |          }t1          j        |j         }||k    }|r|                    ||           |                    ||f           	 d d d            n# 1 swxY w Y   n# t<          $ r Y nw xY wd d d            n# 1 swxY w Y   |S )	Nr'   r   
EXTENSIONSr   r   F)use_abspathT)rQ   rh   r@   r   r   rg   r   r   r   r   r	   r   rw  rx  r  prefix_to_dirr  r+  makedirsry  r   r   statst_mtimedatetimefromtimestampgetinfo	date_timeextractr:   r   )rr   rv   r   r   rB  r   r   r   r   r   rw   r  r]  
cache_baserg   r-  destr  	file_timer   
wheel_times                        rE   _get_extensionszWheel._get_extensions  s   7<<dm<<"iii6!H,.<88"7++Xs## 	rWWW%% 4 B!%2J 1133E"00E0RRF!#ej&!A!AJ7==44 0J///)3)9)9);); 4 4g!w||JW8M8MNN!w~~d33 =&*GG(*(>I(0(9(G(G	(R(RI#%::g#6#6D)1):DN)KJ&09&<G" <JJw
;;;tTl333344 4 4 4 4 4 4 4 4 4 4 4 4 4 4*    /	 	 	 	 	 	 	 	 	 	 	 	 	 	 	2 s[   <I.>IF&I:II
	
II
	II.
II.II..I25I2c                      t          |           S )zM
        Determine if a wheel is compatible with the running system.
        )is_compatiblerq   s    rE   r  zWheel.is_compatible  s     T"""rG   c                     dS )zP
        Determine if a wheel is asserted as mountable by its metadata.
        TrK   rq   s    rE   is_mountablezWheel.is_mountable  s	     trG   c                    t           j                            t           j                            | j        | j                            }|                                 sd|z  }t          |          |                                 sd|z  }t          |          |t          j        v rt                              d|           d S |r t          j                            |           n t          j                            d|           |                                 }|rTt          t          j        vr$t          j                            t                     t                              ||           d S d S )Nz)Wheel %s not compatible with this Python.z$Wheel %s is marked as not mountable.z%s already in pathr   )rQ   rh   r   r@   r   r   r  r   r  r<   r  r  r:   insertr  _hook	meta_pathrx   )rr   r:   rv   msgrw   s        rE   mountzWheel.mount  s>   7??27<<dm#L#LMM!!## 	(=HC"3'''  "" 	(88CC"3'''sxLL-x88888 -))))8,,,--//J 0--M((///		(J/////0 0rG   c                    t           j                            t           j                            | j        | j                            }|t          j        vrt                              d|           d S t          j        	                    |           |t          j        v rt          	                    |           t          j        s9t          t          j        v r(t          j        	                    t                     d S d S d S )Nz%s not in path)rQ   rh   r   r@   r   r   r<   r  r  r}   r  ro   r  )rr   rv   s     rE   unmountzWheel.unmount.  s    7??27<<dm#L#LMM38##LL)844444HOOH%%%5...X&&&& 0CM))M((/////0 0))rG   c                    t           j                            | j        | j                  }| j        d| j        }d|z  }t          j        |d          }t          j        |d          }t          j	        d          }t          |d          5 }|                    |          5 } ||          }	t          |	           d d d            n# 1 swxY w Y   i }
|                    |          5 }t          |          5 }|D ]}|d         }||
|<   	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                                D ]Q}|j        }t          |t                     r|}n|                    d          }|                    d	          }d
|v rt'          d|z            |                     |          rx|
|         }|d         r0t+          |j                  |d         k    rt'          d|z            |d         r|d                             dd          \  }}|                    |          5 }|                                }d d d            n# 1 swxY w Y   |                     ||          \  }}||k    rt'          d|z            S	 d d d            d S # 1 swxY w Y   d S )Nr'   r   r   r   r   r   rL  r   rH   ..invalid entry in wheel: %rr%   rO  r   rP  rQ  )rQ   rh   r@   r   r   rg   r   r   r   r   r	   r   r   r   re  rf  r   r   r   r   rC  rg  rh  r   r   )rr   rv   r   r   r  r  r   r   r  r   r   r   r  r   r  r  rB  r  r  r  r   r(   r   s                          rE   r   zWheel.verify:  s!   7<<dm<<"iii6!H, (nXw??nXx88"7++Xs## *	?r,-- &WS\\!"%%%& & & & & & & & & & & & & & & G%% )b))) )V% ) )F%(

)) ) ) ) ) ) ) ) ) ) ) ) ) ) )) ) ) ) ) ) ) ) ) ) ) ) ) ) )  ? ?.gy11 8 'II 'w 7 7I OOC((199* ,79B,C D D D ??9-- i(q6 =c%/22c!f<<* ,02;,< = = =q6 ?"%a&,,sA"6"6KD%)) )R!wwyy) ) ) ) ) ) ) ) ) ) ) ) ) ) ) $dD 9 9IAv. 046=0> ? ? ?5?*	? *	? *	? *	? *	? *	? *	? *	? *	? *	? *	? *	? *	? *	? *	? *	? *	? *	?s   J6%C J6C	J6C	J6.D6?DD6D##D6&D#'D6*J66D:	:J6=D:	>DJ6	I*J6*I..J61I.26J66J:=J:c           	      Z   d }d }t           j                            | j        | j                  }| j        d| j        }d|z  }t          j        |d          }	t                      5 }
t          |d          5 }i }|
                                D ]}|j        }t          |t                    r|}n|                    d          }||	k    r=d|v rt          d	|z            |                    ||
           t           j                            |
t!          |                    }|||<   	 d
d
d
           n# 1 swxY w Y    |||          \  }} ||fi |}|r3 |||          \  }}|r||k    r |||           |/t#          j        dd|
          \  }}t          j        |           nVt           j                            |          st          d|z            t           j                            || j                  }t+          |                                          }t           j                            |
|          }||f}|                     ||
|           |                     ||           |t3          j        ||           d
d
d
           n# 1 swxY w Y   |S )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                 ~    d x}}|dt           }|| vrd|z  }|| v r| |         }t          |          j        }||fS )NrH   z%s/PKG-INFOrh   )r   r   r   )path_mapr   r   rh   r&  s        rE   get_versionz!Wheel.update.<locals>.get_version  sb    !!Gd%XX'?'?@C(""#h.h}"---5D= rG   c                 `   d }	 t          |            |                     d          }|dk     rd| z  }nfd | |dz   d                              d          D             }|dxx         dz  cc<   | d |         dd                    d	 |D                       }n+# t          $ r t
                              d
|            Y nw xY w|rft          |          }||_        |	                    t                    }|                    ||           t
                              d| |           d S d S )Nr'   r   z%s+1c                 ,    g | ]}t          |          S rK   rI  rU   s     rE   rX   z8Wheel.update.<locals>.update_version.<locals>.<listcomp>  s    HHHSVVHHHrG   r   r)   r   +c              3   4   K   | ]}t          |          V  d S rJ   )rg  rK  s     rE   	<genexpr>z7Wheel.update.<locals>.update_version.<locals>.<genexpr>  s(      >U>U!s1vv>U>U>U>U>U>UrG   z0Cannot update non-compliant (PEP-440) version %rr  )rh   legacyzVersion updated from %r to %r)r   r   r   r@   r   r  r  r   r   r.  r   r  )r   rh   updatedr=  rA   mdr  s          rE   update_versionz$Wheel.update.<locals>.update_version  sm   G4!'***LL%%q55$w.GGHHWQUVV_-B-B3-G-GHHHE"IIINIII)0!chh>U>Uu>U>U>U6U6U6UVG* 4 4 4 *+24 4 4 4 44  P4((($
'?@@d6222<gwOOOOOP Ps   BB %CCr'   r   r   r   r   r  r  Nr   zwheel-update-)ru  r]  dirzNot a directory: %r)rQ   rh   r@   r   r   rg   r   r   r   r	   re  rf  r   r   r   r  r   ra  mkstempcloser+  r   ry  r	  r  r|  copyfile)rr   modifierdest_dirr  r  r  rv   r   r   r  r  r   r  r  rB  r  rh   original_versionr(   modifiedcurrent_versionfdnewpathr  r  r   s                             rE   ru   zWheel.updater  s`   "	! 	! 	!	P 	P 	P* 7<<dm<<"iii6!H,nXx88YY *	7'3'' /2[[]] / /E#nG!'955 <$+		$+NN7$;$;	 K// y((. 0;=F0G H H HJJug...7<<i1H1HIID*.HY''// / / / / / / / / / / / / / /$ #.+h"A"Aax33F33H 7(3Hh(G(G%" :;K(K(K"N?D999#"*"2&^e"f"f"fKBHRLLLL7==22 Q./Dx/OPPP gll8T]CCG $X^^%5%5 6 67<<::)""4-@@@w666#OGX666U*	7 *	7 *	7 *	7 *	7 *	7 *	7 *	7 *	7 *	7 *	7 *	7 *	7 *	7 *	7V s8   *J ;B3D;/J ;D?	?J D?	EJ  J$'J$)NFFrJ   )NN)F)r   r   r   __doc__r1  r   rs   propertyr   r   r   r   r   r   r   r   r   r   r	  r  r@  rC  r  r  r  r  r  r  r  r   ru   rK   rG   rE   r   r      s         MI'2 '2 '2 '2R Y Y XY $ $ X$ + + X+   _>     _  <	! 	! 	! 	!% % %& & &      v v v vp6 6 6 g' g' g'R       D# # #  0 0 0 0*
0 
0 
06? 6? 6?p_ _ _ _ _ _rG   r   c                     dd l } |                                 }g }|d         dk    re|d                             d          D ]:}|                    |                                rt          |          nd           ;t          |          }|S )Nr   glibcr   r)   )platformlibc_verr   r:   isdigitrJ  r^  )r  verr   rW   s       rE   _get_glibc_versionr    s    OOO




CF
1vQc"" 	8 	8AMMAIIKK6#a&&&Q7777vMrG   c                  x
    G d d          fdt          t          j        j        dd          D             } g }t	                      D ]F}|                    d          r/|                    |                    dd          d                    G|                                 t          d	k    r|
                    d
t                     |                    d	           g }t          g}t          j        dk    rt          j        dt                    }|r|                                \  }}}}	t!          |          }|	g}
|	dv r|
                    d           |	dv r|
                    d           |	dv r|
                    d           |	dv r|
                    d           |	dv r|
                    d           |d
k    r=|
D ]/}|d|d|d|}|t          k    r|                    |           0|dz  }|d
k    =t#          |           D ]\  }}t%          |          }g }|d
k    r|}t&          dk    r;|j        dk    r0dt%          |j                  z   }||vr|                    |           |D ]}|D ]}	|                    d                    t&          |f          ||	f           |d	k    rOt          j                            d          r/|	                    dd          }	t1                      }t3          |          dk    r|dk    r5|                    d                    t&          |f          |d|	z  f           |d k    r5|                    d                    t&          |f          |d!|	z  f           |d"k    r5|                    d                    t&          |f          |d#|	z  f           |                    d                    t&          |f          |d$|d
         d|d         d|	f           t#          |           D ]\  }}t%          |          }|                    d                    t&          |f          d	d%f           |d
k    r8|                    d                    t&          |d
         f          d	d%f           t#          |           D ]z\  }}t%          |          }|                    d                    d&|f          d	d%f           |d
k    r3|                    d                    d&|d
         f          d	d%f           {t5          |          S )'zG
    Return (pyver, abi, arch) tuples compatible with this Python.
    c                       e Zd Zd Zd ZdS )!compatible_tags.<locals>._Versionc                     || _         ||f| _        d                    t          |          t          |          f          | _        d S r   )majormajor_minorr@   rg  string)rr   r  minors      rE   rs   z*compatible_tags.<locals>._Version.__init__  s=    DJ %u~D''3u::s5zz":;;DKKKrG   c                     | j         S rJ   )r  rq   s    rE   __str__z)compatible_tags.<locals>._Version.__str__  s
    ;rG   N)r   r   r   rs   r  rK   rG   rE   _Versionr    s2        	< 	< 	<
	 	 	 	 	rG   r  c                 F    g | ]} t           j        j        |          S rK   )r<   r=   r  )rV   minor_versionr  s     rE   rX   z#compatible_tags.<locals>.<listcomp>  s;        	!'77  rG   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   r7   linuxlinux_)r%      zmanylinux1_%s)r%      zmanylinux2010_%s)r%      zmanylinux2014_%s
manylinux_r   r&   )ranger<   r=   r  r^   ri  r:   r   sortr(  r  r)  r  rer   r   rJ  r/  rg  r;   r  r  r@   rP   r  r   set)versionsabisru  r   archesr1   rg   r  r  r   matchesr   rW   r=  version_objectr   add_abislimited_api_abir   rA   r  s                       @rE   compatible_tagsr    s             "3#3#92rBB  H D// 1 1V$$ 	1KKS!,,Q/000IIKKK
f}}AsKKFVF
|xH0$77 	'(xxzz$D%JJEfG&&u%%%000v&&&***w''')))w'''BBB{+++1**$ ) )E)-uuueeeUUCADyya(((
 1** 'x00 m m>n%%66H."<"F"F#c.*>&?&??Oh..000 	m 	mC m mrww
G'<==sDIJJJ&==S\%<%<W%E%E=<<"55D.00E5zzQ F??"MM277J3H+I+I3P_bfPf*ghhh G++"MM277J3H+I+I3PbeiPi*jkkk G++"MM277J3H+I+I3PbeiPi*jkkkrww'1(3 (347CQVWXQYQYQY[`ab[c[c[ceiei9j'l m m mm	m$ 'x00 N N>n%%rww
G455vuEFFF66MM277J
#;<<feLMMM 'x00 H H>n%%rwwg//?@@@66MM277D'!*#566FGGGv;;rG   c                     t          | t                    st          |           } d}|t          }|D ]%\  }}}|| j        v r|| j        v r|| j        v rd} n&|S )NFT)rf  r   COMPATIBLE_TAGSr   r   r   )wheelr   r   r  r   r   s         rE   r  r  G  sx    eU## eF|  S$%+#"2"2tuz7I7IFEMrG   rJ   )Y
__future__r   r   r   r  emailr   r   rw  loggingrQ   r   r  r|  r<   ra  r  r7   r   r   compatr   r	   r
   r   r   databaser   r   r   r   r   ra   r   r   r   r   r   r   r   r   r   r   r   r   r   	getLoggerr   r  r  hasattrr;   r  ri  r9   r8   r=   r   r'  rP   r)  r(  r   rF   compile
IGNORECASEVERBOSEr   r   r   r   r   r   rR   r  rY   importlib.machineryr[   importlib.utilr^   rk   objectrm   r  r   r  r  r  r  rK   rG   rE   <module>r%     s   ( ' ' ' ' '    # # # # # #    				     				  



   + + + + + + + + C C C C C C C C C C C C C C + + + + + + Q Q Q Q Q Q Q Q Q Q8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 ? ? ? ? ? ? ? ?		8	$	$
73#$$ JJ\V$$ JJ\UJJJ%Y%&899
 /#*2A2..Jz	j	 |~~c3''//S99iw'' 3>>*%% 
++j$
'
'
-
-c
2
21
5CC  ( +--Cbj ]RZ	! 	! "*  ]RZ	! ! RZ)**
BJ@AA 6S=={HH//HAJJJJ
C6 6 6	 	 	" " " " "f " " "J 			b b b b bF b b bJ  ` ` `F "/##
 
 
 
 
 
rG   