3 t^A@sdZddlmZddlZddlZddlZddlZddlZddlm Z m Z m Z ddl m Z ddlm ZddlmZddlmZejd ejjZd Zd d ZGd ddeZdS)zWheels support.) get_platformN) Distribution PathMetadata parse_version)PY3)r) pep425tags)write_requirementsz^(?P.+?)-(?P\d.*?) ((-(?P\d.*?))?-(?P.+?)-(?P.+?)-(?P.+?) )\.whl$ztry: __import__('pkg_resources').declare_namespace(__name__) except ImportError: __path__ = __import__('pkgutil').extend_path(__path__, __name__) c Csxtj|D]\}}}tjj||}x6|D].}tjj||}tjj|||}tj||q*WxXttt|D]D\} } tjj|| }tjj||| }tjj |sntj|||| =qnWq Wx&tj|ddD]\}}}tj |qWdS)zDMove everything under `src_dir` to `dst_dir`, and delete the former.T)topdownN) oswalkpathrelpathjoinrenamesreversedlist enumerateexistsrmdir) Zsrc_dirZdst_dirdirpathZdirnames filenamessubdirfsrcdstndr /wheel.pyunpacks   rc@s4eZdZddZddZddZddZd d Zd S) WheelcCsTttjj|}|dkr$td|||_x$|jjD]\}}t|||q8WdS)Nzinvalid wheel name: %r) WHEEL_NAMEr r basename ValueErrorfilename groupdictitemssetattr)selfr$matchkvrrr__init__7s  zWheel.__init__cCs&tj|jjd|jjd|jjdS)z>List tags (py_version, abi, platform) supported by this wheel..) itertoolsproduct py_versionsplitabiplatform)r(rrrtags?s z Wheel.tagscs$tjtfdd|jDdS)z5Is the wheel is compatible with the current platform?c3s|]}|krdVqdS)TNr).0t)supported_tagsrr Hsz&Wheel.is_compatible..F)rZ get_supportednextr4)r(r)r7r is_compatibleEszWheel.is_compatiblecCs*t|j|j|jdkrdntdjdS)Nany) project_nameversionr3z.egg)rr<r=r3regg_name)r(rrrr>JszWheel.egg_namecs tj|jd|j|jf}d|d|fdd}|d}|d}t|jd}td |kovtd knstd |tj |j |tj j |t j|t|d d dtttjfddjD}tj j |d}tj|tjtj j |dtj j |dtt|dd} t| jddtj j |dtj j |tj j d} tj j| rtj j |dd} tj | xVtj| D]H} | jdrtjtj j | | n tjtj j | | tj j | | qWtj| x0ttj jfddd$DD]} t | |q"Wtj jrNtjtj j |d }tj j|rt!|}|j"j#}WdQRXxr|D]j}tj j |f|j#d!}tj j |d"}tj j|rtj j| rt!|d#}|j$t%WdQRXqWWdQRXdS)%z"Install wheel as an egg directory.z%s-%sz %s.dist-infoz%s.datac sHjd|f,}tr&|jjdn|j}tjjj|SQRXdS)Nz%s/%szutf-8)openrreaddecodeemailparserZParserZparsestr)namefpvalue) dist_infozfrr get_metadataVsz*Wheel.install_as_egg..get_metadataZWHEELZMETADATAz Wheel-Versionz1.0z2.0dev0z$unsupported wheel format version: %s)ZmetadatacSsd|_t|S)N)Zmarkerstr)reqrrrraw_reqlsz%Wheel.install_as_egg..raw_reqc s6i|].}ttfddtj|fD|qS)c3s|]}|kr|VqdS)Nr)r5rK)install_requiresrrr8rsz2Wheel.install_as_egg...)rsortedmaprequires)r5Zextra)distrMrLrr psz(Wheel.install_as_egg..zEGG-INFOzPKG-INFO)rMextras_require)Zattrsegg_infoNz requires.txtscriptsz.pycc3s|]}tjj|VqdS)N)r r r)r5r) dist_datarrr8sz'Wheel.install_as_egg..dataheaderspurelibplatlibznamespace_packages.txtr-z __init__.pyw)rWrXrYrZ)&zipfileZZipFiler$r<r=rgetr#r mkdirZ extractallr rrZ from_locationrrrNrOrPZextrasrenameSetuptoolsDistributiondictrZget_command_objrlistdirendswithunlinkrfilterrr?r@r1writeNAMESPACE_PACKAGE_INIT)r(Zdestination_eggdirZ dist_basenamerIZwheel_metadataZ dist_metadataZ wheel_versionrSrTZ setup_distZdist_data_scriptsZegg_info_scriptsentryrZnamespace_packagesrEmodZmod_dirZmod_initr)rQrVrGrMrLrHrinstall_as_eggPsr                 zWheel.install_as_eggN)__name__ __module__ __qualname__r,r4r:r>rjrrrrr 5s r )__doc__Zdistutils.utilrrBr.r rer\Z pkg_resourcesrrrZpkg_resources.extern.sixrZ setuptoolsr`rZsetuptools.command.egg_inforcompileVERBOSEr)r!rgrobjectr rrrrs"