
    .Ph˫                        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                     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       M/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/distlib/wheel.py_derive_abirC   :   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    rB   <lambda>rK   f   s     rD   c                 B    |                      t          j        d          S )NrE   )replaceosseprI   s    rB   rK   rK   h   s    263// rD   r.   c                  l    t           rd t          j                    D             S t          j        j        S )Nc                     g | ]
}|d          S )r   rH   .0ss     rB   
<listcomp>z!_get_suffixes.<locals>.<listcomp>t   s    111!111rD   )impget_suffixes	importlib	machineryEXTENSION_SUFFIXESrH   rD   rB   _get_suffixesr[   r   s3    
 611c.001111"55rD   c                    t           rt          j        | |          S t          j                            | |          }t          j                            |          }|t          j        | <   |j        	                    |           |S rG   )
rV   load_dynamicrX   utilspec_from_file_locationmodule_from_specr:   modulesloaderexec_module)namepathspecmodules       rB   _load_dynamicrh   y   sp    
 d+++~55dDAA0066"D'''rD   c                   .    e Zd Zd Zd Zd ZddZd ZdS )Mounterc                 "    i | _         i | _        d S rG   )impure_wheelslibsselfs    rB   __init__zMounter.__init__   s    			rD   c                 N    || j         |<   | j                            |           d S rG   )rl   rm   update)ro   pathname
extensionss      rB   addzMounter.add   s+    '18$	$$$$$rD   c                 l    | j                             |          }|D ]\  }}|| j        v r| j        |= d S rG   )rl   poprm   )ro   rs   rt   kvs        rB   removezMounter.remove   sJ    '++H55
 	! 	!DAqDI~~IaL	! 	!rD   Nc                 "    || j         v r| }nd }|S rG   )rm   )ro   fullnamere   results       rB   find_modulezMounter.find_module   s     ty  FFFrD   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:   ra   rm   ImportErrorrh   
__loader__rsplitlen__package__)ro   r|   r}   r>   s       rB   load_modulezMounter.load_module   s    s{""[*FFty((!"Ch"NOOO"8TYx-@AAF $FOOC++E5zzA~~%*1X"rD   rG   )__name__
__module____qualname__rp   ru   rz   r~   r   rH   rD   rB   rj   rj      sd          % % %! ! !       rD   rj   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.
        r5   noneanyNdummyz0.1nmvnr(   r'   bnzInvalid name or filename: %rr&   r)   biar)signshould_verifybuildverPYVERpyverabiarchrN   getcwddirnamerd   versionfilename	_filenameNAME_VERSION_REmatch	groupdictrM   re   splitFILENAME_REr   abspath)ro   r   r   verifyr1   infor   s          rB   rp   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			rD   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'   r5   r)   r(   .whl)r   r=   r   r   r   r   rM   rd   )ro   r   r   r   r   r   s         rB   r   zWheel.filename   s    
 = 	T]*HHH$$hhtx  xx	"",&&sC00)-GGXXXuuucccSWSWSWXXrD   c                     t           j                            | j        | j                  }t           j                            |          S rG   )rN   re   r=   r   r   isfile)ro   re   s     rB   existszWheel.exists   s/    w||DL$-88w~~d###rD   c              #   T   K   | j         D ]}| j        D ]}| j        D ]	}|||fV  
