
    fXfz                        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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/        e0          Z1da2 e3ed          rdZ4n-ej5        6                    d          rdZ4nej5        dk    rdZ4ndZ4 ej7        d          Z8e8sdej9        dd         z  Z8de8z   Z:e4e8z   Z; e+            <                    dd          <                    dd          Z= ej7        d          Z>e>rEe>6                    d          r0e><                    dd          ?                    d          d          Z>nd Z@ e@            Z>[@ ejA        dejB        ejC        z            ZD ejA        dejB        ejC        z            ZE ejA        d          ZF ejA        d          ZGd ZHd!ZIe
jJ        d"k    rd# ZKnd$ ZKej9        d          d%k     rd dlLZLn
dZLd dlMZNd dlOZNd& ZPd' ZQ G d( d)eR          ZS eS            ZT G d* d+eR          ZUd, ZVd- ZW eW            ZX[Wd/d.ZYdS )0    )unicode_literalsN)message_from_file   )__version__DistlibException)	sysconfigZipFilefsdecode	text_typefilter)InstalledDistribution)MetadataMETADATA_FILENAME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                     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           d                    |           S )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       R/var/www/html/Qu*py/bism/lib/python3.11/site-packages/pip/_vendor/distlib/wheel.py_derive_abirD   ;   s    z"#J// 	LL!"1"%BF{{.??;C &LL%%%;;"12CDDBQww2:#.H2L2L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    rC   <lambda>rL   e   s     rE   c                 B    |                      t          j        d          S )NrF   )replaceosseprJ   s    rC   rL   rL   g   s    263// rE   r/   c                  l    t           rd t          j                    D             S t          j        j        S )Nc                     g | ]
}|d          S )r   rI   .0ss     rC   
<listcomp>z!_get_suffixes.<locals>.<listcomp>r   s    111!111rE   )impget_suffixes	importlib	machineryEXTENSION_SUFFIXESrI   rE   rC   _get_suffixesr\   p   s3    
 611c.001111"55rE   c                    t           rt          j        | |          S t          j                            | |          }t          j                            |          }|t          j        | <   |j        	                    |           |S rH   )
rW   load_dynamicrY   utilspec_from_file_locationmodule_from_specr;   modulesloaderexec_module)namepathspecmodules       rC   _load_dynamicri   v   sp    
 d+++~55dDAA0066"D'''rE   c                   .    e Zd Zd Zd Zd ZddZd ZdS )Mounterc                 "    i | _         i | _        d S rH   )impure_wheelslibsselfs    rC   __init__zMounter.__init__   s    			rE   c                 N    || j         |<   | j                            |           d S rH   )rm   rn   update)rp   pathname
extensionss      rC   addzMounter.add   s+    '18$	$$$$$rE   c                 l    | j                             |          }|D ]\  }}|| j        v r| j        |= d S rH   )rm   poprn   )rp   rt   ru   kvs        rC   removezMounter.remove   sJ    '++H55
 	! 	!DAqDI~~IaL	! 	!rE   Nc                 "    || j         v r| }nd }|S rH   )rn   )rp   fullnamerf   results       rC   find_modulezMounter.find_module   s     ty  FFFrE   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;   rb   rn   ImportErrorri   
__loader__rsplitlen__package__)rp   r}   r~   r?   s       rC   load_modulezMounter.load_module   s    s{""[*FFty((!"Ch"NOOO"8TYx-@AAF $FOOC++E5zzA~~%*1X"rE   rH   )__name__
__module____qualname__rq   rv   r{   r   r   rI   rE   rC   rk   rk      sd          % % %! ! !       rE   rk   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.
        r6   noneanyNdummyz0.1nmvnr)   r(   bnzInvalid name or filename: %rr'   r*   biar)signshould_verifybuildverPYVERpyverabiarchrO   getcwddirnamere   versionfilename	_filenameNAME_VERSION_REmatch	groupdictrN   rf   splitFILENAME_REr   abspath)rp   r   r   verifyr2   infor   s          rC   rq   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			rE   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(   r6   r*   r)   .whl)r   r>   r   r   r   r   rN   re   )rp   r   r   r   r   r   s         rC   r   zWheel.filename   s    
 = 	T]*HHH$$hhtx  xx	"",&&sC00)-GGXXX).TTT; 	;rE   c                     t           j                            | j        | j                  }t           j                            |          S rH   )rO   rf   r>   r   r   isfile)rp   rf   s     rC   existszWheel.exists   s/    w||DL$-88w~~d###rE   c              #   T   K   | j         D ]}| j        D ]}| j        D ]	}|||fV  
