a oe!@sdZddlZddlZddlZddlZddlZddlZddlZddlZddl m Z ddl Z ddl m ZddlmZddlmZddlmZmZddlmZed ejjZd Zejdd d d ZddZej ddZ!GdddZ"dS)zWheels support.N) get_platform)Versionsys_tags)canonicalize_name)write_requirements _egg_basename)_unpack_zipfile_objz^(?P.+?)-(?P\d.*?) ((-(?P\d.*?))?-(?P.+?)-(?P.+?)-(?P.+?) )\.whl$z8__import__('pkg_resources').declare_namespace(__name__) )maxsizecCsddtDS)NcSsh|]}|j|j|jfqS)Z interpreterabiplatform.0tr r 1C:\Program Files\Certbot\pkgs\setuptools\wheel.py %z&_get_supported_tags..rr r r r_get_supported_tags src 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_dirdirpathdirnames filenamessubdirfsrcdstndr r runpack(s   r*c cs>ddlm}||j}zdVW||n ||0dS)z* Temporarily disable info traces. r)logN)Z distutilsr+Z set_thresholdZWARN)r+Zsavedr r rdisable_info_traces>s   r,c@sheZdZddZddZddZddZd d Zd d Zd dZ e ddZ e ddZ e ddZ dS)WheelcCsPttj|}|dur$td|||_|D]\}}t|||q6dS)Nzinvalid wheel name: %r) WHEEL_NAMErrbasename ValueErrorfilename groupdictitemssetattr)selfr1matchkvr r r__init__Ms  zWheel.__init__cCs&t|jd|jd|jdS)z>List tags (py_version, abi, platform) supported by this wheel..) itertoolsproductZ py_versionsplitr r r5r r rtagsUs    z Wheel.tagscCstdd|DdS)z2Is the wheel compatible with the current platform?css|]}|tvrdVqdS)TN)rrr r r _rz&Wheel.is_compatible..F)nextr?r>r r r is_compatible]szWheel.is_compatiblecCs&t|j|j|jdkrdntddS)Nany)r z.egg)r project_nameversionr rr>r r regg_nameaszWheel.egg_namecCsJ|D]4}t|}|drt|t|jr|SqtddS)Nz .dist-infoz.unsupported wheel format. .dist-info not found)Znamelist posixpathdirnameendswithr startswithrDr0)r5zfmemberrHr r r get_dist_infoks   zWheel.get_dist_infocCs<t|j}|||Wdn1s.0YdS)z"Install wheel as an egg directory.N)zipfileZipFiler1_install_as_egg)r5destination_eggdirrKr r rinstall_as_egguszWheel.install_as_eggcCs\d|j|jf}||}d|}tj|d}|||||||||||dS)Nz%s-%sz%s.dataEGG-INFO) rDrErMrrr_convert_metadata_move_data_entries_fix_namespace_packages)r5rQrKZ dist_basename dist_info dist_dataegg_infor r rrPzs  zWheel._install_as_eggc sHddl}fdd}|d}t|d}td|koFtdkn}|s\td|t|tj||jj || |d d d t t  fd d jD} t|ttj|dtj|dtjt| dd} t,t| ddtj|dWdn1s:0YdS)NrcsTt|.}|d}tj|WdS1sF0YdS)Nzutf-8) openrGrreaddecodeemailparserZParserZparsestr)namefpvalue)rWrKr r get_metadatasz-Wheel._convert_metadata..get_metadataZWHEELz Wheel-Versionz1.0z2.0dev0z$unsupported wheel format version: %s)metadatacSsd|_t|SN)Zmarkerstr)reqr r rraw_reqsz(Wheel._convert_metadata..raw_reqc s.i|]&}|fddt|fDqS)csg|]}|vr|qSr r )rrf)install_requiresr r sz6Wheel._convert_metadata...)maprequires)rZextra)distrhrgr r s z+Wheel._convert_metadata..ZMETADATAzPKG-INFO)rhextras_require)attrsrYz requires.txt) pkg_resources parse_versiongetr0r rrrZ DistributionZ from_locationZ PathMetadatarrjrkextrasrename setuptoolsdictr,rZget_command_obj) rKrQrWrYrprbZwheel_metadataZ wheel_versionZwheel_v1rnZ setup_distr )rlrWrhrgrKrrTsH         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.ZscriptsrSz.pycc3s|]}tj|VqdSrd)rrr)rr)rXr rr@sz+Wheel._move_data_entries..)dataZheadersZpurelibZplatlibN) rrrrmkdirlistdirrIunlinkrtr filterr*)rQrXZdist_data_scriptsZegg_info_scriptsentryr$r rwrrUs,         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) rrrrrZr[r=rywriteNAMESPACE_PACKAGE_INIT)rYrQZnamespace_packagesr`modZmod_dirZmod_initr r rrVs  *    zWheel._fix_namespace_packagesN)__name__ __module__ __qualname__r9r?rBrFrMrRrP staticmethodrTrUrVr r r rr-Ls    : r-)#__doc__r]r; functoolsrrGrerN contextlibZdistutils.utilrruZ#setuptools.extern.packaging.versionrrqZ setuptools.extern.packaging.tagsrZ!setuptools.extern.packaging.utilsrZsetuptools.command.egg_inforrZsetuptools.archive_utilr compileVERBOSEr6r.r lru_cacherr*contextmanagerr,r-r r r rs4