3 ]>@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) src_dirZdst_dirdirpathdirnames filenamessubdirfsrcdstndr 6/tmp/pip-build-8jg9gmni/setuptools/setuptools/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'matchkvr r r!__init__7s  zWheel.__init__cCs&tj|jjd|jjd|jjdS)z>List tags (py_version, abi, platform) supported by this wheel..) itertoolsproduct py_versionsplitabiplatform)r+r r r!tags?s z Wheel.tagscs$tjtfdd|jDdS)z5Is the wheel is compatible with the current platform?c3s|]}|krdVqdS)TNr ).0t)supported_tagsr r! Hsz&Wheel.is_compatible..F)r get_supportednextr7)r+r )r:r! is_compatibleEszWheel.is_compatiblecCs*t|j|j|jdkrdntdjdS)Nany) project_nameversionr6z.egg)rr@rAr6regg_name)r+r r r!rBJszWheel.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)openrreaddecodeemailparserParserparsestr)namefpvalue) dist_infozfr r! get_metadataVsz*Wheel.install_as_egg..get_metadataWHEELMETADATAz Wheel-Versionz1.0z2.0dev0z$unsupported wheel format version: %s)metadatacSsd|_t|S)N)markerstr)reqr r r!raw_reqlsz%Wheel.install_as_egg..raw_reqc s6i|].}ttfddtj|fD|qS)c3s|]}|kr|VqdS)Nr )r8rU)install_requiresr r!r;rsz2Wheel.install_as_egg...)rsortedmaprequires)r8extra)distrWrVr r! psz(Wheel.install_as_egg..zEGG-INFOzPKG-INFO)rWextras_require)attrsegg_infoNz requires.txtscriptsz.pycc3s|]}tjj|VqdS)N)r r r)r8r) dist_datar r!r;sz'Wheel.install_as_egg..dataheaderspurelibplatlibznamespace_packages.txtr0z __init__.pyw)rcrdrerf)&zipfileZipFiler'r@rArgetr&r mkdir extractallr rr from_locationrrrXrYrZextrasrenameSetuptoolsDistributiondictrget_command_objrlistdirendswithunlinkrfilterr"rCrDr4writeNAMESPACE_PACKAGE_INIT)r+Zdestination_eggdirZ dist_basenamerOZwheel_metadataZ dist_metadata wheel_versionr^r`Z setup_distZdist_data_scriptsZegg_info_scriptsentryrZnamespace_packagesrKmodZmod_dirZmod_initr )r\rbrMrWrVrNr!install_as_eggPsr                 zWheel.install_as_eggN)__name__ __module__ __qualname__r/r7r>rBr|r r r r!r#5s r#)__doc__distutils.utilrrFr1r rerh pkg_resourcesrrrZsetuptools.extern.sixr setuptoolsrprZsetuptools.command.egg_inforcompileVERBOSEr,r$rxr"objectr#r r r r!s"