HEX
Server: LiteSpeed
System: Linux s787.bom1.mysecurecloudhost.com 4.18.0-477.13.1.lve.el8.x86_64 #1 SMP Thu Jun 1 16:40:47 EDT 2023 x86_64
User: mobilech (5348)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/distlib/__pycache__/metadata.cpython-310.pyc
o

;jD��@sdZddlmZddlZddlmZddlZddlZddlZddl	m
Z
mZddlm
Z
mZmZddlmZdd	lmZmZdd
lmZmZe�e�ZGdd�de
�ZGd
d�de
�ZGdd�de
�ZGdd�de
�Zgd�ZdZ dZ!e�"d�Z#e�"d�Z$dZ%dZ&dZ'dZ(dZ)dZ*dZ+e*dZ,d Z-d!Z.e,e.Z/e0�Z1e1�2e%�e1�2e&�e1�2e(�e1�2e*�e1�2e,�e1�2e/�e�"d"�Z3d#d$�Z4d%d&�Z5d'd(�e1D�Z6d)d(�e6�7�D�Z8d*Z9d+Z:d,Z;d-Z<d.Z=d/Z>d0Z?e@�ZAe�"d1�ZBd<d3d4�ZCGd5d6�d6e@�ZDd7ZEd8ZFd9ZGGd:d;�d;e@�ZHdS)=zzImplementation of the Metadata for Python packages PEPs.

Supports all metadata formats (1.0, 1.1, 1.2, 1.3/2.1 and 2.2).
�)�unicode_literalsN)�message_from_file�)�DistlibException�__version__)�StringIO�string_types�	text_type)�	interpret)�extract_by_key�
get_extras)�
get_scheme�PEP440_VERSION_REc@�eZdZdZdS)�MetadataMissingErrorzA required metadata is missingN��__name__�
__module__�__qualname__�__doc__�rr�D/opt/saltstack/salt/lib/python3.10/site-packages/distlib/metadata.pyr�rc@r)�MetadataConflictErrorz>Attempt to read or write metadata fields that are conflictual.Nrrrrrrrrc@r)� MetadataUnrecognizedVersionErrorz Unknown metadata version number.Nrrrrrr#rrc@r)�MetadataInvalidErrorzA metadata value is invalidNrrrrrr'rr)�Metadata�PKG_INFO_ENCODING�PKG_INFO_PREFERRED_VERSION�utf-8�1.1z

       \|�	
        )�Metadata-Version�Name�Version�Platform�Summary�Description�Keywords�	Home-page�Author�Author-email�License)r"r#r$r%�Supported-Platformr&r'r(r)r*r+r,�
