Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
B

ÒÀpoæ¥ã@südZddlmZddlZddlmZddlZddlZddlZddl	m
Z
mZddlm
Z
mZmZddlmZdd	lmZmZdd
lmZmZe e¡ZGdd„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<d1Z=e>ƒZ?e "d2¡Z@d<d4d5„ZAGd6d7„d7e>ƒ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úŽ/build/wlanpi-profiler-MIf3Xw/wlanpi-profiler-1.0.8/debian/wlanpi-profiler/opt/wlanpi-profiler/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-DistzProject-URLz
Provides-Distz
Requires-DistzRequires-PythonzRequires-External)z
Provides-Distz
Requires-DistzRequires-PythonzObsoletes-DistzRequires-Externalr(zMaintainer-emailzProject-URL)zMetadata-VersionrrrzSupported-Platformrr r!z	Home-pager"zAuthor-emailr(zMaintainer-emailr#r$zDownload-URLzObsoletes-DistzProject-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ú	<genexpr>zsz%_version2fieldlist.<locals>.<genexpr>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|¡|tkr$d
|kr$|dkr$| d
¡t d|¡|t	krTd	|krT| d	¡t d|¡qTWt
|ƒdkrd|dSt
|ƒdkr†t d|¡tdƒ‚d|ko˜||tƒ}d|ko¬||t
ƒ}d
|koÀ||tƒ}d	|koÔ||tƒ}	t|ƒt|ƒt|ƒt|	ƒdkrtdƒ‚|s*|s*|s*|	s*t|kr*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.<locals>._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ú
<dictcomp>É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-ExternalzProject-URLzSupported-PlatformzSetup-Requires-DistzProvides-Extrar))zProject-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„Zdd„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ú
<listcomp>asz,LegacyMetadata.read_file.<locals>.<listcomp>r9r )rr[rqrsÚget_allÚ_LISTTUPLEFIELDSrjÚget_payload)raZfileobÚmsgrPÚvaluesrGÚbodyrrrr^Ts

zLegacyMetadata.read_filecCs0tj|ddd}z| ||¡Wd| ¡XdS)z&Write the metadata fields to filepath.Úwzutf-8)rN)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®WqWdS)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.<locals>.<listcomp>N)
r`r4rhrtrgr“rsrwrLr‹)raÚ
fileobjectr’rPrŽrGrrrr‘xs$


zLegacyMetadata.write_filecs‚‡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.<locals>._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|tkr|dk	r| |¡s@t d
|||¡n0|tkr@|dk	r@| |¡s@t d
|||¡|tkr^|dkr^| |¡}||j|<dS)z"Control then set a metadata field.rcSsg|]}| ¡‘qSr)Ústrip)r+ršrrrr‰´sz&LegacyMetadata.set.<locals>.<listcomp>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=ÚisEnabledForÚloggingÚWARNINGr
r\Ú_PREDICATE_FIELDSÚis_valid_matcherÚwarningÚ_VERSIONS_FIELDSÚis_valid_constraint_listÚ_VERSION_FIELDSÚis_valid_versionÚ_UNICODEFIELDSrzr[)rarMrGÚ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ˆ)rarMrWrGÚresÚvalrrrrhÙs.








zLegacyMetadata.getcs
| ¡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)r£rˆ)rGrš)r\rrÚare_valid_constraintss
z3LegacyMetadata.check.<locals>.are_valid_constraintsNzWrong value for '%s': %s)r`r;r“rr
r\r¢r¥r¦r§r¨rh)raÚstrictÚmissingÚwarningsrOrr®rEÚ
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-VersionÚproject_urlcSsg|]}d |¡‘qS)r‡)r“)r+Úurrrr‰5sz)LegacyMetadata.todict.<locals>.<listcomp>)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.<locals>.<listcomp>)r5)rar)rarrŽKszLegacyMetadata.valuescs‡fdd„ˆ ¡DƒS)Ncsg|]}|ˆ|f‘qSrr)r+rF)rarrr‰Osz(LegacyMetadata.items.<locals>.<listcomp>)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>	




