a `` @sdZddlmZddlmZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl m Z ddlmZddlmZddlmZe d e jjZd Zd d ZGd ddZdS)zWheels support.) get_platform)logN) parse_version)sys_tags)canonicalize_name)write_requirementsz^(?P.+?)-(?P\d.*?) ((-(?P\d.*?))?-(?P.+?)-(?P.+?)-(?P.+?) )\.whl$z8__import__('pkg_resources').declare_namespace(__name__) c Cst|D]\}}}tj||}|D].}tj||}tj|||}t||q&ttt|D]D\} } tj|| }tj||| }tj |sft|||| =qfq tj|ddD]\}}}|rJt |qdS)zDMove everything under `src_dir` to `dst_dir`, and delete the former.T)topdownN) oswalkpathrelpathjoinrenamesreversedlist enumerateexistsrmdir) Zsrc_dirZdst_dirdirpathZdirnames filenamessubdirfsrcZdstndr2/usr/lib/python3/dist-packages/setuptools/wheel.pyunpacks   rc@sheZdZddZddZddZddZd d Zd d Zd dZ e ddZ e ddZ e ddZ dS)WheelcCsPttj|}|dur$td|||_|D]\}}t|||q6dS)Nzinvalid wheel name: %r) WHEEL_NAMEr r basename ValueErrorfilename groupdictitemssetattr)selfr"matchkvrrr__init__6s  zWheel.__init__cCs&t|jd|jd|jdS)z>List tags (py_version, abi, platform) supported by this wheel..) itertoolsproductZ py_versionsplitabiplatformr&rrrtags>s    z Wheel.tagscs0tddtDtfdd|DdS)z5Is the wheel is compatible with the current platform?css|]}|j|j|jfVqdSN)Z interpreterr/r0.0trrr Hsz&Wheel.is_compatible..c3s|]}|vrdVqdS)TNrr4Zsupported_tagsrrr7JF)setrnextr2r1rr8r is_compatibleFszWheel.is_compatiblecCs,tj|j|j|jdkrdntddS)Nany) project_nameversionr0z.egg) pkg_resources Distributionr>r?r0regg_namer1rrrrBLs zWheel.egg_namecCsJ|D]4}t|}|drt|t|jr|SqtddS)Nz .dist-infoz.unsupported wheel format. .dist-info not found)Znamelist posixpathdirnameendswithr startswithr>r!)r&zfmemberrDrrr get_dist_infoRs    zWheel.get_dist_infocCs<t|j}|||Wdn1s.0YdS)z"Install wheel as an egg directory.N)zipfileZZipFiler"_install_as_egg)r&destination_eggdirrGrrrinstall_as_egg\szWheel.install_as_eggcCs\d|j|jf}||}d|}tj|d}|||||||||||dS)Nz%s-%sz%s.dataEGG-INFO) r>r?rIr r r _convert_metadata_move_data_entries_fix_namespace_packages)r&rLrGZ dist_basename dist_info dist_dataegg_inforrrrKas  zWheel._install_as_eggc sVfdd}|d}t|d}td|ko>tdkn}|sTtd|t||tj|tj j |t |dd d t t tfd d jD}t|ttj|d tj|dtj t|dd} tjj} ttjz*t| ddtj|dWt| n t| 0dS)NcsTt|.}|d}tj|WdS1sF0YdS)Nzutf-8) openrCr readdecodeemailparserZParserZparsestr)namefpvalue)rRrGrr get_metadatamsz-Wheel._convert_metadata..get_metadataZWHEELz Wheel-Versionz1.0z2.0dev0z$unsupported wheel format version: %s)metadatacSsd|_t|Sr3)Zmarkerstr)reqrrrraw_reqsz(Wheel._convert_metadata..raw_reqc s2i|]*}|tfddt|fDqS)c3s|]}|vr|VqdSr3r)r5r`)install_requiresrrr7sz5Wheel._convert_metadata...)sortedmaprequires)r5Zextra)distrbrarr sz+Wheel._convert_metadata..ZMETADATAzPKG-INFO)rbextras_require)attrsrTz requires.txt)rgetr!r mkdirZ extractallr r r@rAZ from_locationZ PathMetadatarrcrdreZextrasrename setuptoolsdictrZ _global_logZ thresholdZ set_thresholdZWARNrZget_command_obj) rGrLrRrTr]Zwheel_metadataZ wheel_versionZwheel_v1rhZ setup_distZ log_thresholdr)rfrRrbrarGrrOksR        zWheel._convert_metadatacstj|tjd}tj|rtj|dd}t|t|D]D}|drpttj||qLttj||tj||qLt |t tjjfdddDD]}t ||qtjrt dS)z,Move data entries to their correct location.ZscriptsrNz.pycc3s|]}tj|VqdSr3)r r r )r5rrSrrr7sz+Wheel._move_data_entries..)dataZheadersZpurelibZplatlibN) r r r rrklistdirrEunlinkrlrfilterr)rLrSZdist_data_scriptsZegg_info_scriptsentryrrrorrPs*         zWheel._move_data_entriesc Cstj|d}tj|rt|}|}Wdn1sD0Y|D]}tjj|g|dR}tj|d}tj|st|tj|sRt|d}|t WdqR1s0YqRdS)Nznamespace_packages.txtr+z __init__.pyw) r r r rrUrVr.rkwriteNAMESPACE_PACKAGE_INIT)rTrLZnamespace_packagesr[modZmod_dirZmod_initrrrrQs  *    zWheel._fix_namespace_packagesN)__name__ __module__ __qualname__r*r2r<rBrIrMrK staticmethodrOrPrQrrrrr4s   ? r)__doc__Zdistutils.utilrZ distutilsrrXr,r rCrerJr@rmrZ setuptools.extern.packaging.tagsrZ!setuptools.extern.packaging.utilsrZsetuptools.command.egg_inforcompileVERBOSEr'rrwrrrrrrs,