3 (\@sdZddlmZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl m Z ddl m Z ddlmZddl mZddlmZeZejd ejjZd Zd d ZGd ddZdS)zWheels support.) get_platformN) parse_version)canonicalize_name)PY3) 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 filenamessubdirfsrcdstndrl/private/var/folders/pf/wv4htv3x0qs2c2mp0dnn0kchsvlck3/T/pip-install-rm6ck8ia/setuptools/setuptools/wheel.pyunpack%s    r!c@sheZdZddZddZddZddZd d Zd d Zd dZ e ddZ e ddZ e ddZ dS)WheelcCsTttjj|}|dkr$td|||_x$|jjD]\}}t|||q8WdS)Nzinvalid wheel name: %r) WHEEL_NAMEr r basename ValueErrorfilename groupdictitemssetattr)selfr&matchkvrrr __init__=s  zWheel.__init__cCs&tj|jjd|jjd|jjdS)z>List tags (py_version, abi, platform) supported by this wheel..) itertoolsproduct py_versionsplitabiplatform)r*rrr tagsEs  z Wheel.tagscs$tjtfdd|jDdS)z5Is the wheel is compatible with the current platform?c3s|]}|krdVqdS)TNr).0t)supported_tagsrr Psz&Wheel.is_compatible..F)r get_supportednextr6)r*r)r9r is_compatibleMszWheel.is_compatiblecCs,tj|j|j|jdkrdntdjdS)Nany) project_nameversionr5z.egg) pkg_resources Distributionr?r@r5regg_name)r*rrr rCRszWheel.egg_namecCsJx<|jD]0}tj|}|jdr t|jt|jr |Sq WtddS)Nz .dist-infoz.unsupported wheel format. .dist-info not found)namelist posixpathdirnameendswithr startswithr?r%)r*zfmemberrFrrr get_dist_infoXs   zWheel.get_dist_infoc Cs(tj|j}|j||WdQRXdS)z"Install wheel as an egg directory.N)zipfileZipFiler&_install_as_egg)r*destination_eggdirrIrrr install_as_eggbszWheel.install_as_eggcCs\d|j|jf}|j|}d|}tjj|d}|j|||||j|||j||dS)Nz%s-%sz%s.datazEGG-INFO) r?r@rKr r r _convert_metadata_move_data_entries_fix_namespace_packages)r*rOrIZ dist_basename dist_info dist_dataegg_inforrr rNgs  zWheel._install_as_eggc s&fdd}|d}t|jd}td|ko>tdkn}|sTtd|tj|j|tjj|tj j |tj |dd d t t tjfd d jD}tj|tjtjj|d tjj|dtj t|dd} t| jddtjj|ddS)Nc sHjtj|,}tr&|jjdn|j}tjjj |SQRXdS)Nzutf-8) openrEr rreaddecodeemailparserParserparsestr)namefpvalue)rTrIrr get_metadatassz-Wheel._convert_metadata..get_metadataWHEELz Wheel-Versionz1.0z2.0dev0z$unsupported wheel format version: %s)metadatacSsd|_t|S)N)markerstr)reqrrr raw_reqsz(Wheel._convert_metadata..raw_reqcs2i|]*}tfddtj|fD|qS)c3s|]}|kr|VqdS)Nr)r7rf)install_requiresrr r:sz5Wheel._convert_metadata...)sortedmaprequires)r7extra)distrhrgrr sz+Wheel._convert_metadata..METADATAzPKG-INFO)rhextras_require)attrsrVz requires.txt)rgetr%r mkdir extractallr r rArB from_location PathMetadatarrirjrkextrasrename setuptoolsdictrget_command_obj) rIrOrTrVraZwheel_metadata wheel_versionZwheel_v1rpZ setup_distr)rmrTrhrgrIr rQqs:        zWheel._convert_metadatacstjj|tjjd}tjj|rtjj|dd}tj|xRtj|D]D}|jdrrtjtjj||qNtjtjj||tjj||qNWtj |x.t tjjfddd DD]}t ||qWtjjrtj d S) z,Move data entries to their correct location.scriptszEGG-INFOz.pycc3s|]}tjj|VqdS)N)r r r )r7r)rUrr r:sz+Wheel._move_data_entries..dataheaderspurelibplatlibN)r~rrr) r r r rrslistdirrGunlinkrxrfilterr!)rOrUZdist_data_scriptsZegg_info_scriptsentryrr)rUr rRs&         zWheel._move_data_entriescCstjj|d}tjj|rt|}|jj}WdQRXxl|D]d}tjj|f|jd}tjj|d}tjj|r@tjj| r@t|d}|jtWdQRXq@WdS)Nznamespace_packages.txtr/z __init__.pyw) r r r rrWrXr3writeNAMESPACE_PACKAGE_INIT)rVrOZnamespace_packagesr_modZmod_dirZmod_initrrr rSs    zWheel._fix_namespace_packagesN)__name__ __module__ __qualname__r.r6r=rCrKrPrN staticmethodrQrRrSrrrr r";s  : r")__doc__distutils.utilrrZr0r rErerLrAryrZ!setuptools.extern.packaging.utilsrZsetuptools.extern.sixrrZsetuptools.command.egg_infortype __metaclass__compileVERBOSEr+r#rr!r"rrrr s*