U Qab@sdZddlmZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl m Z ddl m Z ddlmZddl mZddlmZeZed 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 Cst|D]\}}}tj||}|D].}tj||}tj|||}t||q&ttt|D]D\} } tj|| }tj||| }tj |sft|||| =qfq tj|ddD]\}}}|rt t |qdS)zDMove everything under `src_dir` to `dst_dir`, and delete the former.T)topdownN) oswalkpathrelpathjoinrenamesreversedlist enumerateexistsAssertionErrorrmdir) Zsrc_dirZdst_dirdirpathZdirnames filenamessubdirfsrcZdstndr4/usr/lib/python3.8/site-packages/setuptools/wheel.pyunpack%s   rc@sheZdZddZddZddZddZd d Zd d Zd dZ e ddZ e ddZ e ddZ dS)WheelcCsPttj|}|dkr$td|||_|D]\}}t|||q6dS)Nzinvalid wheel name: %r) WHEEL_NAMEr r basename ValueErrorfilename groupdictitemssetattr)selfr#matchkvrrr__init__=s  zWheel.__init__cCs&t|jd|jd|jdS)z>List tags (py_version, abi, platform) supported by this wheel..) itertoolsproductZ py_versionsplitZabiplatformr'rrrtagsEs    z Wheel.tagscs$ttfdd|DdS)z5Is the wheel is compatible with the current platform?c3s|]}|krdVqdS)TNr).0tZsupported_tagsrr Psz&Wheel.is_compatible..F)rZ get_supportednextr2r1rr5r is_compatibleMszWheel.is_compatiblecCs,tj|j|j|jdkrdntddS)Nany) project_nameversionr0z.egg) pkg_resources Distributionr:r;r0regg_namer1rrrr>RszWheel.egg_namecCsJ|D]4}t|}|drt|t|jr|SqtddS)Nz .dist-infoz.unsupported wheel format. .dist-info not found)Znamelist posixpathdirnameendswithr startswithr:r")r'zfmemberr@rrr get_dist_infoXs    zWheel.get_dist_infoc Cs(t|j}|||W5QRXdS)z"Install wheel as an egg directory.N)zipfileZZipFiler#_install_as_egg)r'destination_eggdirrCrrrinstall_as_eggbszWheel.install_as_eggcCs\d|j|jf}||}d|}tj|d}|||||||||||dS)Nz%s-%sz%s.dataEGG-INFO) r:r;rEr r r _convert_metadata_move_data_entries_fix_namespace_packages)r'rHrCZ dist_basename dist_info dist_dataegg_inforrrrGgs  zWheel._install_as_eggc s&fdd}|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} t| ddtj|ddS)Nc sTt|8}tr&|dn|}tj |W5QRSQRXdS)Nzutf-8) openr?r rreaddecodeemailparserZParserZparsestr)namefpvalue)rNrCrr get_metadatassz-Wheel._convert_metadata..get_metadataZWHEELz Wheel-Versionz1.0z2.0dev0z$unsupported wheel format version: %s)ZmetadatacSsd|_t|SN)Zmarkerstr)reqrrrraw_reqsz(Wheel._convert_metadata..raw_reqc s2i|]*}|tfddt|fDqS)c3s|]}|kr|VqdSrZr)r3r\)install_requiresrrr6sz5Wheel._convert_metadata...)sortedmaprequires)r3Zextra)distr^r]rr s  z+Wheel._convert_metadata..ZMETADATAzPKG-INFO)r^extras_require)ZattrsrPz requires.txt)rgetr"r mkdirZ extractallr r r<r=Z from_locationZ PathMetadatarr_r`raZextrasrename setuptoolsdictrZget_command_obj) rCrHrNrPrYZwheel_metadataZ wheel_versionZwheel_v1rdZ setup_distr)rbrNr^r]rCrrKqsL       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.ZscriptsrJz.pycc3s|]}tj|VqdSrZ)r r r )r3rrOrrr6sz+Wheel._move_data_entries..)dataZheadersZpurelibZplatlibN) r r r rrflistdirrAunlinkrgrfilterr)rHrOZdist_data_scriptsZegg_info_scriptsentryrrrjrrLs.         zWheel._move_data_entriesc Cstj|d}tj|rt|}|}W5QRX|D]b}tjj|f|d}tj|d}tj|r>tj|s>t|d}|tW5QRXq>dS)Nznamespace_packages.txtr,z __init__.pyw) r r r rrQrRr/writeNAMESPACE_PACKAGE_INIT)rPrHZnamespace_packagesrWmodZmod_dirZmod_initrrrrMs   zWheel._fix_namespace_packagesN)__name__ __module__ __qualname__r+r2r8r>rErIrG staticmethodrKrLrMrrrrr;s   9 r)__doc__Zdistutils.utilrrTr-r r?rerFr<rhrZ!setuptools.extern.packaging.utilsrZsetuptools.extern.sixrrZsetuptools.command.egg_infortypeZ __metaclass__compileVERBOSEr(r rrrrrrrrs,