3 Ävhbã@sÀdZddlmZddlZddlZddlZddlZddlZddlZddl m Z m Z m Z ddl mZddlmZddlm ZddlmZdd lmZejd ejƒjZd Zd d „ZGdd„deƒZdS)zWheels support.é)Ú get_platformN)Ú DistributionÚ PathMetadataÚ parse_version)Úcanonicalize_name)ÚPY3)r)Ú pep425tags)Úwrite_requirementsz‚^(?P.+?)-(?P\d.*?) ((-(?P\d.*?))?-(?P.+?)-(?P.+?)-(?P.+?) )\.whl$zštry: __import__('pkg_resources').declare_namespace(__name__) except ImportError: __path__ = __import__('pkgutil').extend_path(__path__, __name__) c Csæx¸tj|ƒD]ª\}}}tjj||ƒ}x6|D].}tjj||ƒ}tjj|||ƒ}tj||ƒq*WxXttt|ƒƒƒD]D\} } tjj|| ƒ}tjj||| ƒ}tjj |ƒsntj||ƒ|| =qnWq Wx&tj|dd�D]\}}}tj |ƒqÊWdS)zDMove everything under `src_dir` to `dst_dir`, and delete the former.T)ÚtopdownN) ÚosÚwalkÚpathÚrelpathÚjoinÚrenamesÚreversedÚlistÚ enumerateÚexistsÚrmdir) Zsrc_dirZdst_dirÚdirpathZdirnamesÚ filenamesÚsubdirÚfÚsrcÚdstÚnÚd©rú/usr/lib/python3.6/wheel.pyÚunpack!s   r c@s<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)ÚWheelcCsTttjj|ƒƒ}|dkr$td|ƒ‚||_x$|jƒjƒD]\}}t|||ƒq8WdS)Nzinvalid wheel name: %r) Ú WHEEL_NAMEr r ÚbasenameÚ ValueErrorÚfilenameÚ groupdictÚitemsÚsetattr)Úselfr%ÚmatchÚkÚvrrrÚ__init__9s  zWheel.__init__cCs&tj|jjdƒ|jjdƒ|jjdƒƒS)z>List tags (py_version, abi, platform) supported by this wheel.Ú.)Ú itertoolsÚproductÚ py_versionÚsplitÚabiÚplatform)r)rrrÚtagsAs z Wheel.tagscs$tjƒ‰t‡fdd„|jƒDƒdƒS)z5Is the wheel is compatible with the current platform?c3s|]}|ˆkrdVqdS)TNr)Ú.0Út)Úsupported_tagsrrú Jsz&Wheel.is_compatible..F)rZ get_supportedÚnextr5)r)r)r8rÚ is_compatibleGszWheel.is_compatiblecCs*t|j|j|jdkrdntƒd�jƒdS)NÚany)Ú project_nameÚversionr4z.egg)rr=r>r4rÚegg_name)r)rrrr?LszWheel.egg_namecCsJx<|jƒD]0}tj|ƒ}|jdƒr t|ƒjt|jƒƒr |Sq Wtdƒ‚dS)Nz .dist-infoz.unsupported wheel format. .dist-info not found)ZnamelistÚ posixpathÚdirnameÚendswithrÚ startswithr=r$)r)ÚzfÚmemberrArrrÚ get_dist_infoRs   zWheel.get_dist_infocstj|jƒ��ö‰d|j|jf}|jˆƒ‰d|‰‡‡fdd„}|dƒ}|dƒ}t|jdƒƒ}tdƒ|koxtd ƒknsŠtd |ƒ‚t j |ƒˆj |ƒt j j |ˆƒ‰tj|ˆt|ˆƒd �‰d d „‰tttˆˆjƒƒƒƒ‰‡‡‡fdd„ˆjDƒ}t j j |dƒ}t jˆ|ƒt jt j j |dƒt j j |dƒƒttˆ|d�d�} t| jdƒdt j j |dƒƒt j j |ˆƒ‰t j j ˆdƒ} t j j| ƒ�rt j j |ddƒ} t j | ƒxVt j| ƒD]H} | jdƒ�rÖt jt j j | | ƒƒn t jt j j | | ƒt j j | | ƒƒ�q°Wt j| ƒx0t t j j‡fdd„d#DƒƒD]} t!| |ƒ�q$Wt j jˆƒ�rPt jˆƒt j j |dƒ}t j j|ƒ�rt"|ƒ�}|j#ƒj$ƒ}WdQRXxr|D]j}t j j |f|j$d ƒžŽ}t j j |d!ƒ}t j j|ƒ�r’t j j|ƒ �r’t"|d"ƒ�}|j%t&ƒWdQRX�q’WWdQRXdS)$z"Install wheel as an egg directory.z%s-%sz%s.datac sHˆjtjˆ|ƒƒ�,}tr&|jƒjdƒn|jƒ}tjjƒj |ƒSQRXdS)Nzutf-8) Úopenr@rrÚreadÚdecodeÚemailÚparserZParserZparsestr)ÚnameÚfpÚvalue)Ú dist_inforDrrÚ get_metadatabsz*Wheel.install_as_egg..get_metadataZWHEELZMETADATAz Wheel-Versionz1.0z2.0dev0z$unsupported wheel format version: %s)ZmetadatacSsd|_t|ƒS)N)ZmarkerÚstr)ÚreqrrrÚraw_reqxsz%Wheel.install_as_egg..raw_reqc s6i|].}tt‡fdd„tˆˆj|fƒƒDƒƒƒ|“qS)c3s|]}|ˆkr|VqdS)Nr)r6rR)Úinstall_requiresrrr9~sz2Wheel.install_as_egg...)rÚsortedÚmapÚrequires)r6Zextra)ÚdistrTrSrrú |sz(Wheel.install_as_egg..zEGG-INFOzPKG-INFO)rTÚextras_require)ZattrsÚegg_infoNz requires.txtÚscriptsz.pycc3s|]}tjjˆ|ƒVqdS)N)r r r)r6r)Ú dist_datarrr9Ÿsz'Wheel.install_as_egg..ÚdataÚheadersÚpurelibÚplatlibznamespace_packages.txtr.z __init__.pyÚw)r^r_r`ra)'ÚzipfileZZipFiler%r=r>rFrÚgetr$r ÚmkdirZ extractallr rrZ from_locationrrrUrVrWZextrasÚrenameÚSetuptoolsDistributionÚdictr Zget_command_objrÚlistdirrBÚunlinkrÚfilterr rGrHr2ÚwriteÚNAMESPACE_PACKAGE_INIT)r)Zdestination_eggdirZ dist_basenamerPZwheel_metadataZ dist_metadataZ wheel_versionrZr[Z setup_distZdist_data_scriptsZegg_info_scriptsÚentryrZnamespace_packagesrMÚmodZmod_dirZmod_initr)rXr]rOrTrSrDrÚinstall_as_egg\sr                  zWheel.install_as_eggN) Ú__name__Ú __module__Ú __qualname__r-r5r;r?rFrprrrrr!7s  r!)Ú__doc__Zdistutils.utilrrJr/r r@ÚrercZ pkg_resourcesrrrZ!setuptools.extern.packaging.utilsrZsetuptools.extern.sixrZ setuptoolsrgrZsetuptools.command.egg_infor ÚcompileÚVERBOSEr*r"rmr Úobjectr!rrrrÚs&