Classifier�Download-URL�	Obsoletes�Provides�Requires)r0r1r2r.r/)r"r#r$r%r-r&r'r(r)r*r+�
Maintainer�Maintainer-emailr,r.r/�Obsoletes-Dist�Project-URL�
Provides-Dist�
Requires-Dist�Requires-Python�Requires-External)r7r8r9r5r:r3r4r6)r"r#r$r%r-r&r'r(r)r*r+r3r4r,r.r/r5r6r7r8r9r:�Private-Version�Obsoleted-By�Setup-Requires-Dist�	Extension�Provides-Extra)r;r?r<r=r>)�Description-Content-Typer2r1r0)r@)ZDynamic�License-Filez"extra\s*==\s*("([^"]+)"|'([^']+)')cCsf|dkrtS|dkrtS|dkrtS|dvr!ttdd�tD��S|dkr)td��|d	kr/tSt|��)
N�1.0r �1.2)�1.3�2.1css�|]	}|tvr|VqdS�N)�_345_FIELDS)�.0�frrr�	<genexpr>ps�z%_version2fieldlist.<locals>.<genexpr>�2.0z+Metadata 2.0 is withdrawn and not supported�2.2)�_241_FIELDS�_314_FIELDSrG�tuple�_566_FIELDS�
ValueError�_643_FIELDSr)�versionrrr�_version2fieldlistgsrTc	Cs�dd�}dd�|��D�}gd�}|D]x}|tvr(d|vr(|�d�t�d|�|tvr;d|vr;|�d�t�d	|�|tvrNd
|vrN|�d
�t�d|�|tvrad|vra|�d�t�d
|�|tvrxd|vrx|dkrx|�d�t�d|�|tvr�d|vr�|�d�t�d|�qt	|�dkr�|dSt	|�dkr�t�d|�t
d��d|vo�||t�}d
|vo�||t�}d|vo�||t
�}d|vo�||t�}t|�t|�t|�t|�dkr�t
d��|s�|s�|s�|s�t|vr�tS|r�dS|r�d
S|r�dSdS)z5Detect the best version depending on the fields used.cst�fdd�|D��S)Nc3s�|]}|�vVqdSrFr)rH�marker��keysrrrJ}s�z5_best_version.<locals>._has_marker.<locals>.<genexpr>)�any)rW�markersrrVr�_has_marker|�z"_best_version.<locals>._has_markercSs"g|]
\}}|gddfvr|�qS)�UNKNOWNNr)rH�key�valuerrr�
<listcomp>s"z!_best_version.<locals>.<listcomp>)rBr rCrDrErLrBzRemoved 1.0 due to %sr zRemoved 1.1 due to %srCzRemoved 1.2 due to %srDzRemoved 1.3 due to %srEr'zRemoved 2.1 due to %srLzRemoved 2.2 due to %srrz)Out of options - unknown metadata set: %szUnknown metadata setz,You used incompatible 1.1/1.2/2.1/2.2 fields)�itemsrM�remove�logger�debugrNrGrPrR�lenr�_314_MARKERS�_345_MARKERS�_566_MARKERS�_643_MARKERS�intr)	�fieldsrZrWZpossible_versionsr]Zis_1_1Zis_1_2Zis_2_1Zis_2_2rrr�
_best_versionysZ





�$rkcCsi|]}|���dd�|�qS)�-�_)�lower�replace)rH�namerrr�
<dictcomp>�srqcCsi|]\}}||�qSrr)rH�attr�fieldrrrrq��)r8r5r7)r9)r$)r%r.r0r2r1r5r7r8r:r6r-r=r?r>rA)r6)r()r*r3r&r'z[^A-Za-z0-9.]+FcCs0|rt�d|�}t�d|�dd��}d||fS)zhReturn the distribution name with version.

    If for_filename is true, return a filename-escaped form.rl� �.z%s-%s)�	_FILESAFE�subro)rprSZfor_filenamerrr�_get_name_and_version�sryc@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$�Zd@d%d&�Zd@d'd(�ZdAd)d*�Zd+d,�Zefd-d.�Zd@d/d0�Zd@d1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Zd;d<�Z d=d>�Z!dS)B�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�defaultcCs�|||g�d�dkrtd��i|_g|_d|_||_|dur%|�|�dS|dur0|�|�dS|dur?|�|�|�	�dSdS)N��'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�Nr")rkr��r�rrrr�sz#LegacyMetadata.set_metadata_versioncCs|�d||f�dS)Nz%s: %s
)�write)r�r�rpr^rrr�_write_fieldr[zLegacyMetadata._write_fieldcCs
|�|�SrF)�get�r�rprrr�__getitem__s
zLegacyMetadata.__getitem__cCs|�||�SrF)�set)r�rpr^rrr�__setitem__	szLegacyMetadata.__setitem__cCs0|�|�}z|j|=WdStyt|��wrF)�
_convert_namer��KeyError)r�rp�
field_namerrr�__delitem__s
�zLegacyMetadata.__delitem__cCs||jvp|�|�|jvSrF)r�r�r�rrr�__contains__szLegacyMetadata.__contains__cCs(|tvr|S|�dd���}t�||�S)Nrlrm)�_ALL_FIELDSrorn�_ATTR2FIELDr�r�rrrr�szLegacyMetadata._convert_namecCs|tvs|tvr
gSdS)Nr\)�_LISTFIELDS�_ELEMENTSFIELDr�rrr�_default_valueszLegacyMetadata._default_valuecCs"|jdvrt�d|�St�d|�S)N�rBr �
)�metadata_version�_LINE_PREFIX_PRE_1_2rx�_LINE_PREFIX_1_2�r�r^rrr�_remove_line_prefix!s
z"LegacyMetadata._remove_line_prefixcCs|tvr||St|��rF)r��AttributeErrorr�rrr�__getattr__'szLegacyMetadata.__getattr__FcCst|d|d|�S)zz
        Return the distribution name with version.

        If filesafe is true, return a filename-escaped form.
        r#r$)ry)r�Zfilesaferrr�get_fullname0szLegacyMetadata.get_fullnamecC�|�|�}|tvS)z+return True if name is a valid metadata key)r�r�r�rrr�is_field8s