d S rH   )r   r   r   )rp   r   r   r   s       rC   tagsz
Wheel.tags   sc      Z 	+ 	+Ex + + I + +Dd*****++	+ 	+rE   c                 
   t           j                            | j        | j                  }| j        d| j        }d|z  }t          j        d          }t          |d          5 }| 
                    |          }|d                             dd          }t          d |D                       }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Wheel-Versionr*   r   c                 ,    g | ]}t          |          S rI   intrT   is     rC   rV   z"Wheel.metadata.<locals>.<listcomp>       !5!5!5Q#a&&!5!5!5rE   )fileobjz8Invalid wheel, because metadata is missing: looked in %sz, )rO   rf   r>   r   r   re   r   codecs	getreaderr	   get_wheel_metadatar   tupler   r   	posixpathopenr   KeyError
ValueError)rp   rt   name_verinfo_dirwrapperzfwheel_metadatawvfile_versionfnsr~   fnmetadata_filenamebfwfs                  rC   metadatazWheel.metadata   s\   7<<dm<<"iii6!H,"7++Xs## 	Kr!44R88N066sA>>B !5!5"!5!5!566L +,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 sg   %AE8*D4/D(D4E8D4(D,,D4/D,0D43E84
E>E8 E*E88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   )	re   r   r   r>   r   r   r   r   dict)rp   r   r   r   r   r   r   messages           rC   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   )rO   rf   r>   r   r   r	   r   )rp   rt   r   r~   s       rC   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    rE         
r   r&   s   
)	
SHEBANG_REr   endlowerSHEBANG_PYTHONWSHEBANG_PYTHONSHEBANG_DETAIL_REgroupsfind)rp   datar2   r   shebangdata_after_shebangshebang_pythonargscrlfterms              rC   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rE   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)rp   r   r   hasherr~   s        rC   get_hashzWheel.get_hashC  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 )Nr6   )listr9   r   writerow)rp   recordsrecord_patharchive_record_pathwriterrows         rC   write_recordzWheel.write_recordN  s    w--+R4555{## 	%v % %$$$$%	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   A  A$'A$c                 d   g }|\  }}t          t          | j                  }|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   r   r   r   readr   rO   rf   getsizer9   r>   to_posixr  )rp   r   libdirarchive_pathsr   distinfor   r   appfr   r   sizes                 rC   write_recordszWheel.write_recordsU  sO   !($.11" 	/ 	/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)rp   rt   r  r   r  r  s         rC   	build_zipzWheel.build_zipe  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 ]w}|dvrqt!          t          j                            ||                    }t'          t          j                            ||                    }|                    ||f           xd|p| j        z  dt:          z  d|z  g}| 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  } t?          || !          }|                      ||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 rH   rI   )rK   pathss    rC   rL   zWheel.build.<locals>.<lambda>s  s    qEz rE   )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                 V    | d         }|                     d          }d|v r|dz  }||fS )Nr   rF   r&  i'  )count)tr  ns      rC   sorterzWheel.build.<locals>.sorter  s7    1BAr!!U
r7NrE   )key)$r   r   IMPVERABIARCHr   getr   r   r   re   r   rO   rf   isdirwalkr
   r>   relpathr	  r9   endswithr   r  r   r  	enumeratelistdirwheel_versionr   r   sortedr  r   r   r  )"rp   r  r   r:  libkeyis_puredefault_pyverdefault_abidefault_archr
  r   data_dirr   r  r/  rf   rootdirsfilesr   r  rpr  r  r   r  r   dnr   r   r   r   r.  rt   s"    `                                rC   buildzWheel.buildk  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KK . .B<<(()9:: GLLr**bgooa6677$$b!W----. 