d S rG   )r   r   r   )ro   r   r   r   s       rB   tagsz
Wheel.tags   sc      Z 	+ 	+Ex + + I + +Dd*****++	+ 	+rD   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, )rN   re   r=   r   r   rd   r   codecs	getreaderr	   get_wheel_metadatar   r   	posixpathopenr   KeyError
ValueError)ro   rs   name_verinfo_dirwrapperzffnsr}   fnmetadata_filenamebfwfs               rB   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   )	rd   r   r   r=   r   r   r   r   dict)ro   r   r   r   r   r   r   messages           rB   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   )rN   re   r=   r   r   r	   r   )ro   rs   r   r}   s       rB   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    rD         
r   r%   s   
)	
SHEBANG_REr   endlowerSHEBANG_PYTHONWSHEBANG_PYTHONSHEBANG_DETAIL_REgroupsfind)ro   datar1   r   shebangdata_after_shebangshebang_pythonargscrlfterms              rB   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rD   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)ro   r   r   hasherr}   s        rB   get_hashzWheel.get_hashH  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 Nr5   )listr8   r   writerow)ro   recordsrecord_patharchive_record_pathwriterrows         rB   write_recordzWheel.write_recordS  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   rN   re   getsizer8   r=   to_posixr   )ro   r   libdirarchive_pathsr   distinfor   appfr   r   sizes                rB   write_recordszWheel.write_recordsZ  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)ro   rs   r   r   r  r  s         rB   	build_zipzWheel.build_zipj  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 rG   rH   )rJ   pathss    rB   rK   zWheel.build.<locals>.<lambda>x  s    qEz rD   )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   rE   r  i'  )count)tr  ns      rB   sorterzWheel.build.<locals>.sorter  s7    1BAr!!U
r7NrD   )key)$r   r   IMPVERABIARCHr   getr   r   r   rd   r   rN   re   isdirwalkr
   r=   relpathr   r8   endswithr   r   r   r  	enumeratelistdirwheel_versionr   r   sortedr  r   r   r  )"ro   r  r   r/  libkeyis_puredefault_pyverdefault_abidefault_archr   r   data_dirr   r   r$  re   rootdirsfilesr   r  rpr  r  r   r  idnwheel_metadatar   r   r   r#  rs   s"    `                                rB   buildzWheel.buildp  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.
        )rE   z/RECORD.jws)r,  )ro   arcnames     rB   
skip_entryzWheel.skip_entry  s      4555rD   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 rH   intrS   r;  s     rB   rU   z!Wheel.install.<locals>.<listcomp>  s    !5!5!5Q#a&&!5!5!5rD   zRoot-Is-Purelibr  r  r  streamr   r5   r  )dry_runTr%   size mismatch for %s=digest mismatch for %szlib_only: skipping %sr  rE   posix   i  r   zdigest mismatch on write for %sz.py)hashed_invalidationzByte-compilation failed)exc_infozlib_only: returning Nonez1.0zentry_points.txt)consoleguiz
%s_scriptszwrap_%s:z [%s],zAUnable to read legacy script metadata, so cannot generate scriptsrt   zpython.commandsz8Unable to read JSON metadata, so cannot generate scriptswrap_consolewrap_guizValid script path not specifiedz = rU  libprefixzinstallation failed.)IrL  r(  rN   re   r=   r   r   rd   r   r   r   r   r   r	   r   r   r   tupler/  r   r   recordr:   dont_write_bytecodetempfilemkdtemp
source_dir
target_dirinfolist
isinstancer   r   rA  str	file_sizer   r   r   
startswithr  r  r,  r   copy_streamchmodexternal_attrr8   byte_compile	Exceptionwarningbasenamemakeset_executable_modeextendr   r   valuesr[  suffixflagsjsonloadr)  r   itemsr   r   write_shared_locationswrite_installed_filesshutilrmtree	exceptionrollback)Cro   r  makerkwargsrL  rC  rD  bc_hashed_invalidationrs   r   r6  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zinfor@  	u_arcnamekindvaluer   r(   r   	is_scriptwherer:  outfile	newdigestpycr   worknamer<  	filenamesdistcommandsepepdatar$  rx   r-   ry   rT   console_scriptsgui_scripts
script_dirscriptoptionssC                                                                      rB   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%   )	cacherN   re   r=   r   re  r:   r;   r   )ro   bases     rB   _get_dylib_cachezWheel._get_dylib_cache  sQ    =7<< 0 0#m2D2DgPSP`acbcacPdFdeeD$KKErD   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)rN   re   r=   r   r   rd   r   r   r   r   r	   r   ru  rv  r  prefix_to_dirr  r)  makedirsrw  r   r   statst_mtimedatetimefromtimestampgetinfo	date_timeextractr8   r   )ro   rs   r   r   r@  r   r}   r   r   r   rt   r  r[  
cache_baserd   r+  destr  	file_timer   
wheel_times                        rB   _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_compatiblern   s    rB   r  zWheel.is_compatible  s     T"""rD   c                     dS )zP
        Determine if a wheel is asserted as mountable by its metadata.
        TrH   rn   s    rB   is_mountablezWheel.is_mountable  s	     trD   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   )rN   re   r   r=   r   r   r  r   r  r:   r  r  r8   insertr  _hook	meta_pathru   )ro   r8   rs   msgrt   s        rB   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 0rD   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)rN   re   r   r=   r   r   r:   r  r  rz   r  rl   r  )ro   rs   s     rB   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))rD   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   rJ  r   rE   ..invalid entry in wheel: %rr%   rM  r   rN  rO  )rN   re   r=   r   r   rd   r   r   r   r   r	   r   r   r   rc  rd  r   r   r   r   rA  re  rf  r   r   )ro   rs   r   r   r  r  r   r   r  r   r   r   r  r   r  r  r@  r  r  r  r   r(   r   s                          rB   r   zWheel.verify5  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 )NrE   z%s/PKG-INFOre   )r   r   r   )path_mapr   r   re   r$  s        rB   get_versionz!Wheel.update.<locals>.get_version~  sb    !!Gd%XX'?'?@C(""#h.h}"---5D= rD   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 rH   rG  rR   s     rB   rU   z8Wheel.update.<locals>.update_version.<locals>.<listcomp>  s    HHHSVVHHHrD   r   r)   r   +c              3   4   K   | ]}t          |          V  d S rG   )re  rI  s     rB   	<genexpr>z7Wheel.update.<locals>.update_version.<locals>.<genexpr>  s(      >U>U!s1vv>U>U>U>U>U>UrD   z0Cannot update non-compliant (PEP-440) version %rr  )re   legacyzVersion updated from %r to %r)r   r   r   r=   r   r  r  r   r   r,  r   r  )r   re   updatedr;  r>   mdr  s          rB   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-)rs  r[  dirzNot a directory: %r)rN   re   r=   r   r   rd   r   r   r   r	   rc  rd  r   r   r   r  r   r_  mkstempcloser)  r   rw  r  r  rz  copyfile)ro   modifierdest_dirr  r  r  rs   r   r   r  r  r   r  r  r@  r  re   original_versionr(   modifiedcurrent_versionfdnewpathr   r  r   s                             rB   rr   zWheel.updatem  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$)NFFrG   )NN)F)r   r   r   __doc__r/  r   rp   propertyr   r   r   r   r   r   r   r   r   r   r  r  r>  rA  r  r  r  r  r  r  r  r   rr   rH   rD   rB   r   r      s         MI'2 '2 '2 '2R Y Y XY $ $ X$ + + X+   _>     _  <	! 	! 	! 	!% % %& & &      s s s sj6 6 6 g' g' g'R       D# # #  0 0 0 0*
0 
0 
06? 6? 6?p_ _ _ _ _ _rD   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   r8   isdigitrH  r\  )r  verr}   rT   s       rB   _get_glibc_versionr    s    OOO




CF
1vQc"" 	8 	8AMMAIIKK6#a&&&Q7777vMrD   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=   re  string)ro   r  minors      rB   rp   z*compatible_tags.<locals>._Version.__init__  s=    DJ %u~D''3u::s5zz":;;DKKKrD   c                     | j         S rG   )r  rn   s    rB   __str__z)compatible_tags.<locals>._Version.__str__  s
    ;rD   N)r   r   r   rp   r  rH   rD   rB   _Versionr    s2        	< 	< 	<
	 	 	 	 	rD   r  c                 F    g | ]} t           j        j        |          S rH   )r:   r;   r  )rS   minor_versionr  s     rB   rU   z#compatible_tags.<locals>.<listcomp>  s;        	!'77  rD   r   z.abir)   r%   r   r   r   darwinz(\w+)_(\d+)_(\d+)_(\w+)$)i386ppcfat)r  r  x86_64fat3)ppc64r  fat64)r  r  intel)r  r  r  r  r  	universalr(   r#   )r.   r%   r   r5   linuxlinux_)r%      zmanylinux1_%s)r%      zmanylinux2010_%s)r%      zmanylinux2014_%s
manylinux_r   r&   )ranger:   r;   r  r[   rg  r8   r   sortr&  r  r'  r  rer   r   rH  r-  re  r9   r  r  r=   rM   r  r   set)versionsabisrs  r}   archesr1   rd   r  r  r   matchesr   rT   r;  version_objectr   add_abislimited_api_abir   r>   r  s                       @rB   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;;rD   c                     t          | t                    st          |           } d}|t          }|D ]%\  }}}|| j        v r|| j        v r|| j        v rd} n&|S )NFT)rd  r   COMPATIBLE_TAGSr   r   r   )wheelr   r}   r  r   r   s         rB   r  r  B  sx    eU## eF|  S$%+#"2"2tuz7I7IFEMrD   rG   )Y
__future__r   r   r   r  emailr   r   ru  loggingrN   r   r	  rz  r:   r_  r	  r5   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   	getLoggerr   r  r  hasattrr9   r  rg  r7   r6   r;   r   r%  rM   r'  r&  r   rC   compile
IGNORECASEVERBOSEr   r   r   r   r   r   rO   r   rV   importlib.machineryrX   importlib.utilr[   rh   objectrj   r  r   r  r  r  r  rH   rD   rB   <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 			_ _ _ _ _F _ _ _D  ` ` `F "/##
 
 
 
 
 
rD   