ž 7’Res•c@sddlmZddlZddlZddlZddlZddlmZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlmZmZddlmZmZmZmZmZddlmZddlm Z m!Z!dd l"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 j/e0ƒZ1e2a3e4ed ƒr»d Z5n9ej6j7d ƒrÖdZ5nej6dkrîdZ5ndZ5ej8dƒZ9e9 r$dej:dd…Z9nde9Z;e5e9Z<ej"j=ƒj>ddƒj>ddƒZ?ej8dƒZ@e@o€e@j7dƒr˜e@j>ddƒZ@ndd„ZAeAƒZ@[AejBdejCejDBƒZEejBdejCejDBƒZFejBdƒZGe jHd krd!d"„ZIn d#d"„ZIGd$d%„d%eJƒZKeKƒZLGd&d'„d'eJƒZMd(d)„ZNeNƒZO[Ne2d*d+„ZPdS(,i(uunicode_literalsN(umessage_from_filei(u __version__uDistlibException(u sysconfiguZipFileufsdecodeu text_typeufilter(uInstalledDistribution(uMetadatauMETADATA_FILENAME( u FileOperatoru convert_pathu CSVReaderu CSVWriteruCacheucached_propertyuget_cache_baseu read_exportsutempdir(uNormalizedVersionuUnsupportedVersionErrorupypy_version_infouppujavaujyucliuipucpupy_version_nodotu%s%siupyu-u_u.uSOABIucpython-cCs|dtg}tjdƒr+|jdƒntjdƒrJ|jdƒntjdƒdkro|jdƒnd j|ƒS( NucpuPy_DEBUGudu WITH_PYMALLOCumuPy_UNICODE_SIZEiuuu(u VER_SUFFIXu sysconfiguget_config_varuappendujoin(uparts((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyu _derive_abi;s u _derive_abiur (?P[^-]+) -(?P\d+[^-]*) (-(?P\d+[^-]*))? -(?P\w+\d+(\.\w+\d+)*) -(?P\w+) -(?P\w+) \.whl$ u7 (?P[^-]+) -(?P\d+[^-]*) (-(?P\d+[^-]*))?$ s \s*#![^\r\n]*u/cCs|S(N((uo((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyuZsucCs|jtjdƒS(Nu/(ureplaceuosusep(uo((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyu\scBsS|EeZdZdd„Zdd„Zdd„Zd dd„Zd d „Zd S( uMountercCsi|_i|_dS(N(u impure_wheelsulibs(uself((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyu__init__`s uMounter.__init__cCs!||j|<|jj|ƒdS(N(u impure_wheelsulibsuupdate(uselfupathnameu extensions((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyuaddds u Mounter.addcCsI|jj|ƒ}x0|D](\}}||jkr|j|=qqWdS(N(u impure_wheelsupopulibs(uselfupathnameu extensionsukuv((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyuremovehsuMounter.removecCs"||jkr|}nd}|S(N(ulibsuNone(uselfufullnameupathuresult((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyu find_modulens uMounter.find_modulecCs›|tjkrtj|}nx||jkrAtd|ƒ‚ntj||j|ƒ}||_|jddƒ}t|ƒdkr—|d|_ n|S(Nuunable to find extension for %su.ii( usysumodulesulibsu ImportErroruimpu load_dynamicu __loader__ursplitulenu __package__(uselfufullnameuresultuparts((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyu load_moduleus uMounter.load_moduleN( u__name__u __module__u __qualname__u__init__uadduremoveuNoneu find_moduleu load_module(u __locals__((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyuMounter_s    uMountercBsd|EeZdZdZd1ZdZd0d2d2dd„Ze dd„ƒZ e dd „ƒZ e d d „ƒZ e d d „ƒZdd„Ze dd„ƒZdd„Zd0dd„Zdd„Zdd„Zdd„Zd0d0dd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd2d(d)„Zd*d+„Zd,d-„Zd0d.d/„Zd0S(3uWheelu@ Class to build and install from Wheel files (PEP 427). iusha256cCsÄ||_||_d|_tg|_dg|_dg|_tjƒ|_ |dkr{d|_ d|_ |j |_nEtj|ƒ}|rá|jdƒ}|d|_ |djdd ƒ|_ |d |_|j |_nßtjj|ƒ\}}tj|ƒ}|s!td |ƒ‚n|r?tjj|ƒ|_ n||_|jdƒ}|d|_ |d|_ |d |_|d jd ƒ|_|djd ƒ|_|djd ƒ|_dS(uB Initialise an instance using a (valid) filename. uunoneuanyudummyu0.1unmuvnu_u-ubnuInvalid name or filename: %rupyu.ubiuarN(usignu should_verifyubuildveruPYVERupyveruabiuarchuosugetcwdudirnameuNoneunameuversionufilenameu _filenameuNAME_VERSION_REumatchu groupdictureplaceupathusplitu FILENAME_REuDistlibExceptionuabspath(uselfufilenameusignuverifyumuinfoudirname((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyu__init__sB                uWheel.__init__cCs‡|jrd|j}nd}dj|jƒ}dj|jƒ}dj|jƒ}|jjddƒ}d|j|||||fS(uJ Build and return a filename from the various components. u-uu.u_u%s-%s%s-%s-%s-%s.whl(ubuildverujoinupyveruabiuarchuversionureplaceuname(uselfubuildverupyveruabiuarchuversion((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyufilename¶s uWheel.filenamecCs+tjj|j|jƒ}tjj|ƒS(N(uosupathujoinudirnameufilenameuisfile(uselfupath((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyuexistsÇsu Wheel.existsccsNxG|jD]<}x3|jD](}x|jD]}|||fVq*WqWq WdS(N(upyveruabiuarch(uselfupyveruabiuarch((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyutagsÌsu Wheel.tagscCs-tjj|j|jƒ}d|j|jf}d|}tjdƒ}t |dƒÎ}|j |ƒ}|dj ddƒ}t dd „|Dƒƒ}|d kr¯d } nt } yItj|| ƒ} |j| ƒ"} || ƒ} td | ƒ} WdQXWn"tk r"td | ƒ‚YnXWdQX| S(Nu%s-%su %s.dist-infouutf-8uru Wheel-Versionu.icSsg|]}t|ƒ‘qS((uint(u.0ui((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyu Üs u"Wheel.metadata..uMETADATAufileobju$Invalid wheel, because %s is missing(ii(uosupathujoinudirnameufilenameunameuversionucodecsu getreaderuZipFileuget_wheel_metadatausplitutupleuMETADATA_FILENAMEu posixpathuopenuMetadatauKeyErroru ValueError(uselfupathnameuname_veruinfo_diruwrapperuzfuwheel_metadatauwvu file_versionufnumetadata_filenameubfuwfuresult((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyumetadataÓs(     uWheel.metadatac Csud|j|jf}d|}tj|dƒ}|j|ƒ(}tjdƒ|ƒ}t|ƒ}WdQXt|ƒS(Nu%s-%su %s.dist-infouWHEELuutf-8( unameuversionu posixpathujoinuopenucodecsu getreaderumessage_from_fileudict(uselfuzfuname_veruinfo_dirumetadata_filenameubfuwfumessage((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyuget_wheel_metadataës uWheel.get_wheel_metadatac CsFtjj|j|jƒ}t|dƒ}|j|ƒ}WdQX|S(Nur(uosupathujoinudirnameufilenameuZipFileuget_wheel_metadata(uselfupathnameuzfuresult((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyuinfoôsu Wheel.infocCs¬tj|ƒ}|r2d||jƒd…}nv|jdƒ}|jdƒ}|dksh||krqd}n)|||d…dkr”d}nd}d||}|S(Ns#!pythons s iis (u SHEBANG_REumatchuendufind(uselfudataumucrulfuterm((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyuprocess_shebangûs  uWheel.process_shebangc Cs|dkr|j}nytt|ƒ}Wn"tk rOtd|ƒ‚YnX||ƒjƒ}tj|ƒj dƒj dƒ}||fS(NuUnsupported hash algorithm: %rs=uascii( uNoneu hash_kindugetattruhashlibuAttributeErroruDistlibExceptionudigestubase64uurlsafe_b64encodeurstripudecode(uselfudatau hash_kinduhasheruresult((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyuget_hash s   !uWheel.get_hashc Csht|ƒV}x|D]}|j|ƒqWttjj||ƒƒ}|j|ddfƒWdQXdS(Nu(u CSVWriteruwriterowuto_posixuosupathurelpath(uselfurecordsu record_pathubaseuwriterurowup((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyu write_records  uWheel.write_recordc Csôg}|\}}tt|jƒ}xs|D]k\}} t| dƒ} | jƒ} WdQXd|j| ƒ} tjj| ƒ} |j || | fƒq+Wtjj |dƒ} |j || |ƒt tjj |dƒƒ}|j || fƒdS(Nurbu%s=%suRECORD( ugetattruhashlibu hash_kinduopenureaduget_hashuosupathugetsizeuappendujoinu write_recorduto_posix(uselfuinfoulibdiru archive_pathsurecordsudistinfouinfo_diruhasheruapupufudataudigestusize((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyu write_recordss uWheel.write_recordsc Cs\t|dtjƒA}x7|D]/\}}tjd||ƒ|j||ƒqWWdQXdS(NuwuWrote %s to %s in wheel(uZipFileuzipfileu ZIP_DEFLATEDuloggerudebuguwrite(uselfupathnameu archive_pathsuzfuapup((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyu build_zip.suWheel.build_zipc!sõ|dkri}ntt‡fdd†d%ƒƒd}|dkrjd}tg}tg}tg}n!d}tg}dg}d g}|jd |ƒ|_|jd |ƒ|_ |jd |ƒ|_ ˆ|} d |j |j f} d| } d| } g} xKd&D]C}|ˆkr#q nˆ|}t jj|ƒr x t j|ƒD]ø\}}}xæ|D]Þ}tt jj||ƒƒ}t jj||ƒ}tt jj| ||ƒƒ}| j||fƒ|dkre|jdƒ ret|dƒ}|jƒ}WdQX|j|ƒ}t|dƒ}|j|ƒWdQXqeqeWqOWq q W| }d}xt j|ƒD]÷\}}}||kröxUt|ƒD]G\}}t|ƒ}|jdƒr–t jj||ƒ}||=Pq–q–W|sötdƒ‚nxl|D]d}t|ƒjd'ƒrqýnt jj||ƒ}tt jj||ƒƒ}| j||fƒqýWqnWt j|ƒ}xf|D]^}|d(krtt jj||ƒƒ}tt jj| |ƒƒ}| j||fƒqqWd|pð|jdtd |g}x4|j D])\}}}|jd!|||fƒqWt jj|d"ƒ}t|d#ƒ}|jd$j|ƒƒWdQXtt jj| d"ƒƒ}| j||fƒ|j!|| f| | ƒt jj|j"|j#ƒ} |j$| | ƒ| S()u‰ Build a wheel from files in specified paths, and use any specified tags when determining the name of the wheel. cs |ˆkS(N((uo(upaths(u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyu<suWheel.build..upurelibuplatlibiufalseutrueunoneuanyupyveruabiuarchu%s-%su%s.datau %s.dist-infoudatauheadersuscriptsu.exeurbNuwbu .dist-infou(.dist-info directory expected, not foundu.pycu.pyouRECORDu INSTALLERuSHAREDuWheel-Version: %d.%duGenerator: distlib %suRoot-Is-Purelib: %su Tag: %s-%s-%suWHEELuwu (upurelibuplatlib(udatauheadersuscripts(u.pycu.pyo(uRECORDu INSTALLERuSHARED(%uNoneulistufilteruIMPVERuABIuARCHuPYVERugetupyveruabiuarchunameuversionuosupathuisdiruwalkufsdecodeujoinurelpathuto_posixuappenduendswithuopenureaduprocess_shebanguwriteu enumerateuAssertionErrorulistdiru wheel_versionu __version__utagsu write_recordsudirnameufilenameu build_zip(!uselfupathsutagsu wheel_versionulibkeyuis_pureu default_pyveru default_abiu default_archulibdiruname_verudata_diruinfo_diru archive_pathsukeyupathurootudirsufilesufnupurpuapufudataudistinfouiudnuwheel_metadataupyveruabiuarchupathname((upathsu2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyubuild4s”  %              %      u Wheel.buildcBIKs |j}|jdƒ}|jdd9ƒ}tjj|j|jƒ}d|j|j f}d|} d|} t j| t ƒ} t j| dƒ} t j| dƒ} t j dƒ}t|d ƒ¶}|j| ƒ}||ƒ}t|ƒ}Wd QX|d jd d ƒ}tdd„|Dƒƒ}||jkrM|rM||j|ƒn|ddkrj|d}n |d}i}|j| ƒD}td|ƒ,}x"|D]}|d}||||=s¾|>r«|jddƒ}?tjj>|?ƒsñt?d4ƒ‚n|?|_xF|=j@ƒD]8\}9};d5|9|;f}@|j3|@ƒ}3|j4|3ƒqW|>r¨id:d*6}AxL|>j@ƒD];\}9};d5|9|;f}@|j3|@|Aƒ}3|j4|3ƒqcWq¨q«ntjj|| ƒ}tA|ƒ}4tB|ƒ}|d=|d=||d6<|4jC||ƒ}|r | j.|ƒn|4jD| |d7|ƒ|4SWn,t0k rb t*jEd8ƒ|jFƒ‚YnXWd tGjH|!ƒXWd QXd S(<uÁ 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. The return value is a :class:`InstalledDistribution` instance unless ``options.lib_only`` is True, in which case the return value is ``None``. uwarnerulib_onlyu%s-%su%s.datau %s.dist-infouWHEELuRECORDuutf-8urNu Wheel-Versionu.icSsg|]}t|ƒ‘qS((uint(u.0ui((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyu ¿s u!Wheel.install..uRoot-Is-Purelibutrueupurelibuplatlibustreamiuuscriptsudry_runu /RECORD.jwsiusize mismatch for %su=udigest mismatch for %sulib_only: skipping %su.exeu/urbudigest mismatch on write for %su.pyuByte-compilation faileduexc_infoulib_only: returning Noneu1.0uentry_points.txtuconsoleuguiu %s_scriptsuwrap_%su%s:%su %suAUnable to read legacy script metadata, so cannot generate scriptsucommandsu8Unable to read JSON metadata, so cannot generate scriptsu wrap_consoleuwrap_guiuValid script path not specifiedu%s = %sulibuprefixuinstallation failed.FT(uconsoleugui(Iudry_runugetuFalseuosupathujoinudirnameufilenameunameuversionu posixpathuMETADATA_FILENAMEucodecsu getreaderuZipFileuopenumessage_from_fileusplitutupleu wheel_versionu CSVReaderu FileOperatoruTrueurecordusysudont_write_bytecodeutempfileumkdtempu source_diruNoneu target_diruinfolistu isinstanceu text_typeudecodeuendswithustru file_sizeuDistlibExceptionureaduget_hashu startswithuloggerudebugu convert_pathu copy_streamuappendu byte_compileu Exceptionuwarningubasenameumakeuset_executable_modeuextenduinfou read_exportsuvaluesuprefixusuffixuflagsujsonuloaduisdiru ValueErroruitemsuInstalledDistributionudictuwrite_shared_locationsuwrite_installed_filesu exceptionurollbackushutilurmtree(Buselfupathsumakerukwargsudry_runuwarnerulib_onlyupathnameuname_verudata_diruinfo_diru metadata_nameuwheel_metadata_nameu record_nameuwrapperuzfubwfuwfumessageuwvu file_versionulibdirurecordsubfureaderurowupudata_pfxuinfo_pfxu script_pfxufileopubcuoutfilesuworkdiruzinfouarcnameu u_arcnameukinduvalueudatau_udigestu is_scriptuwhereurpuoutfileu newdigestupycufnuworknameudnu filenamesudistucommandsuepuepdataukeyukuduvusuconsole_scriptsu gui_scriptsu script_diruscriptuoptions((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyuinstallœs>                #   "                 "           u Wheel.installcCsMtdkrItjjtƒtdƒtjdd…ƒ}t |ƒantS(Nu dylib-cachei( ucacheuNoneuosupathujoinuget_cache_baseustrusysuversionuCache(uselfubase((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyu_get_dylib_cache~s  uWheel._get_dylib_cachecCsïtjj|j|jƒ}d|j|jf}d|}tj|dƒ}tj dƒ}g}t |dƒx}y\|j |ƒG}||ƒ} t j | ƒ} |jƒ} | j|ƒ} tjj| j| ƒ} tjj| ƒsùtj| ƒnxÍ| jƒD]¿\}}tjj| t|ƒƒ}tjj|ƒsHd}nQtj|ƒj}tjj|ƒ}|j|ƒ}tj|jŒ}||k}|r²|j|| ƒn|j||fƒqWWdQXWntk räYnXWdQX|S(Nu%s-%su %s.dist-infou EXTENSIONSuutf-8urT( uosupathujoinudirnameufilenameunameuversionu posixpathucodecsu getreaderuZipFileuopenujsonuloadu_get_dylib_cacheu prefix_to_dirubaseuisdirumakedirsuitemsu convert_pathuexistsuTrueustatust_mtimeudatetimeu fromtimestampugetinfou date_timeuextractuappenduKeyError(uselfupathnameuname_veruinfo_diruarcnameuwrapperuresultuzfubfuwfu extensionsucacheuprefixu cache_baseunameurelpathudestuextractu file_timeuinfou wheel_time((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyu_get_extensions‡s>     !  uWheel._get_extensionscCs t|ƒS(uM Determine if a wheel is compatible with the running system. (u is_compatible(uself((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyu is_compatible©suWheel.is_compatiblecCsdS(uP Determine if a wheel is asserted as mountable by its metadata. T(uTrue(uself((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyu is_mountable¯suWheel.is_mountablecCs tjjtjj|j|jƒƒ}|jƒsLd|}t|ƒ‚n|jƒsqd|}t|ƒ‚n|t jkr“t j d|ƒns|r¬t jj |ƒnt jj d|ƒ|jƒ}|rtt jkrót jj tƒntj||ƒndS(Nu)Wheel %s not compatible with this Python.u$Wheel %s is marked as not mountable.u%s already in pathi(uosupathuabspathujoinudirnameufilenameu is_compatibleuDistlibExceptionu is_mountableusysuloggerudebuguappenduinsertu_get_extensionsu_hooku meta_pathuadd(uselfuappendupathnameumsgu extensions((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyumountµs"'     u Wheel.mountcCsªtjjtjj|j|jƒƒ}|tjkrItjd|ƒn]tjj |ƒ|t j krxt j |ƒnt j s¦t tj kr¦tj j t ƒq¦ndS(Nu%s not in path( uosupathuabspathujoinudirnameufilenameusysuloggerudebuguremoveu_hooku impure_wheelsu meta_path(uselfupathname((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyuunmountÊs' u Wheel.unmountc$CsŸtjj|j|jƒ}d|j|jf}d|}d|}tj|tƒ}tj|dƒ}tj|dƒ}t j dƒ}t |dƒ} | j |ƒ} || ƒ} t | ƒ} WdQX| djd d ƒ} td d „| Dƒƒ}i}| j |ƒD}td |ƒ,}x"|D]}|d}|||çs u Wheel.verify..ustreamiu..uinvalid entry in wheel: %ru /RECORD.jwsiusize mismatch for %su=udigest mismatch for %s(uosupathujoinudirnameufilenameunameuversionu posixpathuMETADATA_FILENAMEucodecsu getreaderuZipFileuopenumessage_from_fileusplitutupleu CSVReaderuinfolistu isinstanceu text_typeudecodeuDistlibExceptionuendswithustru file_sizeureaduget_hash(uselfupathnameuname_verudata_diruinfo_diru metadata_nameuwheel_metadata_nameu record_nameuwrapperuzfubwfuwfumessageuwvu file_versionurecordsubfureaderurowupuzinfouarcnameu u_arcnameukinduvalueudatau_udigest((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyuverifyÖsT          #   u Wheel.verifycKsœdd„}dd„}tjj|j|jƒ}d|j|jf}d|}tj|dƒ} tƒ(} t |dƒº} i} xª| j ƒD]œ} | j}t |t ƒr½|}n|j d ƒ}|| krÞq–nd |krýtd |ƒ‚n| j| | ƒtjj| t|ƒƒ}|| |.get_versionc Ss)d}y t|ƒ}|jdƒ}|dkr=d|}nhdd„||dd…jdƒDƒ}|dd7/s u8Wheel.update..update_version..iu.u%s-%scss|]}t|ƒVqdS(N(ustr(u.0ui((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyu 2su7Wheel.update..update_version..u0Cannot update non-compliant (PEP-440) version %rupathulegacyuVersion updated from %r to %riÿÿÿÿ( uNoneuNormalizedVersionufindusplitujoinuUnsupportedVersionErroruloggerudebuguMetadatauversionuendswithuMETADATA_FILENAMEuwrite(uversionupathuupdateduvuiupartsumdulegacy((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyuupdate_version's(   *$     u$Wheel.update..update_versionu%s-%su %s.dist-infouRECORDuruutf-8u..uinvalid entry in wheel: %rNusuffixu.whluprefixu wheel-update-udiruNot a directory: %r(uosupathujoinudirnameufilenameunameuversionu posixpathutempdiruZipFileuinfolistu isinstanceu text_typeudecodeuDistlibExceptionuextractu convert_pathuNoneutempfileumkstempucloseuisdirulistuitemsu write_recordsu build_zipushutilucopyfile(uselfumodifierudest_dirukwargsu get_versionuupdate_versionupathnameuname_veruinfo_diru record_nameuworkdiruzfupath_mapuzinfouarcnameu u_arcnameupathuoriginal_versionu_umodifieducurrent_versionufdunewpathu archive_pathsudistinfouinfo((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyuupdate sX           u Wheel.updateN(iiF( u__name__u __module__u __qualname__u__doc__u wheel_versionu hash_kinduNoneuFalseu__init__upropertyufilenameuexistsutagsucached_propertyumetadatauget_wheel_metadatauinfouprocess_shebanguget_hashu write_recordu write_recordsu build_zipubuilduinstallu_get_dylib_cacheu_get_extensionsu is_compatibleu is_mountableumountuunmountuverifyuupdate(u __locals__((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyuWheel…s2)     h â "   6uWheelcCs†tg}td}xGttjddddƒD](}|jdj|t|ƒgƒƒq1Wg}xLtjƒD]>\}}}|j dƒrp|j|j ddƒdƒqpqpW|j ƒt dkrÛ|j dt ƒn|jdƒg}tg}tjdkr=tjd tƒ}|r=|jƒ\} }}} t|ƒ}| g} | dkrg| jd ƒn| dkrƒ| jdƒn| dkrŸ| jdƒn| dkr»| jdƒn| dkr×| jdƒnx`|dkr6x@| D]8} d| ||| f} | tkrí|j| ƒqíqíW|d8}qÚWq=nxH|D]@}x7|D]/} |jdjt|dfƒ|| fƒqQWqDWxwt|ƒD]i\}}|jdjt|fƒddfƒ|dkr•|jdjt|dfƒddfƒq•q•Wxwt|ƒD]i\}}|jdjd|fƒddfƒ|dkr|jdjd|dfƒddfƒqqWt|ƒS(uG Return (pyver, abi, arch) tuples compatible with this Python. iiuu.abiu.iunoneudarwinu(\w+)_(\d+)_(\d+)_(\w+)$ui386uppcufatux86_64ufat3uppc64ufat64uintelu universalu %s_%s_%s_%suanyupyiÿÿÿÿiÿÿÿÿ(ui386uppc(ui386uppcux86_64(uppc64ux86_64(ui386ux86_64(ui386ux86_64uinteluppcuppc64(u VER_SUFFIXurangeusysu version_infouappendujoinustruimpu get_suffixesu startswithusplitusortuABIuinsertuARCHuplatformureumatchugroupsuintu IMP_PREFIXu enumerateuset(uversionsumajoruminoruabisusuffixu_uresultuarchesumunameuarchumatchesumatchusuabiuiuversion((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyucompatible_tagsqs`  $&$               1% 0% 0ucompatible_tagscCsŽt|tƒst|ƒ}nd}|dkr9t}nxN|D]F\}}}||jkr@||jkr@||jkr@d}Pq@q@W|S(NFT( u isinstanceuWheeluFalseuNoneuCOMPATIBLE_TAGSupyveruabiuarchuTrue(uwheelutagsuresultuveruabiuarch((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyu is_compatible´s  -u is_compatible(Qu __future__uunicode_literalsubase64ucodecsudatetimeudistutils.utilu distutilsuemailumessage_from_fileuhashlibuimpujsonulogginguosu posixpathureushutilusysutempfileuzipfileuu __version__uDistlibExceptionucompatu sysconfiguZipFileufsdecodeu text_typeufilterudatabaseuInstalledDistributionumetadatauMetadatauMETADATA_FILENAMEuutilu FileOperatoru convert_pathu CSVReaderu CSVWriteruCacheucached_propertyuget_cache_baseu read_exportsutempdiruversionuNormalizedVersionuUnsupportedVersionErroru getLoggeru__name__uloggeruNoneucacheuhasattru IMP_PREFIXuplatformu startswithuget_config_varu VER_SUFFIXu version_infouPYVERuIMPVERu get_platformureplaceuARCHuABIu _derive_abiucompileu IGNORECASEuVERBOSEu FILENAME_REuNAME_VERSION_REu SHEBANG_REuseputo_posixuobjectuMounteru_hookuWheelucompatible_tagsuCOMPATIBLE_TAGSu is_compatible(((u2/tmp/pip-zej_zi-build/pip/_vendor/distlib/wheel.pyusx               (@     '  # ÿÿî >