/opt/alt/python37/lib/python3.7/site-packages/distlib/__pycache__
NameSizeModeActions
compat.cpython-37.opt-1.pyc315290644editdlrm
compat.cpython-37.pyc315680644editdlrm
database.cpython-37.opt-1.pyc427950644editdlrm
database.cpython-37.pyc427950644editdlrm
index.cpython-37.opt-1.pyc170790644editdlrm
index.cpython-37.pyc170790644editdlrm
locators.cpython-37.opt-1.pyc384860644editdlrm
locators.cpython-37.pyc385280644editdlrm
manifest.cpython-37.opt-1.pyc101380644editdlrm
manifest.cpython-37.pyc102500644editdlrm
markers.cpython-37.opt-1.pyc49640644editdlrm
markers.cpython-37.pyc50050644editdlrm
metadata.cpython-37.opt-1.pyc272700644editdlrm
metadata.cpython-37.pyc273370644editdlrm
resources.cpython-37.opt-1.pyc108340644editdlrm
resources.cpython-37.pyc108340644editdlrm
scripts.cpython-37.opt-1.pyc110740644editdlrm
scripts.cpython-37.pyc110740644editdlrm
util.cpython-37.opt-1.pyc509710644editdlrm
util.cpython-37.pyc513520644editdlrm
version.cpython-37.opt-1.pyc203660644editdlrm
version.cpython-37.pyc204340644editdlrm
wheel.cpython-37.opt-1.pyc265000644editdlrm
wheel.cpython-37.pyc265740644editdlrm
__init__.cpython-37.opt-1.pyc10020644editdlrm
__init__.cpython-37.pyc10020644editdlrm
Edit: /opt/alt/python37/lib/python3.7/site-packages/distlib/__pycache__/metadata.cpython-37.pyc (27337B)
B :—°aŘã@südZddlmZddlZddlmZddlZddlZddlZddl m Z m Z ddl m Z mZmZddlmZdd lmZmZdd lmZmZe e¡ZGd d „d e ƒZGd d„de ƒZGdd„de ƒZGdd„de ƒZdddgZdZ dZ!e "d¡Z#e "d¡Z$dZ%dZ&dZ'dZ(dZ)dZ*d Z+e*d!Z,d"Z-e.ƒZ/e/ 0e%¡e/ 0e&¡e/ 0e(¡e/ 0e*¡e/ 0e,¡e "d#¡Z1d$d%„Z2d&d'„Z3d(d)„e/DƒZ4d*d)„e4 5¡DƒZ6d+Z7d,Z8d-Z9d.Z:d/Z;d0ZƒZ?e "d2¡Z@dƒZBd8ZCd9ZDd:ZEGd;d„de>ƒZFdS)=z„Implementation of the Metadata for Python packages PEPs. Supports all metadata formats (1.0, 1.1, 1.2, 1.3/2.1 and withdrawn 2.0). é)Úunicode_literalsN)Úmessage_from_fileé)ÚDistlibExceptionÚ __version__)ÚStringIOÚ string_typesÚ text_type)Ú interpret)Úextract_by_keyÚ get_extras)Ú get_schemeÚPEP440_VERSION_REc@seZdZdZdS)ÚMetadataMissingErrorzA required metadata is missingN)Ú__name__Ú __module__Ú __qualname__Ú__doc__©rrúA/opt/alt/python37/lib/python3.7/site-packages/distlib/metadata.pyrsrc@seZdZdZdS)ÚMetadataConflictErrorz>Attempt to read or write metadata fields that are conflictual.N)rrrrrrrrr src@seZdZdZdS)Ú MetadataUnrecognizedVersionErrorz Unknown metadata version number.N)rrrrrrrrr$src@seZdZdZdS)ÚMetadataInvalidErrorzA metadata value is invalidN)rrrrrrrrr(srÚMetadataÚPKG_INFO_ENCODINGÚPKG_INFO_PREFERRED_VERSIONzutf-8z1.1z \|z ) zMetadata-VersionÚNameÚVersionÚPlatformÚSummaryÚ DescriptionÚKeywordsz Home-pageÚAuthorz Author-emailÚLicense)zMetadata-VersionrrrzSupported-Platformrr r!z Home-pager"z Author-emailr#Ú Classifierz Download-URLÚ ObsoletesÚProvidesÚRequires)r%r&r'r$z Download-URL)zMetadata-VersionrrrzSupported-Platformrr r!z Home-pager"z Author-emailÚ MaintainerzMaintainer-emailr#r$z Download-URLzObsoletes-Distz Project-URLz Provides-Distz Requires-DistzRequires-PythonzRequires-External)z Provides-Distz Requires-DistzRequires-PythonzObsoletes-DistzRequires-Externalr(zMaintainer-emailz Project-URL)zMetadata-VersionrrrzSupported-Platformrr r!z Home-pager"z Author-emailr(zMaintainer-emailr#r$z Download-URLzObsoletes-Distz Project-URLz Provides-Distz Requires-DistzRequires-PythonzRequires-ExternalzPrivate-Versionz Obsoleted-ByzSetup-Requires-DistÚ ExtensionzProvides-Extra)zPrivate-VersionzProvides-Extraz Obsoleted-ByzSetup-Requires-Distr))zDescription-Content-Typer'r&r%)zDescription-Content-Typez"extra\s*==\s*("([^"]+)"|'([^']+)')cCsZ|dkr tS|dkrtS|dkr$tS|dkrBttdd„tDƒƒS|dkrNtSt|ƒ‚dS)Nz1.0z1.1z1.2)z1.3z2.1css|]}|tkr|VqdS)N)Ú _345_FIELDS)Ú.0Úfrrrú zsz%_version2fieldlist..z2.0)Ú _241_FIELDSÚ _314_FIELDSr*ÚtupleÚ _566_FIELDSÚ _426_FIELDSr)ÚversionrrrÚ_version2fieldlistqsr4c CsLdd„}g}x.| ¡D]"\}}|gddfkr.q| |¡qWddddd d g}xþ|D]ö}|tkr~d|kr~| d¡t d |¡|tkr¤d|kr¤| d¡t d |¡|tkrÊd|krÊ| d¡t d |¡|tkrðd|krð| d¡t d|¡|tkr$d |kr$|dkr$| d ¡t d|¡|t krTd |krT| d ¡t d|¡qTWt |ƒdkrd|dSt |ƒdkr†t d|¡t dƒ‚d|ko˜||t ƒ}d|ko¬||t ƒ}d |koÀ||tƒ}d |koÔ||tƒ} t|ƒt|ƒt|ƒt| ƒdkrt dƒ‚|s*|s*|s*| s*t|kr*tS|r4dS|r>dS|rHd Sd S)z5Detect the best version depending on the fields used.cSsx|D]}||krdSqWdS)NTFr)ÚkeysÚmarkersÚmarkerrrrÚ _has_marker‚s z"_best_version.._has_markerÚUNKNOWNNz1.0z1.1z1.2z1.3z2.0z2.1zRemoved 1.0 due to %szRemoved 1.1 due to %szRemoved 1.2 due to %szRemoved 1.3 due to %sr zRemoved 2.1 due to %szRemoved 2.0 due to %srrz)Out of options - unknown metadata set: %szUnknown metadata setz,You used incompatible 1.1/1.2/2.0/2.1 fields)ÚitemsÚappendr.ÚremoveÚloggerÚdebugr/r*r1r2ÚlenrÚ _314_MARKERSÚ _345_MARKERSÚ _566_MARKERSÚ _426_MARKERSÚintr) Úfieldsr8r5ÚkeyÚvalueZpossible_versionsZis_1_1Zis_1_2Zis_2_1Zis_2_0rrrÚ _best_version€s`              & rHcCsi|]}|| ¡ dd¡“qS)ú-Ú_)ÚlowerÚreplace)r+Únamerrrú ÉsrNcCsi|]\}}||“qSrr)r+ÚattrÚfieldrrrrNÌs)z Requires-DistzObsoletes-Distz Provides-Dist)zRequires-Python)r)rr$r%r'r&zObsoletes-Distz Provides-Distz Requires-DistzRequires-Externalz Project-URLzSupported-PlatformzSetup-Requires-DistzProvides-Extrar))z Project-URL)r!)r"r(rr z[^A-Za-z0-9.]+FcCs0|r$t d|¡}t d| dd¡¡}d||fS)zhReturn the distribution name with version. If for_filename is true, return a filename-escaped form.rIú Ú.z%s-%s)Ú _FILESAFEÚsubrL)rMr3Z for_filenamerrrÚ_get_name_and_versionás rUc@s eZdZdZd?dd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zd@dd„Zdd„Zdd „Zd!d"„Zd#d$„ZdAd%d&„ZdBd'd(„ZdCd)d*„Zd+d,„Zefd-d.„ZdDd/d0„ZdEd1d2„Zd3d4„Zd5d6„Zd7d8„Zd9d:„Zd;d<„Z d=d>„Z!dS)FÚLegacyMetadataaoThe legacy metadata of a release. Supports versions 1.0, 1.1, 1.2, 2.0 and 1.3/2.1 (auto-detected). You can instantiate the class with one of these arguments (or none): - *path*, the path to a metadata file - *fileobj* give a file-like object with metadata as content - *mapping* is a dict-like object - *scheme* is a version scheme name NÚdefaultcCsz|||g d¡dkrtdƒ‚i|_g|_d|_||_|dk rH| |¡n.|dk r\| |¡n|dk rv| |¡|  ¡dS)Néz'path, fileobj and mapping are exclusive) ÚcountÚ TypeErrorÚ_fieldsZrequires_filesZ _dependenciesÚschemeÚreadÚ read_fileÚupdateÚset_metadata_version)ÚselfÚpathÚfileobjÚmappingr\rrrÚ__init__ús   zLegacyMetadata.__init__cCst|jƒ|jd<dS)NzMetadata-Version)rHr[)rarrrr` sz#LegacyMetadata.set_metadata_versioncCs| d||f¡dS)Nz%s: %s )Úwrite)rarcrMrGrrrÚ _write_field szLegacyMetadata._write_fieldcCs | |¡S)N)Úget)rarMrrrÚ __getitem__szLegacyMetadata.__getitem__cCs | ||¡S)N)Úset)rarMrGrrrÚ __setitem__szLegacyMetadata.__setitem__cCs8| |¡}y |j|=Wntk r2t|ƒ‚YnXdS)N)Ú _convert_namer[ÚKeyError)rarMÚ field_namerrrÚ __delitem__s   zLegacyMetadata.__delitem__cCs||jkp| |¡|jkS)N)r[rl)rarMrrrÚ __contains__s zLegacyMetadata.__contains__cCs(|tkr |S| dd¡ ¡}t ||¡S)NrIrJ)Ú _ALL_FIELDSrLrKÚ _ATTR2FIELDrh)rarMrrrrl!szLegacyMetadata._convert_namecCs|tks|tkrgSdS)Nr9)Ú _LISTFIELDSÚ_ELEMENTSFIELD)rarMrrrÚ_default_value'szLegacyMetadata._default_valuecCs&|jdkrt d|¡St d|¡SdS)N)z1.0z1.1Ú )Úmetadata_versionÚ_LINE_PREFIX_PRE_1_2rTÚ_LINE_PREFIX_1_2)rarGrrrÚ_remove_line_prefix,s  z"LegacyMetadata._remove_line_prefixcCs|tkr||St|ƒ‚dS)N)rrÚAttributeError)rarMrrrÚ __getattr__2szLegacyMetadata.__getattr__FcCst|d|d|ƒS)zhReturn the distribution name with version. If filesafe is true, return a filename-escaped form.rr)rU)raZfilesaferrrÚ get_fullname=szLegacyMetadata.get_fullnamecCs| |¡}|tkS)z+return True if name is a valid metadata key)rlrq)rarMrrrÚis_fieldCs zLegacyMetadata.is_fieldcCs| |¡}|tkS)N)rlrs)rarMrrrÚis_multi_fieldHs zLegacyMetadata.is_multi_fieldcCs.tj|ddd}z| |¡Wd| ¡XdS)z*Read the metadata values from a file path.Úrzutf-8)ÚencodingN)ÚcodecsÚopenr^Úclose)raÚfilepathÚfprrrr]LszLegacyMetadata.readcCs°t|ƒ}|d|jd<xxtD]p}||kr*q|tkrh| |¡}|tkrZ|dk rZdd„|Dƒ}| ||¡q||}|dk r|dkr| ||¡qW| ¡}|r |n|d|d<dS)z,Read the metadata values from a file object.zmetadata-versionzMetadata-VersionNcSsg|]}t| d¡ƒ‘qS)ú,)r0Úsplit)r+rGrrrú asz,LegacyMetadata.read_file..r9r )rr[rqrsZget_allÚ_LISTTUPLEFIELDSrjZ get_payload)raZfileobÚmsgrPÚvaluesrGZbodyrrrr^Ts  zLegacyMetadata.read_filecCs0tj|ddd}z| ||¡Wd| ¡XdS)z&Write the metadata fields to filepath.Úwzutf-8)rN)r‚rƒÚ write_filer„)rar…Ú skip_unknownr†rrrrfpszLegacyMetadata.writecCsÌ| ¡x¾t|dƒD]®}| |¡}|r:|dgdgfkr:q|tkrX| ||d |¡¡q|tkr’|dkrŒ|jdkr€| dd¡}n | dd¡}|g}|t kr¨d d „|Dƒ}x|D]}| |||¡q®WqWd S) z0Write the PKG-INFO format data to a file object.zMetadata-Versionr9r‡r )z1.0z1.1rvz z |cSsg|]}d |¡‘qS)r‡)Újoin)r+rGrrrr‰Œsz-LegacyMetadata.write_file..N) r`r4rhrtrgrrsrwrLrŠ)raZ fileobjectrrPrŒrGrrrrŽxs$    zLegacyMetadata.write_filec s‚‡fdd„}|snHt|dƒr>x<| ¡D]}||||ƒq&Wnx|D]\}}|||ƒqDW|r~x| ¡D]\}}|||ƒqhWdS)a…Set metadata values from the given iterable `other` and kwargs. Behavior is like `dict.update`: If `other` has a ``keys`` method, they are looped over and ``self[key]`` is assigned ``other[key]``. Else, ``other`` is an iterable of ``(key, value)`` iterables. Keys that don't match a metadata field or that have an empty value are dropped. cs"|tkr|rˆ ˆ |¡|¡dS)N)rrrjrl)rFrG)rarrÚ_set›s z#LegacyMetadata.update.._setr5N)Úhasattrr5r:)raÚotherÚkwargsr‘ÚkÚvr)rarr_‘s  zLegacyMetadata.updatecCsl| |¡}|tks|dkrNt|ttfƒsNt|tƒrHdd„| d¡Dƒ}qzg}n,|tkrzt|ttfƒszt|tƒrv|g}ng}t  t j ¡r@|d}t |j ƒ}|tkrÞ|dk rÞx”|D](}| | d¡d¡s°t d |||¡q°Wnb|tkr|dk r| |¡s@t d |||¡n0|tkr@|dk r@| |¡s@t d |||¡|tkr^|d kr^| |¡}||j|<dS) z"Control then set a metadata field.rcSsg|] }| ¡‘qSr)Ústrip)r+r–rrrr‰´sz&LegacyMetadata.set..r‡rNú;rz$'%s': '%s' is not valid (field '%s')z.'%s': '%s' is not a valid version (field '%s')r )rlrtÚ isinstanceÚlistr0rrˆrsr=Z isEnabledForÚloggingZWARNINGr r\Ú_PREDICATE_FIELDSÚis_valid_matcherÚwarningÚ_VERSIONS_FIELDSÚis_valid_constraint_listÚ_VERSION_FIELDSÚis_valid_versionÚ_UNICODEFIELDSrzr[)rarMrGZ project_namer\r–rrrrj­s@            zLegacyMetadata.setcCsÎ| |¡}||jkr*|tkr&| |¡}|S|tkr@|j|}|S|tkrž|j|}|dkr^gSg}x6|D].}|tkr€| |¡qh| |d|df¡qhW|S|tkrÄ|j|}t |t ƒrÄ|  d¡S|j|S)zGet a metadata field.Nrrr‡) rlr[Ú_MISSINGrur£rsrŠr;rtr™rrˆ)rarMrWrGZresÚvalrrrrhÙs.          zLegacyMetadata.getc s | ¡gg}}xdD]}||kr| |¡qW|rT|gkrTdd |¡}t|ƒ‚xdD]}||krZ| |¡qZW|ddkrˆ||fSt|jƒ‰‡fdd„}xbt|ftˆjft ˆj ffD]D\}}x:|D]2} |  | d ¡} | d k rÈ|| ƒsÈ| d | | f¡qÈWqºW||fS) zkCheck if the metadata is compliant. If strict is True then raise if no Name or Version are provided)rrzmissing required metadata: %sz, )z Home-pager"zMetadata-Versionz1.2cs*x$|D]}ˆ | d¡d¡sdSqWdS)Nr˜rFT)rrˆ)rGr–)r\rrÚare_valid_constraintss z3LegacyMetadata.check..are_valid_constraintsNzWrong value for '%s': %s) r`r;rrr r\rœrŸr r¡r¢rh) raÚstrictÚmissingÚwarningsrOr‹r¦rEZ controllerrPrGr)r\rÚcheckös2         zLegacyMetadata.checkcCsl| ¡t|dƒ}i}xN|D]F}|r0||jkrt|}|dkrN||||<qdd„||Dƒ||<qW|S)aReturn fields as a dict. Field names will be converted to use the underscore-lowercase style instead of hyphen-mixed case (i.e. home_page instead of Home-page). This is as per https://www.python.org/dev/peps/pep-0566/#id17. zMetadata-VersionZ project_urlcSsg|]}d |¡‘qS)r‡)r)r+Úurrrr‰5sz)LegacyMetadata.todict..)r`r4r[Ú _FIELD2ATTR)raZ skip_missingrEÚdatarnrFrrrÚtodict"s  zLegacyMetadata.todictcCs<|ddkr(xdD]}||kr||=qW|d|7<dS)NzMetadata-Versionz1.1)r%r'r&z Requires-Distr)raÚ requirementsrPrrrÚadd_requirements9s    zLegacyMetadata.add_requirementscCstt|dƒƒS)NzMetadata-Version)ršr4)rarrrr5DszLegacyMetadata.keysccsx| ¡D] }|Vq WdS)N)r5)rarFrrrÚ__iter__GszLegacyMetadata.__iter__cs‡fdd„ˆ ¡DƒS)Ncsg|] }ˆ|‘qSrr)r+rF)rarrr‰Lsz)LegacyMetadata.values..)r5)rar)rarrŒKszLegacyMetadata.valuescs‡fdd„ˆ ¡DƒS)Ncsg|]}|ˆ|f‘qSrr)r+rF)rarrr‰Osz(LegacyMetadata.items..)r5)rar)rarr:NszLegacyMetadata.itemscCsd|jj|j|jfS)Nz <%s %s %s>)Ú __class__rrMr3)rarrrÚ__repr__Qs zLegacyMetadata.__repr__)NNNrW)F)F)F)N)F)F)"rrrrrer`rgrirkrorprlrurzr|r}r~rr]r^rfrŽr_rjr¤rhrªr®r°r5r±rŒr:r³rrrrrVîs>      ,  ,  rVz pydist.jsonz metadata.jsonZMETADATAc@sšeZdZdZe d¡Ze dej¡Ze Z e d¡Z dZ de Zdddd œZd Zd Zedfedfe dfe dfd œZd ZdHdd„ZedƒZdefZdefZdefdefeeedefeeeedefdddœ Z[[dd„ZdIdd„Zdd„Zed d!„ƒZ ed"d#„ƒZ!e!j"d$d#„ƒZ!dJd%d&„Z#ed'd(„ƒZ$ed)d*„ƒZ%e%j"d+d*„ƒZ%d,d-„Z&d.d/„Z'd0d1„Z(d2d3„Z)d4d5d6d7d8d9d:d;dd?„Z+dKdBdC„Z,dDdE„Z-dFdG„Z.dS)LrzÊ The metadata of a release. This implementation uses 2.0 (JSON) metadata where possible. If not possible, it wraps a LegacyMetadata instance which handles the key-value metadata format. z ^\d+(\.\d+)*$z!^[0-9A-Z]([0-9A-Z_.-]*[0-9A-Z])?$z .{1,2047}z2.0z distlib (%s)r)Úlegacy)rMr3Úsummaryzqname version license summary description author author_email keywords platform home_page classifiers download_urlzwextras run_requires test_requires build_requires dev_requires provides meta_requires obsoleted_by supports_environments)rwrMr3rµ)Ú_legacyÚ_datar\NrWc Cs0|||g d¡dkrtdƒ‚d|_d|_||_|dk rzy| ||¡||_Wn*tk rvt||d|_| ¡YnXn²d}|r¢t |dƒ}|  ¡}WdQRXn |r®|  ¡}|dkrÈ|j |j dœ|_ndt |tƒsÜ| d¡}yt |¡|_| |j|¡Wn0tk r*tt|ƒ|d|_| ¡YnXdS)NrXz'path, fileobj and mapping are exclusive)rdr\Úrb)rwÚ generatorzutf-8)rcr\)rYrZr¶r·r\Ú_validate_mappingrrVÚvalidaterƒr]ÚMETADATA_VERSIONÚ GENERATORr™r ÚdecodeÚjsonÚloadsÚ ValueErrorr)rarbrcrdr\r­r,rrrre…s<       zMetadata.__init__)rMr3ÚlicenseÚkeywordsrµz Requires-DistzSetup-Requires-DistzProvides-Extrar$)z Download-URLN)zMetadata-VersionN) Ú run_requiresÚbuild_requiresÚ dev_requiresZ test_requiresÚ meta_requiresÚextrasÚmodulesÚ namespacesÚexportsÚcommandsÚ classifiersÚ source_urlrwc CsXt |d¡}t |d¡}||kr||\}}|jr^|dkrP|dkrHdn|ƒ}n |j |¡}nº|dkrjdn|ƒ}|dkrˆ|j ||¡}ntƒ}|}|j d¡} | r |dkrº|  d|¡}nP|dkrÞ|  d¡} | rÜ|  ||¡}n,|  d ¡} | sø|j d ¡} | r |  ||¡}||krT|}n:||kr2t ||¡}n"|jrH|j |¡}n |j |¡}|S) NÚ common_keysÚ mapped_keys)rÌrËrÉrÊrÍÚ extensionsrÌzpython.commandsrÍzpython.detailszpython.exports)ÚobjectÚ__getattribute__r¶rhr·) rarFÚcommonÚmappedÚlkZmakerÚresultrGÚsentinelÚdrrrrÓÉsD            zMetadata.__getattribute__cCsH||jkrD|j|\}}|p |j|krD| |¡}|sDtd||fƒ‚dS)Nz.'%s' is an invalid value for the '%s' property)ÚSYNTAX_VALIDATORSr\Úmatchr)rarFrGr\ÚpatternÚ exclusionsÚmrrrÚ_validate_valueôs  zMetadata._validate_valuecCs*| ||¡t |d¡}t |d¡}||kr¾||\}}|jrV|dkrJt‚||j|<nf|dkrj||j|<nR|j di¡}|dkrŠ||d<n2|dkr¨| di¡}|||<n| d i¡}|||<nh||krÖt |||¡nP|d krt|t ƒr|  ¡}|r|  ¡}ng}|jr||j|<n ||j|<dS) NrÏrÐ)rÌrËrÉrÊrÍrÑrÌzpython.commandsrÍzpython.detailszpython.exportsrÃ) rßrÒrÓr¶ÚNotImplementedErrorr·Ú setdefaultÚ __setattr__r™rr—rˆ)rarFrGrÔrÕrÖrJrÙrrrrâþs<               zMetadata.__setattr__cCst|j|jdƒS)NT)rUrMr3)rarrrÚname_and_version%szMetadata.name_and_versioncCsF|jr|jd}n|j dg¡}d|j|jf}||krB| |¡|S)Nz Provides-DistÚprovidesz%s (%s))r¶r·rárMr3r;)rar×Úsrrrrä)s  zMetadata.providescCs |jr||jd<n ||jd<dS)Nz Provides-Disträ)r¶r·)rarGrrrrä4s c Csâ|jr |}nÒg}t|pg|jƒ}xl|D]d}d|kr@d|kr@d}n8d|krNd}n| d¡|k}|rx| d¡}|rxt||ƒ}|r&| |d¡q&WxNdD]F}d|} | |kr”| | ¡|j d|g¡}| |j|||d¡q”W|S) a‹ Base method to get dependencies, given a set of extras to satisfy and an optional environment context. :param reqts: A list of sometimes-wanted dependencies, perhaps dependent on extras and environment. :param extras: A list of optional components being requested. :param env: An optional environment for marker evaluation. ÚextraÚ environmentTÚrequires)ZbuildZdevZtestz:%s:z %s_requires)rÈÚenv) r¶r rÈrhr Úextendr<r·Úget_requirements) raÚreqtsrÈrér×rÙZincluder7rFÚerrrrë;s0       zMetadata.get_requirementscCs|jr| ¡S|jS)N)r¶Ú _from_legacyr·)rarrrÚ dictionaryeszMetadata.dictionarycCs|jr t‚nt|j|jƒSdS)N)r¶ràr r·ÚDEPENDENCY_KEYS)rarrrÚ dependencieskszMetadata.dependenciescCs|jr t‚n |j |¡dS)N)r¶ràr·r_)rarGrrrrñrsc CsŽ| d¡|jkrtƒ‚g}x0|j ¡D]"\}}||kr&||kr&| |¡q&W|rfdd |¡}t|ƒ‚x"| ¡D]\}}| |||¡qpWdS)NrwzMissing metadata items: %sz, ) rhr¼rÚMANDATORY_KEYSr:r;rrrß) rardr\r¨rFrÝr‹r•r–rrrrºyszMetadata._validate_mappingcCsB|jr.|j d¡\}}|s|r>t d||¡n| |j|j¡dS)NTz#Metadata: missing: %s, warnings: %s)r¶rªr=ržrºr·r\)rar¨r©rrrr»‡s  zMetadata.validatecCs(|jr|j d¡St|j|jƒ}|SdS)NT)r¶r®r r·Ú INDEX_KEYS)rar×rrrr®s zMetadata.todictc CsÎ|jr |jrt‚|j|jdœ}|j d¡}x2dD]*}||kr0|dkrJd}n|}||||<q0W| dg¡}|dgkrxg}||d<d }x2|D]*\}}||krŠ||rŠd ||ig||<qŠW|j|d <i}i} |S) N)rwr¹T)rMr3rÂrµÚ descriptionÚ classifierrõrÍr!ÚrÃ))Z requires_distrÄ)Zsetup_requires_distrÅrèrä)r¶r·ÚAssertionErrorr¼r½r®rhrä) rar×Zlmdr•ÚnkÚkwr5ÚokZauthorZ maintainerrrrrî—s,      zMetadata._from_legacyrrr#rr z Home-pager"z Author-emailz Download-URL) rMr3)rÑzpython.detailsrÂrµrô)rÑzpython.projectZ project_urlsZHome)rÑzpython.projectÚcontactsrrM)rÑzpython.projectrûrÚemailrÎ)rÑzpython.detailsrÍc Csúdd„}|jr|jrt‚tƒ}|j}x„|j ¡D]v\}}t|tƒsX||kr¦||||<q0|}d}x8|D]0}y ||}Wqftt fk r”d}PYqfXqfW|r0|||<q0W||j |j ƒ} ||j |j ƒ} |jrÞt|jƒ|d<t| ƒ|d<t| ƒ|d<|S)NcSs”tƒ}xˆ|D]€}| d¡}| d¡}|d}x^|D]V}|sJ|sJ| |¡q2d}|rZd|}|rt|rpd||f}n|}| d ||f¡¡q2Wq W|S)Nrærçrèröz extra == "%s"z (%s) and %sr˜)rjrhÚaddr)ÚentriesrìríræréZrlistr€r7rrrÚprocess_entriesÂs"     z,Metadata._to_legacy..process_entriesTFzProvides-Extraz Requires-DistzSetup-Requires-Dist)r·r¶r÷rVÚLEGACY_MAPPINGr:r™r0rmÚ IndexErrorrÄrÇrÅrÆrÈÚsorted) rarÿr×ZnmdrørúrÙÚfoundr•Zr1Zr2rrrÚ _to_legacyÁs2       zMetadata._to_legacyFTc CsÂ||g d¡dkrtdƒ‚| ¡|r`|jr4|j}n| ¡}|rP|j||dq¾|j||dn^|jrp| ¡}n|j}|rt j ||ddddn.t   |dd¡}t j ||ddddWdQRXdS) Nrz)Exactly one of path and fileobj is needed)rTrX)Z ensure_asciiÚindentZ sort_keysrzutf-8) rYrÁr»r¶rrfrŽrîr·r¿Údumpr‚rƒ)rarbrcr´rZ legacy_mdrÙr,rrrrfós&    zMetadata.writecCsŒ|jr|j |¡nt|j dg¡}d}x"|D]}d|kr,d|kr,|}Pq,W|dkrhd|i}| d|¡n t|dƒt|ƒB}t|ƒ|d<dS)NrÄrçrærèr)r¶r°r·ráÚinsertrjr)rar¯rÄÚalwaysÚentryZrsetrrrr° s zMetadata.add_requirementscCs*|jpd}|jpd}d|jj|j||fS)Nz (no name)z no versionz<%s %s %s (%s)>)rMr3r²rrw)rarMr3rrrr³s  zMetadata.__repr__)NNNrW)N)NN)NNFT)/rrrrÚreÚcompileZMETADATA_VERSION_MATCHERÚIZ NAME_MATCHERrZVERSION_MATCHERZSUMMARY_MATCHERr¼rr½ròrórðrÚÚ __slots__rerjrÏršZ none_listÚdictZ none_dictrÐrÓrßrâÚpropertyrãräÚsetterrërïrñrºr»r®rîrrrfr°r³rrrrr[s€    ,+ '   *   2 )F)GrZ __future__rr‚rürr¿r›r rörrÚcompatrrr r6r Úutilr r r3r rZ getLoggerrr=rrrrÚ__all__rrr ryrxr.r/r@r*rAr2rCr1rBrjrqr_ZEXTRA_REr4rHrrr:r¬rœrŸr¡rsrŠrtr£rÒr¤rSrUrVZMETADATA_FILENAMEZWHEEL_METADATA_FILENAMEZLEGACY_METADATA_FILENAMErrrrrÚ sv              I  j