zLegacyMetadata.is_fieldcCr�rF)r�r�r�rrr�is_multi_field=s
zLegacyMetadata.is_multi_fieldcCs4tj|ddd�}z|�|�W|��dS|��w)z*Read the metadata values from a file path.�rr��encodingN)�codecs�openr��close)r��filepath�fprrrr�AszLegacyMetadata.readcCs�t|�}|d|jd<tD]8}||vrq
|tvr3|�|�}|tvr,|dur,dd�|D�}|�||�q
||}|durE|dkrE|�||�q
|��}|rN|n|d|d<dS)z,Read the metadata values from a file object.zmetadata-versionr"NcSsg|]	}t|�d���qS��,)rO�split�rHr^rrrr_Vsz,LegacyMetadata.read_file.<locals>.<listcomp>r\r')rr�r�r��get_all�_LISTTUPLEFIELDSr��get_payload)r�Zfileob�msgrs�valuesr^�bodyrrrr�Is 
�zLegacyMetadata.read_filecCs6tj|ddd�}z
|�||�W|��dS|��w)z&Write the metadata fields to filepath.�wrr�N)r�r��
write_filer�)r�r��skip_unknownr�rrrr�eszLegacyMetadata.writecCs�|��t|d�D]U}|�|�}|r|dgdgfvrq
|tvr+|�||d�|��q
|tvrH|dkrE|jdvr?|�dd�}n|�dd�}|g}|t	vrSd	d
�|D�}|D]	}|�|||�qUq
dS)z0Write the PKG-INFO format data to a file object.r"r\r�r'r�r�r!z	
       |cS�g|]}d�|��qSr���joinr�rrrr_�rtz-LegacyMetadata.write_file.<locals>.<listcomp>N)
r�rTr�r�r�r�r�r�ror�)r��
fileobjectr�rsr�r^rrrr�ms(

��zLegacyMetadata.write_filecsz�fdd�}|s	n t|d�r|��D]	}||||�qn|D]	\}}|||�q|r9|��D]\}}|||�q/dSdS)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*|tvr|r����|�|�dSdSdSrF)r�r�r�)r]r^r�rr�_set�s�z#LegacyMetadata.update.<locals>._setrWN)�hasattrrWr`)r��other�kwargsr��k�vrr�rr��s
��zLegacyMetadata.updatecCsV|�|�}|tvs
|dkr't|ttf�s't|t�r$dd�|�d�D�}ng}n|tvr=t|ttf�s=t|t�r;|g}ng}t�	t
j�r�|d}t|j
�}|tvrl|durl|D]}|�|�d�d�sjt�d	|||�qVn+|tvr�|dur�|�|�s�t�d
|||�n|tvr�|dur�|�|�s�t�d
|||�|tvr�|dkr�|�|�}||j|<dS)z"Control then set a metadata field.r%cSsg|]}|���qSr)�strip)rHr�rrrr_��z&LegacyMetadata.set.<locals>.<listcomp>r�r#N�;rz$'%s': '%s' is not valid (field '%s')z.'%s': '%s' is not a valid version (field '%s')r')r�r��
isinstance�listrOrr�r�rb�isEnabledFor�logging�WARNINGr
r��_PREDICATE_FIELDS�is_valid_matcher�warning�_VERSIONS_FIELDS�is_valid_constraint_list�_VERSION_FIELDS�is_valid_version�_UNICODEFIELDSr�r�)r�rpr^Zproject_namer�r�rrrr��s:



��
�

zLegacyMetadata.setcCs�|�|�}||jvr|tur|�|�}|S|tvr |j|}|S|tvrM|j|}|dur/gSg}|D]}|tvr?|�|�q3|�|d|df�q3|S|tvr`|j|}t	|t
�r`|�d�S|j|S)zGet a metadata field.Nrrr�)r�r��_MISSINGr�r�r�r��appendr�r�rr�)r�rpr{r^�res�valrrrr��s.








zLegacyMetadata.getcs�|��gg}}dD]}||vr|�|�q|r(|gkr(dd�|�}t|��dD]}||vr5|�|�q*|ddkr@||fSt|j���fdd�}t|ft�jft	�j
ffD] \}}|D]}	|�|	d	�}
|
d	urw||
�sw|�d
|	|
f�q^qX||fS)zkCheck if the metadata is compliant. If strict is True then raise if
        no Name or Version are provided)r#r$zmissing required metadata: %s�, )r)r*r"rCcs(|D]}��|�d�d�sdSqdS)Nr�rFT)r�r�)r^r��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�r�)r��strict�missing�warningsrrr�r�rjZ
controllerrsr^rr�r�check�s:

�
�

����zLegacyMetadata.checkcCsh|��t|d�}i}|D]#}|r||jvr1t|}|dkr&||||<qdd�||D�||<q|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.
        r"Zproject_urlcSr�r�r�)rH�urrrr_#rtz)LegacyMetadata.todict.<locals>.<listcomp>)r�rTr��_FIELD2ATTR)r�Zskip_missingrj�datar�r]rrr�todicts�zLegacyMetadata.todictcCs8|ddkrdD]	}||vr||=q|d|7<dS)Nr"r )r0r2r1r8r)r��requirementsrsrrr�add_requirements's�zLegacyMetadata.add_requirementscCstt|d��Sr�)r�rTr�rrrrW2szLegacyMetadata.keysccs�|��D]}|VqdSrFrV)r�r]rrr�__iter__5s��zLegacyMetadata.__iter__c��fdd����D�S)Ncsg|]}�|�qSrr�rHr]r�rrr_:r�z)LegacyMetadata.values.<locals>.<listcomp>rVr�rr�rr�9r[zLegacyMetadata.valuescr�)Ncsg|]}|�|f�qSrrr�r�rrr_=sz(LegacyMetadata.items.<locals>.<listcomp>rVr�rr�rr`<r[zLegacyMetadata.itemscCsd|jj|j|jfS)Nz
<%s %s %s>)�	__class__rrprSr�rrr�__repr__?r[zLegacyMetadata.__repr__�NNNr{�FrF)"rrrrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rWr�r�r`r�rrrrrz�s>

	


&

*rzzpydist.jsonz
metadata.jsonZMETADATAc@s�eZdZdZe�d�Ze�dej�Ze�dej�Z	e
Ze�d�ZdZ
deZddd	d
�ZdZdZedfed	fed	fed	fe	d	fd
�ZdZdIdd�Zed�ZdefZdefZdefdefeeedefeeeedefddd�
Z[[dd�ZdJdd�Zdd �Ze d!d"��Z!e d#d$��Z"e"j#d%d$��Z"dKd&d'�Z$e d(d)��Z%e d*d+��Z&e&j#d,d+��Z&d-d.�Z'd/d0�Z(d1d2�Z)d3d4�Z*d5d6d7d8d9d:d;d<d=dd>�
Z+d?d@�Z,dLdCdD�Z-dEdF�Z.dGdH�Z/dS)Mrz�
    The metadata of a release. This implementation uses 2.1
    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^[A-Z]([0-9A-Z-]*[0-9A-Z])?$z	.{1,2047}rKzdistlib (%s)r)�legacy)rprS�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)r�rprSr�Zdynamic)�_legacy�_datar�Nr{cCsB|||g�d�dkrtd��d|_d|_||_|dur=z|�||�||_WdSty<t||d�|_|��YdSwd}|r[t	|d��}|�
�}Wd�n1sUwYn|ra|�
�}|duro|j|jd�|_dSt
|t�sy|�d�}zt�|�|_|�|j|�WdSty�tt|�|d�|_|��YdSw)Nr|r})r�r��rb�r��	generatorr)r�r�)r~rr�r�r��_validate_mappingrrz�validater�r��METADATA_VERSION�	GENERATORr�r	�decode�json�loadsrQr)r�r�r�r�r�r�rIrrrr�usD�
���

�zMetadata.__init__)rprS�license�keywordsr�r8r=r?r.)r/N)r"N)
�run_requires�build_requires�dev_requiresZ
test_requires�
meta_requires�extras�modules�
namespaces�exports�commands�classifiers�
source_urlr�c
CsXt�|d�}t�|d�}||vr�||\}}|jr0|dur(|dur#dn|�}|S|j�|�}|S|dur6dn|�}|dvrF|j�||�}|St�}|}|j�d�}	|	r�|dkr^|	�d|�}n'|dkrp|	�d�}	|	ro|	�||�}n|	�d	�}	|	s}|j�d	�}	|	r�|	�||�}||ur�|}|S||vr�t�||�}|S|jr�|j�|�}|S|j�|�}|S)
N�common_keys�mapped_keys�r
r	rrr�
extensionsr
�python.commandsr�python.details�python.exports)�object�__getattribute__r�r�r�)
r�r]�common�mapped�lkZmaker�resultr^�sentinel�drrrr�sR!���
�
���zMetadata.__getattribute__cCsP||jvr"|j|\}}|p|j|vr$|�|�}|s&td||f��dSdSdS)Nz.'%s' is an invalid value for the '%s' property)�SYNTAX_VALIDATORSr��matchr)r�r]r^r��pattern�
exclusions�mrrr�_validate_value�s

��zMetadata._validate_valuecCs0|�||�t�|d�}t�|d�}||vrd||\}}|jr,|dur%t�||j|<dS|dvr7||j|<dS|j�di�}|dkrH||d<dS|dkrX|�di�}|||<dS|�d	i�}|||<dS||vrqt�|||�dS|d
kr�t|t	�r�|�
�}|r�|��}ng}|jr�||j|<dS||j|<dS)Nr
rrrr
rrrrr)r!rrr��NotImplementedErrorr��
setdefault�__setattr__r�rr�r�)r�r]r^rrrrmrrrrr$�s<

zMetadata.__setattr__cCst|j|jd�S�NT)ryrprSr�rrr�name_and_versionszMetadata.name_and_versioncCsF|jr	|jd}n|j�dg�}d|j|jf}||vr!|�|�|S)Nr7�providesz%s (%s))r�r�r#rprSr�)r�r�srrrr's
zMetadata.providescCs"|jr
||jd<dS||jd<dS)Nr7r')r�r�r�rrrr'sc
Cs�|jr|}|Sg}t|p
g|j�}|D]2}d|vr d|vr d}nd|vr'd}n|�d�|v}|r<|�d�}|r<t||�}|rE|�|d�qdD]#}d|}	|	|vrk|�|	�|j�d|g�}|�|j|||d��qH|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rr�r
�extendrar��get_requirements)
r��reqtsrr/rr�includerUr]�errrr1&s4	�

�
�zMetadata.get_requirementscCs|jr|��S|jSrF)r��_from_legacyr�r�rrr�
dictionaryOszMetadata.dictionarycCs|jrt�t|j|j�SrF)r�r"rr��DEPENDENCY_KEYSr�rrr�dependenciesUszMetadata.dependenciescCs|jrt�|j�|�dSrF)r�r"r�r�r�rrrr8\sc	Cs�|�d�|jkrt��g}|j��D]\}}||vr#||vr#|�|�q|r1dd�|�}t|��|��D]\}}|�|||�q5dS)Nr�zMissing metadata items: %sr�)	r�r�r�MANDATORY_KEYSr`r�r�rr!)	r�r�r�r�r]rr�r�r�rrrr�cs
��zMetadata._validate_mappingcCsH|jr|j�d�\}}|s|rt�d||�dSdS|�|j|j�dS)NTz#Metadata: missing: %s, warnings: %s)r�r�rbr�r�r�r�)r�r�r�rrrr�qs�zMetadata.validatecCs$|jr	|j�d�St|j|j�}|Sr%)r�r�rr��
INDEX_KEYS)r�rrrrr�yszMetadata.todictcCs�|jr|jrJ�|j|jd�}|j�d�}dD]}||vr,|dkr$d}n|}||||<q|�dg�}|dgkr:g}||d<d	}|D]\}}||vrW||rWd
||ig||<qB|j|d<|S)Nr�T)rprSrr��description�
classifierr<rr(�r))Z
requires_distr)Zsetup_requires_distrr+r')r�r�r�r�r�r�r')r�rZlmdr��nk�kwrW�okrrrr5�s.��
�
zMetadata._from_legacyr#r$r,r&r'r)r*r+r/)
rprS)rrrr�r;)r�python.projectZproject_urlsZHome)rrA�contactsrrp)rrArBr�emailr)rrrcCs�dd�}|jr
|jrJ�t�}|j}|j��D]7\}}t|t�s+||vr*||||<q|}d}|D]}z||}Wq1ttfyGd}Ynw|rN|||<q||j	|j
�}	||j|j�}
|j
rit|j
�|d<t|	�|d<t|
�|d<|S)NcSs�t�}|D]>}|�d�}|�d�}|d}|D]+}|s#|s#|�|�qd}|r+d|}|r8|r6d||f}n|}|�d�||f��qq|S)Nr)r*r+r=z
extra == "%s"z(%s) and %sr�)r�r��addr�)�entriesr2r4r)r/Zrlistr�rUrrr�process_entries�s$

�
z,Metadata._to_legacy.<locals>.process_entriesTFr?r8r=)r�r�rz�LEGACY_MAPPINGr`r�rOr��
IndexErrorrrrrr�sorted)r�rFrZnmdr>r@r�foundr�Zr1Zr2rrr�
_to_legacy�s8
���zMetadata._to_legacyFTcCs�||g�d�dkr
td��|��|r2|jr|j}n|��}|r)|j||d�dS|j||d�dS|jr:|��}n|j}|rKt	j
||dddd�dSt�|dd��}t	j
||dddd�Wd�dS1shwYdS)	Nrz)Exactly one of path and fileobj is needed)r�Tr|)�ensure_ascii�indent�	sort_keysr�r)
r~rQr�r�rKr�r�r5r�r��dumpr�r�)r�r�r�r�r�Z	legacy_mdrrIrrrr��s$
"�zMetadata.writecCs�|jr|j�|�dS|j�dg�}d}|D]}d|vr$d|vr$|}nq|dur5d|i}|�d|�dSt|d�t|�B}t|�|d<dS)Nrr*r)r+r)r�r�r�r#�insertr�rI)r�r�r�always�entryZrsetrrrr��s�zMetadata.add_requirementscCs*|jpd}|jp	d}d|jj|j||fS)Nz	(no name)z
no versionz<%s %s %s (%s)>)rprSr�rr�)r�rprSrrrr�s

zMetadata.__repr__r�rF)NN)NNFT)0rrrr�re�compileZMETADATA_VERSION_MATCHER�IZNAME_MATCHERZFIELDNAME_MATCHERrZVERSION_MATCHERZSUMMARY_MATCHERr�rr�r9r:r7r�	__slots__r�r�r
r�Z	none_list�dictZ	none_dictrrr!r$�propertyr&r'�setterr1r6r8r�r�r�r5rGrKr�r�r�rrrrrHs�

��
+�
*	&




)


�
3rr�)Ir�
__future__rr�rCrr�r�rSr=rr�compatrrr	rYr
�utilrrrSr
r�	getLoggerrrbrrrr�__all__rrrTr�r�rMrNrerGrfZ_426_FIELDSZ_426_MARKERSrPrgrhrRr�r�r�ZEXTRA_RErTrkr�r`r�r�r�r�r�r�r�r�rr�rwryrzZMETADATA_FILENAMEZWHEEL_METADATA_FILENAMEZLEGACY_METADATA_FILENAMErrrrr�<module>s|









J


a