8$$ 	. 	.BCCCRW\\(B7788bgll8R8899$$b!W--- #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)R<<S S c                 ,    |                     d          S )zl
        Determine whether an archive entry should be skipped when verifying
        or installing.
        )rF   z/RECORD.jws)r7  )rp   arcnames     rC   
skip_entryzWheel.skip_entry  s      4555rE   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 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   Nr   r*   r   c                 ,    g | ]}t          |          S rI   r   r   s     rC   rV   z!Wheel.install.<locals>.<listcomp>  r   rE   zRoot-Is-Purelibr   r  r  streamr   r6   r#  )dry_runTr&   size mismatch for %s=digest mismatch for %szlib_only: skipping %sr$  rF   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 scriptsru   zpython.commandsz8Unable to read JSON metadata, so cannot generate scriptswrap_consolewrap_guizValid script path not specifiedz = r[  libprefixzinstallation failed.)IrR  r3  rO   rf   r>   r   r   re   r   r   r   r   r   r	   r   r   r   r   r:  r   r   recordr;   dont_write_bytecodetempfilemkdtemp
source_dir
target_dirinfolist
isinstancer   r   rJ  str	file_sizer   r  r   
startswithr  r  r7  r   copy_streamchmodexternal_attrr9   byte_compile	Exceptionwarningbasenamemakeset_executable_modeextendr   r   valuesra  suffixflagsjsonloadr4  r   itemsr   r   write_shared_locationswrite_installed_filesshutilrmtree	exceptionrollback)Crp   r  makerkwargsrR  rL  rM  bc_hashed_invalidationrt   r   rA  r   metadata_namewheel_metadata_namerecord_namer   r   bwfr   r   r   r   r
  r   r   readerr  r  data_pfxinfo_pfx
script_pfxfileopbcoutfilesworkdirzinforI  	u_arcnamekindvaluer   r)   r   	is_scriptwhererE  outfile	newdigestpycr   worknamerF  	filenamesdistcommandsepepdatar/  ry   r.   rz   rU   console_scriptsgui_scripts
script_dirscriptoptionssC                                                                      rC   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## J	'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a'[[]] K3 K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)2););F)C)C%C  !++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  	>'"2"25"9"9 	>>&,&9&9'Nd ': 'f 'f ( 4 4 4 4#, > > > !'/H8< !/ !> !> !> !> !>>  W--l7.C.CDD#%7<<#<#<WWW-- ="..r8<<<= = = = = = = = = = = = = = = "$w!7!7B+-($)JJrNN	229=== 	2222 L8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/68 8 8 g&&&UJ	' J	' J	' J	' J	' J	' J	' J	'J      !7888!!!
 g&&&&UJ	' J	' J	' J	' J	' J	' J	' J	' J	' J	'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&   )	cacherO   rf   r>   r   rj  r;   r<   r   )rp   bases     rC   _get_dylib_cachezWheel._get_dylib_cache  sT    =7<< 0 0#m2D2D '#*:2A2*> >@ @D$KKErE   c           	         t           j                            | j        | j                  }| j        d| j        }d|z  }t          j        |d          }t          j	        d          }g }t          |d          5 }	 |                    |          5 } ||          }	t          j        |	          }