,
,
rVzpydist.jsonz
metadata.jsonÚMETADATAc@sšeZdZdZe d¡Ze dej¡Ze	Z
e d¡ZdZde
Zdddd	œZd
ZdZedfedfe
dfedfdœ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;d<dd=œ
Z*d>d?„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¡}||kr||\}}|jr^|dkrP|dkrHdn|ƒ}n|j |¡}nº|dkrjdn|ƒ}|dkrˆ|j ||¡}ntƒ}|}|j d¡}	|	r
|dkrº|	 d|¡}nP|dkrÞ|	 d¡}	|	rÜ|	 ||¡}n,|	 d	¡}	|	sø|j d	¡}	|	r
|	 ||¡}||krT|}n:||kr2t ||¡}n"|jrH|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ÚlkÚmakerÚ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
krt|t	ƒr| 
¡}|r| ¡}ng}|jr||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)ÚbuildÚdevÚtestz:%s:z%s_requires)rÓÚenv)	rÁrrÓrhr
Úextendr<rÂÚget_requirements)
raÚreqtsrÓrørãråÚincluder7rFÚerrrrú;s0	




zMetadata.get_requirementscCs|jr| ¡S|jS)N)rÁÚ_from_legacyrÂ)rarrrÚ
dictionaryeszMetadata.dictionarycCs|jrt‚nt|j|jƒSdS)N)rÁrìrrÂÚDEPENDENCY_KEYS)rarrrÚdependencieskszMetadata.dependenciescCs|jrt‚n|j |¡dS)N)rÁrìrÂr_)rarGrrrrrsc	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;r“rrë)	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¸rrÂÚ
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Ú
classifierrrØr!ÚrÎ))Z
requires_distrÏ)Zsetup_requires_distrÐrôrð)rÁrÂÚAssertionErrorrÇrÈr¸rhrð)
rarãZlmdr™ÚnkÚkwr5ÚokÚauthorÚ
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ØcCsú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ôrz
extra == "%s"z(%s) and %srœ)rjrhÚaddr“)ÚentriesrûrýròrøZrlistr€r7rrrÚprocess_entriesÂs"



z,Metadata._to_legacy.<locals>.process_entriesTFzProvides-Extraz
Requires-DistzSetup-Requires-Dist)rÂrÁrrVÚLEGACY_MAPPINGr:rr0rmÚ
IndexErrorrÏrÒrÐrÑrÓÚsorted)rarrãZnmdrr
råÚfoundr™Zr1Zr2rrrÚ
_to_legacyÁs2

zMetadata._to_legacyFTc	CsÂ||g d¡dkrtdƒ‚| ¡|r`|jr4|j}n| ¡}|rP|j||dq¾|j||dn^|jrp| ¡}n|j}|rt	j
||ddddn.t |dd¡}t	j
||ddddWdQRXdS)	Nrz)Exactly one of path and fileobj is needed)r’TrX)Úensure_asciiÚindentÚ	sort_keysrzutf-8)
rYrÌrÆrÁrrfr‘rþrÂrÊÚdumpr‚rƒ)rarbrcr¿r’Z	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ÈrrrræÚ	__slots__rerjrÚržZ	none_listÚdictZ	none_dictrÛrÞrërîÚpropertyrïrðÚsetterrúrÿrrÅrÆr¸rþrrrfrºr½rrrrr[s€


,+

'
*	2
)F)GrÚ
__future__rr‚rrrÊr rrrrÚcompatrrr	r6r
Úutilrrr3r
rÚ	getLoggerrr=rrrrÚ__all__rrrryrxr.r/r@r*rAr2rCr1rBrjrqr_ZEXTRA_REr4rHrrr:r¶r¢r¥r§rsr‹rtr©rÝr«rSrUrVZMETADATA_FILENAMEZWHEEL_METADATA_FILENAMEZLEGACY_METADATA_FILENAMErrrrrÚ<module>	sv










I


j