ReddlmZddlZddlZddlZddlmZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlmZmZddlmZmZmZmZmZddlmZddlmZmZm Z m!Z!dd l"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,dd l-m.Z.m/Z/e j0e1Z2da3e4ed rd Z5n-ej67d rdZ5nej6dkrdZ5ndZ5ej8dZ9e9sdej:ddzZ9de9zZ;e5e9zZ<e,=dd=ddZ>ej8dZ?e?rEe?7dr0e?=dd@ddZ?ndZAeAZ?[Ae jBde jCe jDzZEe jBde jCe jDzZFe jBdZGe jBdZHd ZId!ZJe jKd"krd#ZLnd$ZLGd%d&eMZNeNZOGd'd(eMZPd)ZQd*ZReRZS[Rd,d+ZTdS)-)unicode_literalsN)message_from_file) __version__DistlibException) sysconfigZipFilefsdecode text_typefilter)InstalledDistribution)MetadataMETADATA_FILENAMEWHEEL_METADATA_FILENAMELEGACY_METADATA_FILENAME) FileOperator convert_path CSVReader CSVWriterCachecached_propertyget_cache_base read_exportstempdir get_platform)NormalizedVersionUnsupportedVersionErrorpypy_version_infoppjavajycliipcppy_version_nodotz%s%spy-_.SOABIzcpython-c<dtg}tjdr|dtjdr|dtjddkr|dd |S) Nr$Py_DEBUGd WITH_PYMALLOCmPy_UNICODE_SIZEu) VER_SUFFIXrget_config_varappendjoin)partss /builddir/build/BUILDROOT/alt-python311-pip-21.3.1-3.el8.x86_64/opt/alt/python311/lib/python3.11/site-packages/pip/_vendor/distlib/wheel.py _derive_abir;<sz"  #J / /  LL     #O 4 4  LL     #$5 6 6! ; ; LL   wwu~~zz (?P[^-]+) -(?P\d+[^-]*) (-(?P\d+[^-]*))? -(?P\w+\d+(\.\w+\d+)*) -(?P\w+) -(?P\w+(\.\w+)*) \.whl$ z7 (?P[^-]+) -(?P\d+[^-]*) (-(?P\d+[^-]*))?$ s \s*#![^\r\n]*s^(\s*#!("[^"]+"|\S+))\s+(.*)$s#!pythons #!pythonw/c|SNos r:rC^sr<cB|tjdS)Nr=)replaceosseprAs r:rCrC`s263//r<c.eZdZdZdZdZddZdZdS)Mounterc"i|_i|_dSr?) impure_wheelslibsselfs r:__init__zMounter.__init__ds r<cN||j|<|j|dSr?)rKrLupdate)rNpathname extensionss r:addz Mounter.addhs+'18$ $$$$$r<cl|j|}|D]\}}||jvr|j|=dSr?)rKpoprL)rNrRrSkvs r:removezMounter.removelsJ'++H55  ! !DAqDI~~IaL ! !r<Nc"||jvr|}nd}|Sr?)rL)rNfullnamepathresults r: find_modulezMounter.find_modulers ty FFF r<c8|tjvrtj|}nx||jvrtd|zt j||j|}||_|dd}t|dkr |d|_ |S)Nzunable to find extension for %sr*rr) sysmodulesrL ImportErrorimp load_dynamic __loader__rsplitlen __package__)rNr[r]r9s r: load_modulezMounter.load_moduleys s{ " "[*FFty((!"Ch"NOOO%h (0CDDF $F OOC++E5zzA~~%*1X" r<r?)__name__ __module__ __qualname__rOrTrYr^rir@r<r:rIrIcsd%%%!!!      r<rIceZdZdZdZdZddZedZedZ ed Z e d Z d Z e d Zd ZddZdZdZdZddZdZdZdZdZdZdZd dZdZdZddZdS)!Wheelz@ Class to build and install from Wheel files (PEP 427). )rrsha256NFc||_||_d|_tg|_dg|_dg|_tj|_ |d|_ d|_ |j |_ dSt|}|r^|d}|d|_ |dd d |_ |d |_|j |_ dStj|\}}t(|}|st+d |z|r$tj||_ ||_ |d}|d|_ |d|_ |d |_|d d|_|dd|_|dd|_dS)zB Initialise an instance using a (valid) filename. r4noneanyNdummyz0.1nmvnr)r(bnzInvalid name or filename: %rr'r*biar)sign should_verifybuildverPYVERpyverabiarchrFgetcwddirnamenameversionfilename _filenameNAME_VERSION_REmatch groupdictrEr\split FILENAME_RErabspath)rNrryverifyr0infors r:rOzWheel.__init__s # W 8G y{{  DI DL!]DNNN%%h//A 2{{2 J #Dz11#s;; $T  !%$&GMM($;$;!%%h//F*,:z"Wheel.metadata..!5!5!5Q#a&&!5!5!5r<)fileobjz8Invalid wheel, because metadata is missing: looked in %sz, )rFr\r8rrrrcodecs getreaderr get_wheel_metadatartuplerr posixpathopenrKeyError ValueError)rNrRname_verinfo_dirwrapperzfwheel_metadatawv file_versionfnsr]fnmetadata_filenamebfwfs r:metadatazWheel.metadatas\7<< dm<<"iii6!H,"7++ Xs # # Kr!44R88N066sA>>B !5!5"!5!5!566L +,DECF  (1x(D(D%!233"r$WR[[!)"!5!5!5!"! """"""""""""""""""""""""  D K "9;?99S>>"JKKK K+ K K K K K K K K K K K K K K K0 sg%AE8*D4/D( D4E8 D4(D, ,D4/D, 0D43E84 E>E8E*E88E<?E<c(|jd|j}d|z}tj|d}||5}t jd|}t|}dddn #1swxYwYt|S)Nr(rWHEELr) rrrr8rrrrdict)rNrrrrrrmessages r:rzWheel.get_wheel_metadatas"iii6!H,%N8W== WW& ' ' ,2*!'**2..B'++G , , , , , , , , , , , , , , ,G}}s-A::A>A>ctj|j|j}t |d5}||}dddn #1swxYwY|S)Nr)rFr\r8rrr r)rNrRrr]s r:rz Wheel.infos7<< dm<< Xs # # 1r,,R00F 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 sAA!$A!ct|}|r|}|d|||d}}d|vrt}nt }t |}|rd|dz}nd}||z}||z}n\|d}|d} |dks|| krd} n|||dzd krd } nd} t | z|z}|S) Nspythonw r<  rr&s ) SHEBANG_RErendlowerSHEBANG_PYTHONWSHEBANG_PYTHONSHEBANG_DETAIL_REgroupsfind) rNdatar0rshebangdata_after_shebangshebang_pythonargscrlfterms r:process_shebangzWheel.process_shebangs#   T " "  0%%''C*.tt*d344j'GW]]__,,!0!/!''00A ahhjjn,$t+G//DD5!!B5!!BAvvb26 ?g--"DD D!D(4/D r<c8||j} tt|}n #t$rt d|zwxYw||}t j|d d}||fS)NzUnsupported hash algorithm: %r=ascii) hash_kindgetattrhashlibAttributeErrorrdigestbase64urlsafe_b64encoderstripdecode)rNrrhasherr]s r:get_hashzWheel.get_hash%s  I QWi00FF Q Q Q"#Ci#OPP P Q$$&&)&1188>>EEgNN&  s!>c4t|}ttj||}||ddft |5}|D]}|| ddddS#1swxYwYdS)Nr4)listto_posixrFr\relpathr7rwriterow)rNrecords record_pathbasepwriterrows r: write_recordzWheel.write_record0sw-- RW__[$77 8 82r{### { # # %v % %$$$$ % % % % % % % % % % % % % % % % % % %s$B  BBcdg}|\}}tt|j}|D]\}} t| d5} | } dddn #1swxYwYd|| z} t j| } | || | ft j |d} | || |tt j |d}| || fdS)Nrbz%s=%sRECORD) rrrrreadrrFr\getsizer7r8rr)rNrlibdir archive_pathsrdistinforraprfrrsizes r: write_recordszWheel.write_records8sO!($.11" / /EBa !vvxx               t}}T222F7??1%%D NNB- . . . . GLL8 , , '1f--- bgll8X66 7 7b!W%%%%%sAA !A ct|dtj5}|D]7\}}td|||||8 ddddS#1swxYwYdS)NwzWrote %s to %s in wheel)r zipfile ZIP_DEFLATEDloggerdebugwrite)rNrRrrrrs r: build_zipzWheel.build_zipHs XsG$8 9 9 R&  A 62>>>B                   s;A%%A),A)c  |i}ttfddd}|dkrd}tg}tg}tg}nd}t g}dg}d g}|d ||_|d ||_|d ||_ |} |j d |j } d| z} d| z} g} dD]}|vr|}tj |r_tj|D]I\}}}|D]>}t!tj ||}tj ||}t'tj | ||}| ||f|dkr|dst-|d5}|}dddn #1swxYwY||}t-|d5}||dddn #1swxYwY@K| }d}tj|D]\}}}||krjt5|D]N\}}t!|}|dr%tj ||}||=nO|s Jd|D]}t!|dr%tj ||}t'tj ||}| ||ftj|}|D]w}|dvrqt!tj ||}t'tj | |}| ||fxd|p|jzdt:zd|zg}|jD]$\}}}|d|d |d |%tj |d}t-|d5}|d|dddn #1swxYwYt'tj | d}| ||fd } t?| | !} | || f| | tj |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 |vSr?r@)rBpathss r:rCzWheel.build..Vs qEzr<)purelibplatlibrrfalsetruerqrrr}r~rr(%s.datar)rheadersscriptsr .exerwb .dist-infoz(.dist-info directory expected, not found)z.pycz.pyo)r INSTALLERSHAREDrzWheel-Version: %d.%dzGenerator: distlib %szRoot-Is-Purelib: %szTag: rr cV|d}|d}d|vr|dz }||fS)Nrr=r i')count)trns r:sorterzWheel.build..sorters71B Ar!!U r7Nr<)key)$rr IMPVERABIARCHr|getr}r~rrrrFr\isdirwalkr r8rrr7endswithrrrr enumeratelistdir wheel_versionrrsortedrrrr)"rNrrr libkeyis_pure default_pyver default_abi default_archrrdata_dirrrrr\rootdirsfilesrrrprrrrrdnrr}r~rrrRs" ` r:buildz Wheel.buildNs( <Df11113IJJKKAN Y  G#HM%K 6LLG"GM!(K!7LXXg}55 88E;//HHV\22 v"iii6x'!H, 2 . .C%:Dw}}T"" .)+ . .%D$# . .$RW\\$%;%;<<W__Q55%bgll8S"&E&EFF%,,b!W555)++AJJv4F4F+!%a0!'(vvxx000000000000000#'#7#7#=#=D!%a.! ! ............... .!# . . D$t||'t__EAr!"B{{<00#%7<<b#9#9 G KK!KKKK . .B<<(()9::GLLr**bgooa6677$$b!W----  . 8$$ . .BCCCRW\\(B7788bgll8R8899$$b!W--- #m&It7I J #k 1 !G +  !%  H H E3  ! ! !UUUCCC"F G G G G GLL7 + + !S\\ /Q GGDIIn-- . . . / / / / / / / / / / / / / / / bgll8W55 6 6b!W%%%     }&999  Hh/GGG7<< dm<< x///s6"H H H 3I I I )R<<SSc,|dS)zl Determine whether an archive entry should be skipped when verifying or installing. )r=z /RECORD.jws)r)rNarcnames r: skip_entryzWheel.skip_entrys 4555r<c |j}|d}|dd}|dd}tj|j|j}|jd|j} d| z} d| z} tj| t} tj| d} tj| d }tj d }t|d 5}|| 5}||}t|}d d d n #1swxYwY|d dd}t#d|D}||jkr|r||j||ddkr |d}n|d}i}||5}t'|5}|D]}|d}|||< d d d n #1swxYwYd d d n #1swxYwYtj| d}tj| d}tj| dd}t)|}d|_t,j } g}!t1j}"|"|_d |_ |D]}#|#j}$t;|$t<r|$}%n|$d }%| |%rM||%}|dr0tC|#j"|dkrtGd|%z|dr|ddd\}&}'||$5}|$}(d d d n #1swxYwY|%|(|&\})}*|*|'krtGd|$z|r4|%&||frtN(d|%\|%&|o|%)d  }+|%&|rN|%d!d\})},}-tj||,tU|-}.n5|%| |fvrtj|tU|%}.|+su||$5}|+||.d d d n #1swxYwYtjd"kr tj,|.|#j-d#z d$z|!.|.|sv|drnt|.d%5}|$}(|%|(|&\})}/|/|*krtGd&|.z d d d n #1swxYwY| rq|.)d'r\ |/|.|(}0|!.|0h#t`$r tN1d)d*YwxYwtj2tU|$}1tj|"|1}2||$5}|+||2d d d n #1swxYwYtj|.\}3}1|3|_|3|1}4|4|4|!5|4|rtN(d+d }5n[d }6|j6d }|d,krtj| d-}7 ||75}to|}8d d d n #1swxYwYi}6d.D]t}9d/|9z}:|:|8vriix|6d0|9z<};|8|:8D]D}<||6d9i}?|>s|?r|dd}@tj>|@std:|@|_|>@D]6\}:}<|:d;|<}A|3|A}4|4|47|?rPd||5tjF|"cd d d S#t`$r0tNGd?|HwxYw#tjF|"wxYw#1swxYwYd 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``. warnerlib_onlyFbytecode_hashed_invalidationr(rrrrrrNrr*rc,g|]}t|Sr@rrs r:rz!Wheel.install..rr<zRoot-Is-Purelibrrrstreamrr4r )dry_runTr&size mismatch for %s=digest mismatch for %szlib_only: skipping %sr r=posixirzdigest mismatch on write for %sz.py)hashed_invalidationzByte-compilation failed)exc_infozlib_only: returning Nonez1.0zentry_points.txt)consoleguiz %s_scriptszwrap_%s:z [%s],zAUnable to read legacy script metadata, so cannot generate scriptsrSzpython.commandsz8Unable to read JSON metadata, so cannot generate scripts wrap_consolewrap_guizValid script path not specifiedz = rAlibprefixzinstallation failed.)Ir8rrFr\r8rrrrrrrrr rrrrr rrrecordr`dont_write_bytecodetempfilemkdtemp source_dir target_dirinfolist isinstancer rr0str file_sizerrr startswithrrrr copy_streamchmod external_attrr7 byte_compile Exceptionwarningbasenamemakeset_executable_modeextendrrvaluesrGsuffixflagsjsonloadrritemsr rwrite_shared_locationswrite_installed_filesshutilrmtree exceptionrollback)CrNrmakerkwargsr8r2r3bc_hashed_invalidationrRrr'r metadata_namewheel_metadata_name record_namerrbwfrrrrrrrreaderrrdata_pfxinfo_pfx script_pfxfileopbcoutfilesworkdirzinfor/ u_arcnamekindvaluerr)r is_scriptwherer+outfile newdigestpycrworknamer, filenamesdistcommandsepepdatarrWr.rXsconsole_scripts gui_scripts script_dirscriptoptionssC r:installz Wheel.installs"-H%%::j%00!',JE!R!R7<< dm<<"iii6x'!H,!x1IJJ 'nXw??nXx88 "7++ Xs # #J 'r,-- 0WS\\+B// 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)//Q77B !5!5"!5!5!566L 2222t)<888()V33y)y)G%% )b))))V%))F%( )))))))))))))))) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) !~h33H ~h33H")R@@J"'222F FM,,BH&((G 'E #E a '[[]]K3K3E#nG!'955<$+ $+NN7$;$; y11! !),C1vA#eo"6"6#a&"@"@.046?0@AAA1vC&)!fll3&:&: eWWW---#%7799D---------------$(MM$$=$= 6!U??"248:A4B#C#CC !I$8$8(H9M$N$N! %'> 5""$',,uU|\"=M=M"N"N%)'"2"25"9"9 >>&,&9&9'Nd':'f'f ( 4 4 4 4#,>>>!'/H8<!/!>!>!>!>!>>  W--l7.C.CDD#%7<<#<#<WWW--="..r8<<<==============="$w!7!7B+-($)JJrNN 229===  2222L8LL!;<<<DD $H#'9_#=L#u,,&^H6HII6!#;)5c):):;;;;;;;;;;;;;;;')H'966$03$6#$;;DF$FHY_$=-3AY-=-=-?-?%6%678xxx,J+,7)M,-388AG;L;L1L,LA45!& 6 )666"NN,5666666 F!#!7!7O3%,WS\\+/9R==+<+<\+J+J#+!O/7||&02='>'>!>/9E,(7(=(=(?(?FF167aa);,1JJv,>,> & : :9 E E E E*J+0$.,7,=,=,?,?!J!JDAq:;!!QQ-?F05 670K0KI$*$>$>y$I$I$I$I VX66A033D!KKEi(i(#)E%L33E7CCA+ ***..xx/6888  g&&&UJ 'J 'J 'J 'J 'J 'J 'J 'J     !7888!!!   g&&&&UJ 'J 'J 'J 'J 'J 'J 'J 'J 'J 's6l7 D3' l73D7 7l7:D7 ;B l7H G6* H 6G: :H =G: >H  l7 H l7H B l7 Ck!=N k!N" "k!%N" &Ek!+T k!T k!T A"k!8AW ? k! W k!W k!.,Xk!&Yk!YA&k!,[ k![ k![ B7k!a$_4 a_ a_ Al;ct^tjt t ddt jddz}t|atS)Nz dylib-cachez%s.%sr&) cacherFr\r8rrPr` version_infor)rNrs r:_get_dylib_cachezWheel._get_dylib_cachesT =7<< 0 0#m2D2D '#*:2A2*> >@@D$KKE r<c tj|j|j}|jd|j}d|z}tj|d}tj d}g}t|d5} | |5}||} tj | } |} | |} tj| j| } tj| stj| | D]\}}tj| t)|}tj|sd}nftj|j}t0j|}||}t1j|j}||k}|r||| |||f dddn #1swxYwYn#t<$rYnwxYwdddn #1swxYwY|S)Nr(r EXTENSIONSrrT)rFr\r8rrrrrrrr rr`rar prefix_to_dirrrmakedirsrbrrstatst_mtimedatetime fromtimestampgetinfo date_timeextractr7r)rNrRrrr/rr]rrrrSrrG cache_baserrdestr file_timer wheel_times r:_get_extensionszWheel._get_extensionss7<< dm<<"iii6!H,.<88"7++ Xs # # r WWW%%4 B!%2J 1133E"00::F!#ej&!A!AJ7==440 J///)3)9)9);); 4 4 g!w||J W8M8MNN!w~~d33=&*GG(* (>I(0(9(G(G (R(RI#%::g#6#6D)1):DN)KJ&09&I FH?3 I ?I I I I  I' II'II''I+.I+c t|S)zM Determine if a wheel is compatible with the running system. ) is_compatiblerMs r:rzWheel.is_compatiblesT"""r<cdS)zP Determine if a wheel is asserted as mountable by its metadata. Tr@rMs r: is_mountablezWheel.is_mountables tr<ctjtj|j|j}|sd|z}t||sd|z}t||tjvrt d|dS|r tj |n tj d||}|rTttjvr$tj tt||dSdS)Nz)Wheel %s not compatible with this Python.z$Wheel %s is marked as not mountable.z%s already in pathr)rFr\rr8rrrrrr`rrr7insertr_hook meta_pathrT)rNr7rRmsgrSs r:mountz Wheel.mounts>7??27<< dm#L#LMM!!## (=HC"3'' '  "" (88CC"3'' ' sx   LL-x 8 8 8 8 8 -))))8,,,--//J 0 --M((/// (J///// 0 0r<ctjtj|j|j}|t jvrtd|dSt j ||tj vrt |tj s9tt j vr(t j tdSdSdS)Nz%s not in path) rFr\rr8rrr`rrrYrrKr)rNrRs r:unmountz Wheel.unmount s7??27<< dm#L#LMM 38 # # LL)8 4 4 4 4 4 HOOH % % %5... X&&&& 0CM))M((///// 0 0))r<c.tj|j|j}|jd|j}d|z}d|z}tj|t}tj|d}tj|d}tj d}t|d5} | |5} || } t| } dddn #1swxYwY| dd d } td | D}i}| |5}t!| 5}|D]}|d }|||< dddn #1swxYwYdddn #1swxYwY| D]Q}|j}t%|t&r|}n|d}|d}d|vrt+d|z||rx||}|dr0t/|j|dkrt+d|z|d r|d dd \}}| |5}|}dddn #1swxYwY|||\}}||krt+d|zS ddddS#1swxYwYdS)Nr(rrrrrrrr*rc,g|]}t|Sr@rrs r:rz Wheel.verify..(rr<r6rr=..invalid entry in wheel: %rr&r9r:r;)rFr\r8rrrrrrrrr rrrrrrNrOr rrr0rPrQrr)rNrRrr'rrlrmrnrrrorrrrrrrprrrxr/ryrzr{rr)rs r:rz Wheel.verifysr7<< dm<<"iii6x'!H,!x1IJJ 'nXw??nXx88 "7++ Xs # #* ?r,-- 0WS\\+B// 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)//Q77B !5!5"!5!5!566LG%% )b))))V%))F%( )))))))))))))))) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )  ? ?.gy118 'II 'w 7 7IOOC((199*,79B,CDDD??9--i(q6=c%/22c!f<<*,02;,<===q6?"%a&,,sA"6"6KD%)))R!wwyy))))))))))))))) $ dD 9 9IAv.046=0>???5 ?* ?* ?* ?* ?* ?* ?* ?* ?* ?* ?* ?* ?* ?* ?* ?* ?* ?* ?s.L C+ L +C/ /L 2C/ 3AL F E3' F 3E7 7F :E7 ;F > L  F L F D L J>2 L >K L K 6L  LLc Zd}d}tj|j|j}|jd|j}d|z}tj|d} t5} t|d5} i} | D]} | j}t|tr|}n| d}|| kr=d|vrtd |z| | | tj| t!|}|| |< d d d n #1swxYwY|| |\}}|| fi|}|r3|| |\}}|r||kr ||||/t#jd d | \}}tj|nVtj|std|ztj||j}t+| }tj| |}||f}||| |||||t3j||d d d n #1swxYwY|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~dx}}|dt}||vrd|z}||vr||}t|j}||fS)Nr=z %s/PKG-INFOr\)rrr)path_maprrr\rs r: get_versionz!Wheel.update..get_version`sb! !Gd%XX'?'?@C(""#h.h}"---5D= r<c`d} t|}|d}|dkrd|z}nfd||dzddD}|dxxdz cc<|d|ddd |D}n+#t$rt d |YnwxYw|rft| }||_| t}| || t d ||dSdS)Nr(rz%s+1c,g|]}t|Sr@r)rrs r:rz8Wheel.update..update_version..rsHHHSVVHHHr<rr*r+c34K|]}t|VdSr?)rPrs r: z7Wheel.update..update_version..us(1H1HQ#a&&1H1H1H1H1H1Hr<z0Cannot update non-compliant (PEP-440) version %rr)r\legacyzVersion updated from %r to %r) rrrr8rrrrrrrr)rr\updatedrXrr9mdrs r:update_versionz$Wheel.update..update_versionjsxG 4%g..LL%%q55$w.GGHHWQUVV_-B-B3-G-GHHHE"IIINIII)0!),1H1H%1H1H1H)H)H)HJG* 4 4 4 *+244444 4 &4((($ '?@@d6222 #@#@#@KBHRLLLL7==22Q./Dx/OPPP gll8T]CCG $X^^%5%5 6 6 7<<::)""4-@@@w 666#OGX666Y, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7Zs8*J ;B3D;/ J ;D? ?J D? EJ  J$'J$)NFFr?)NN)F)rjrkrl__doc__r rrOpropertyrrrrrrrrrrrrr-r0rrrrrrrrrQr@r<r:rnrnsMI'2'2'2'2R;;X; $$X$++X+ _>_ < ! ! ! !%%%&&&    rrrrh666 k'k'k'Z   D###  0000* 0 0 06?6?6?pccccccr<rncddl}|}g}|ddkre|ddD]:}||rt |nd;t |}|S)Nrglibcrr*)platformlibc_verrr7isdigitrr)rverr]rs r:_get_glibc_versionrsOOO     C F 1vQc"" 8 8A MMAIIKK6#a&&&Q 7 7 7 7v Mr<c  tg}td}ttjddz ddD]9}|d|t |g:g}tjD]J\}}}| dr/|| dddK| tdkr| dt|dg}tg}tjd krt!jd t}|r|\} }}} t'|}| g} | d vr| d | d vr| d| dvr| d| dvr| d| dvr| d|dkr=| D]/} | d|d|d| } | tkr|| 0|dz}|dk=|D]}|D]} |dt(|df|| f|dkrhtj drH| dd} t-}t/|dkr|dkr;|dt(|df|d| zf|dkr;|dt(|df|d| zf|dkr;|dt(|df|d| zf|dt(|df|d|dd|dd| ft1|D]u\}}|dt(|fddf|dkr8|dt(|dfddfvt1|D]k\}}|dd |fddf|dkr3|dd |dfddflt3|S)!zG Return (pyver, abi, arch) tuples compatible with this Python. rrrr4z.abir*r&rqdarwinz(\w+)_(\d+)_(\d+)_(\w+)$)i386ppcfat)rrx86_64fat3)ppc64rfat64)rrintel)rrrrr universalr)linuxlinux_)r&z manylinux1_%s)r& zmanylinux2010_%s)r&zmanylinux2014_%s manylinux_rrr')r5ranger`rr7r8rPrc get_suffixesrRrsortrrrrrerrr IMP_PREFIXrErrgrset)versionsmajorminorabisr^r)r]archesr0rrmatchesrrr~r9rrs r:compatible_tagsrs?|H qMEs'*Q.R8866E 3445555 D(**11 1   V $ $ 1 KK S!,,Q/ 0 0 0IIKKK f}} AsKK FVF |x H0$ 7 7  '(xxzz $D%JJEfG&&u%%%000v&&&***w''')))w'''BBB{+++1**$))E)-uuueeeUUCADyy a(((  1**CC C CD MM277J #<==sDI J J Jf}}!8!8!A!A}||Hb11*,,u::?? rww HQK/H'I'I3'6'='?@@@'' rww HQK/H'I'I3'9D'@'BCCC'' rww HQK/H'I'I3'9D'@'BCCCMM277J +D#E#Ess;@888U1XXX;?4$A#BCCC! C* ))NN 7 rww G455vuEFFF 66 MM277J #;<rsv(''''' ######   ++++++++CCCCCCCCCCCCCC++++++111111111111!!!!!!!!!!!!!!!!!!!!!!!!@???????  8 $ $  73#$$JJ\V$$JJ\UJJJ %Y %&8 9 9 /#*2A2..J z j |~~c3''//S99iw'' 3>>* % %  ++j$ ' ' - -c 2 21 5CC +--Cbj]RZ!! "*]RZ !! RZ) * * BJ@AA6S=={HH//H!!!!!f!!!F  i i i i i Fi i i VMMM`"/##      r<