|                                 }|                    |          }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   T)rO   rf   r>   r   r   re   r   r   r   r   r	   r   rz  r{  r  prefix_to_dirr  r4  makedirsr|  r   r   statst_mtimedatetimefromtimestampgetinfo	date_timeextractr9   r   )rp   rt   r   r   rI  r   r~   r   r   r   ru   r  ra  
cache_basere   r6  destr  	file_timer   
wheel_times                        rC   _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::F!#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H?3I?I	II	I
I'
II'II''I+.I+c                      t          |           S )zM
        Determine if a wheel is compatible with the running system.
        )is_compatiblero   s    rC   r  zWheel.is_compatible  s     T"""rE   c                     dS )zP
        Determine if a wheel is asserted as mountable by its metadata.
        TrI   ro   s    rC   is_mountablezWheel.is_mountable  s	     trE   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   )rO   rf   r   r>   r   r   r  r   r  r;   r  r  r9   insertr  _hook	meta_pathrv   )rp   r9   rt   msgru   s        rC   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 0rE   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)rO   rf   r   r>   r   r   r;   r  r  r{   r  rm   r  )rp   rt   s     rC   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))rE   c                 .   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                       }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   r   r   r*   r   c                 ,    g | ]}t          |          S rI   r   r   s     rC   rV   z Wheel.verify.<locals>.<listcomp>E  r   rE   rP  r   rF   ..invalid entry in wheel: %rr&   rS  rT  rU  )rO   rf   r>   r   r   re   r   r   r   r   r   r	   r   r   r   r   r   rh  ri  r   r   r   rJ  rj  rk  r  r   )rp   rt   r   rA  r   r  r  r  r   r   r  r   r   r   r   r   r   r  r  r  r  rI  r  r  r  r   r)   r   s                               rC   r   zWheel.verify4  sr   7<<dm<<"iii6x'!H,!x1IJJ'nXw??nXx88"7++Xs## *	?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 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   .L
C+L
+C/	/L
2C/	3AL
F
E3'F
3E77F
:E7;F
>L

F	L
F	DL
J>2L
>KL
K6L

LL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 )NrF   z%s/PKG-INFOrf   )r   r   r   )path_mapr   r   rf   r/  s        rC   get_versionz!Wheel.update.<locals>.get_version}  sb    !!Gd%XX'?'?@C(""#h.h}"---5D= rE   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 rI   r   rS   s     rC   rV   z8Wheel.update.<locals>.update_version.<locals>.<listcomp>  s    HHHSVVHHHrE   r   r*   r   +c              3   4   K   | ]}t          |          V  d S rH   )rj  r   s     rC   	<genexpr>z7Wheel.update.<locals>.update_version.<locals>.<genexpr>  s(      1H1HQ#a&&1H1H1H1H1H1HrE   z0Cannot update non-compliant (PEP-440) version %rr  )rf   legacyzVersion updated from %r to %r)r   r   r   r>   r   r  r  r   r   r7  r   r  )r   rf   updatedrz   r   r?   mdr  s           rC   update_versionz$Wheel.update.<locals>.update_version  sx   G4%g..LL%%q55$w.GGHHWQUVV_-B-B3-G-GHHHE"IIINIII)0!),1H1H%1H1H1H)H)H)HJG* 4 4 4 *+24 4 4 4 44  &4((($
'?@@d6222<g$& & & & && &s   BB %CCr(   r   r  r   r   r  r  Nr   zwheel-update-)rx  ra  dirzNot a directory: %r)rO   rf   r>   r   r   re   r   r   r   r	   rh  ri  r   r   r   r  r   rd  mkstempcloser4  r   r|  r  r  r  copyfile)rp   modifierdest_dirr  r  r  rt   r   r   r  r  r   r  r  rI  r  rf   original_versionr)   modifiedcurrent_versionfdnewpathr  r  r   s                             rC   rs   zWheel.updatel  si   "	! 	! 	!	& 	& 	&. 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&:I7>#@ #@ #@KB 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6Y,	7 ,	7 ,	7 ,	7 ,	7 ,	7 ,	7 ,	7 ,	7 ,	7 ,	7 ,	7 ,	7 ,	7 ,	7Z s8   *J ;B3D;/J ;D?	?J D?	EJ  J$'J$)NFFrH   )NN)F)r   r   r   __doc__r:  r   rq   propertyr   r   r   r   r   r   r   r   r   r  r  r  rG  rJ  r  r  r  r  r  r  r  r   rs   rI   rE   rC   r   r      s         MI'2 '2 '2 '2R ; ; X;  $ $ X$ + + X+   _>     _  <	! 	! 	! 	!% % %& & &      r r r rh6 6 6 k' k' k'Z       D# # #  0 0 0 0*
0 
0 
06? 6? 6?pc c c c c crE   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   r9   isdigitr   r   )r  verr~   rU   s       rC   _get_glibc_versionr    s    OOO




CF
1vQc"" 	8 	8AMMAIIKK6#a&&&Q7777vMrE   c                   
   t           g} t           d         }t          t          j        d         dz
  dd          D ]9}|                     d                    |t          |          g                     :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    =|D ]}|D ]}	|                    d                    t&          | d         f          ||	f           |dk    rht          j                            d          rH|	                    dd          }	t+                      }t-          |          dk    r|dk    r;|                    d                    t&          | d         f          |d|	z  f           |dk    r;|                    d                    t&          | d         f          |d|	z  f           |dk    r;|                    d                    t&          | d         f          |d|	z  f           |                    d                    t&          | d         f          |d|d         d|d         d|	f           t/          |           D ]u\  }}|                    d                    t&          |f          ddf           |dk    r8|                    d                    t&          |d         f          ddf           vt/          |           D ]k\  }}|                    d                    d |f          ddf           |dk    r3|                    d                    d |d         f          ddf           lt1          |          S )!zG
    Return (pyver, abi, arch) tuples compatible with this Python.
    r   r   r   r6   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'   )r7   ranger;   r<   r9   r>   rj  r\   rl  r   sortr1  r  r2  r  rer   r   r   r:   rN   r  r   r8  set)versionsmajorminorabisrx  r~   archesr2   re   r   matchesr   rU   r   r?   r   r   s                    rC   compatible_tagsr    s4    |HqMEs'*Q.R88 6 6E

 3445555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**  C C 	C 	CDMM277J#<==sDIJJJf}}!8!8!A!A}||Hb11*,,u::??rww
HQK/H'I'I3'6'='? @ @ @''rww
HQK/H'I'I3'9D'@'B C C C''rww
HQK/H'I'I3'9D'@'B C C CMM277J+D#E#Ess;@888U1XXX;?4$A#B C C C!	C*  )) N N
7rww
G455vuEFFF66MM277J
#;<<feLMMM  )) H H
7rwwg//?@@@66MM277D'!*#566FGGGv;;rE   c                     t          | t                    st          |           } d}|t          }|D ]%\  }}}|| j        v r|| j        v r|| j        v rd} n&|S )NFT)ri  r   COMPATIBLE_TAGSr   r   r   )wheelr   r~   r  r   r   s         rC   r  r  0  sx    eU## eF|  S$%+#"2"2tuz7I7IFEMrE   rH   )Z
__future__r   r   r   r  emailr   r   rz  loggingrO   r   r   r  r;   rd  r  r6   r   r   compatr   r	   r
   r   r   databaser   r   r   r   r   r   r_   r   r   r   r   r   r   r   r   r   r   r   r   r   	getLoggerr   r  r  hasattrr:   r  rl  r8   r7   r<   r   r0  rN   r2  r1  r   rD   compile
IGNORECASEVERBOSEr   r   r   r   r   r   rP   r	  rW   importlib.machineryrY   importlib.utilr\   ri   objectrk   r  r   r  r  r
  r  rI   rE   rC   <module>r     s   ( ' ' ' ' '    # # # # # #    				     				  



   + + + + + + + + C C C C C C C C C C C C C C + + + + + +1 1 1 1 1 1 1 1 1 1 1 1! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! @ ? ? ? ? ? ? ?		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 ! ! !F 			h h h h hF h h hT  M M M` "/##
 
 
 
 
 
rE   