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 Wx0tj|ddD]\}}}| st tj |qWdS)zDMove everything under `src_dir` to `dst_dir`, and delete the former.T)topdownN) oswalkpathrelpathjoinrenamesreversedlist enumerateexistsAssertionErrorrmdir) Zsrc_dirZdst_dirdirpathZdirnames filenamessubdirfsrcdstndr /wheel.pyunpacks    r c@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_supportednextr5)r)r)r8r is_compatibleEszWheel.is_compatiblecCs*t|j|j|jdkrdntdjdS)Nany) project_nameversionr4z.egg)rr=r>r4regg_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)r6rL)install_requiresrrr9rsz2Wheel.install_as_egg...)rsortedmaprequires)r6Zextra)distrNrMrr psz(Wheel.install_as_egg..zEGG-INFOzPKG-INFO)rNextras_require)Zattrsegg_infoNz requires.txtscriptsz.pycc3s|]}tjj|VqdS)N)r r r)r6r) dist_datarrr9sz'Wheel.install_as_egg..dataheaderspurelibplatlibznamespace_packages.txtr.z __init__.pyw)rXrYrZr[)&zipfileZZipFiler%r=r>rgetr$r mkdirZ extractallr rrZ from_locationrrrOrPrQZextrasrenameSetuptoolsDistributiondictrZget_command_objrlistdirendswithunlinkrfilterr r@rAr2writeNAMESPACE_PACKAGE_INIT)r)Zdestination_eggdirZ dist_basenamerJZwheel_metadataZ dist_metadataZ wheel_versionrTrUZ setup_distZdist_data_scriptsZegg_info_scriptsentryrZnamespace_packagesrFmodZmod_dirZmod_initr)rRrWrHrNrMrIrinstall_as_eggPsr                 zWheel.install_as_eggN)__name__ __module__ __qualname__r-r5r;r?rkrrrrr!5s r!)__doc__Zdistutils.utilrrCr/r rer]Z pkg_resourcesrrrZpkg_resources.extern.sixrZ setuptoolsrarZsetuptools.command.egg_inforcompileVERBOSEr*r"rhr objectr!rrrrs"