HEX
Server: LiteSpeed
System: Linux vearitale.com 5.14.0-570.32.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Aug 6 11:30:41 EDT 2025 x86_64
User: yunab9059 (2007)
PHP: 8.3.21
Disabled: NONE
Upload Files
File: //usr/local/lib/python3.9/site-packages/distlib/__pycache__/metadata.cpython-39.pyc
a

��hD��@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@seZdZdZdS)�MetadataMissingErrorzA required metadata is missingN��__name__�
__module__�__qualname__�__doc__�rr�:/usr/local/lib/python3.9/site-packages/distlib/metadata.pyrsrc@seZdZdZdS)�MetadataConflictErrorz>Attempt to read or write metadata fields that are conflictual.Nrrrrrrsrc@seZdZdZdS)� MetadataUnrecognizedVersionErrorz Unknown metadata version number.Nrrrrrr#src@seZdZdZdS)�MetadataInvalidErrorzA metadata value is invalidNrrrrrr'sr)�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)r.r/r0r,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)r5r6r7r3r8r1r2r4)r r!r"r#r+r$r%r&r'r(r)r1r2r*r,r-r3r4r5r6r7r8�Private-Version�Obsoleted-By�Setup-Requires-Dist�	Extension�Provides-Extra)r9r=r:r;r<)�Description-Content-Typer0r/r.)r>)ZDynamic�License-Filez"extra\s*==\s*("([^"]+)"|'([^']+)')cCsl|dkrtS|dkrtS|dkr$tS|dvrBttdd�tD��S|dkrTtd��n|d	kr`tSt|��dS)
N�1.0r�1.2)�1.3�2.1css|]}|tvr|VqdS�N)�_345_FIELDS)�.0�frrr�	<genexpr>p�z%_version2fieldlist.<locals>.<genexpr>�2.0z+Metadata 2.0 is withdrawn and not supported�2.2)�_241_FIELDS�_314_FIELDSrE�tuple�_566_FIELDS�
ValueError�_643_FIELDSr)�versionrrr�_version2fieldlistgs
rSc	Csdd�}dd�|��D�}gd�}|D]�}|tvrPd|vrP|�d�t�d|�|tvrvd|vrv|�d�t�d	|�|tvr�d
|vr�|�d
�t�d|�|tvr�d|vr�|�d�t�d
|�|tvr�d|vr�|dkr�|�d�t�d|�|tvr&d|vr&|�d�t�d|�q&t	|�dk�r.|dSt	|�dk�rPt�d|�t
d��d|v�ob||t�}d
|v�ov||t�}d|v�o�||t
�}d|v�o�||t�}t|�t|�t|�t|�dk�r�t
d��|�s�|�s�|�s�|�s�t|v�r�tS|�r�dS|�rd
S|�rdSdS)z5Detect the best version depending on the fields used.cst�fdd�|D��S)Nc3s|]}|�vVqdSrDr)rF�marker��keysrrrH}rIz5_best_version.<locals>._has_marker.<locals>.<genexpr>)�any)rV�markersrrUr�_has_marker|sz"_best_version.<locals>._has_markercSs"g|]\}}|gddfvr|�qS)�UNKNOWNNr)rF�key�valuerrr�
<listcomp>rIz!_best_version.<locals>.<listcomp>)r@rrArBrCrKr@zRemoved 1.0 due to %srzRemoved 1.1 due to %srAzRemoved 1.2 due to %srBzRemoved 1.3 due to %srCr%zRemoved 2.1 due to %srKzRemoved 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)�itemsrL�remove�logger�debugrMrErOrQ�lenr�_314_MARKERS�_345_MARKERS�_566_MARKERS�_643_MARKERS�intr)	�fieldsrYrVZpossible_versionsr[Zis_1_1Zis_1_2Zis_2_1Zis_2_2rrr�
_best_versionysX





&
ricCsi|]}|���dd�|�qS)�-�_)�lower�replace)rF�namerrr�
<dictcomp>�rIrocCsi|]\}}||�qSrr)rF�attr�fieldrrrro�rI)r6r3r5)r7)r")r#r,r.r0r/r3r5r6r8r4r+r;r=r<r?)r4)r&)r(r1r$r%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.rj� �.z%s-%s)�	_FILESAFE�subrm)rnrRZfor_filenamerrr�_get_name_and_version�srvc@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|_||_|durH|�|�n.|dur\|�|�n|durv|�|�|�	�dS)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 )rir}�r�rrrr�sz#LegacyMetadata.set_metadata_versioncCs|�d||f�dS)Nz%s: %s
)�write)r�r�rnr\rrr�_write_fieldszLegacyMetadata._write_fieldcCs
|�|�SrD)�get�r�rnrrr�__getitem__szLegacyMetadata.__getitem__cCs|�||�SrD)�set)r�rnr\rrr�__setitem__	szLegacyMetadata.__setitem__cCs6|�|�}z|j|=Wnty0t|��Yn0dSrD)�
_convert_namer}�KeyError)r�rn�
field_namerrr�__delitem__s

zLegacyMetadata.__delitem__cCs||jvp|�|�|jvSrD)r}r�r�rrr�__contains__szLegacyMetadata.__contains__cCs(|tvr|S|�dd���}t�||�S)Nrjrk)�_ALL_FIELDSrmrl�_ATTR2FIELDr�r�rrrr�szLegacyMetadata._convert_namecCs|tvs|tvrgSdS)NrZ)�_LISTFIELDS�_ELEMENTSFIELDr�rrr�_default_valueszLegacyMetadata._default_valuecCs&|jdvrt�d|�St�d|�SdS)N�r@r�
)�metadata_version�_LINE_PREFIX_PRE_1_2ru�_LINE_PREFIX_1_2�r�r\rrr�_remove_line_prefix!s
z"LegacyMetadata._remove_line_prefixcCs|tvr||St|��dSrD)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")rv)r�Zfilesaferrr�get_fullname0szLegacyMetadata.get_fullnamecCs|�|�}|tvS)z+return True if name is a valid metadata key)r�r�r�rrr�is_field8s
zLegacyMetadata.is_fieldcCs|�|�}|tvSrD)r�r�r�rrr�is_multi_field=s
zLegacyMetadata.is_multi_fieldcCs6tj|ddd�}z|�|�W|��n
|��0dS)z*Read the metadata values from a file path.�rr��encodingN)�codecs�openr��close)r��filepath�fprrrrAszLegacyMetadata.readcCs�t|�}|d|jd<tD]p}||vr(q|tvrf|�|�}|tvrX|durXdd�|D�}|�||�q||}|dur|dkr|�||�q|��}|r�|n|d|d<dS)z,Read the metadata values from a file object.zmetadata-versionr NcSsg|]}t|�d���qS��,)rN�split�rFr\rrrr]VrIz,LegacyMetadata.read_file.<locals>.<listcomp>rZr%)rr}r�r��get_all�_LISTTUPLEFIELDSr��get_payload)r�Zfileob�msgrq�valuesr\�bodyrrrr�Is
zLegacyMetadata.read_filecCs8tj|ddd�}z|�||�W|��n
|��0dS)z&Write the metadata fields to filepath.�wrr�N)r�r��
write_filer�)r�r��skip_unknownr�rrrr�eszLegacyMetadata.writecCs�|��t|d�D]�}|�|�}|r8|dgdgfvr8q|tvrV|�||d�|��q|tvr�|dkr�|jdvr~|�dd�}n|�dd�}|g}|t	vr�d	d
�|D�}|D]}|�|||�q�qdS)z0Write the PKG-INFO format data to a file object.r rZr�r%r�r�rz	
       |cSsg|]}d�|��qSr���joinr�rrrr]�rIz-LegacyMetadata.write_file.<locals>.<listcomp>N)
r�rSr�r�r�r�r�r�rmr�)r��
fileobjectr�rqr�r\rrrr�ms$

zLegacyMetadata.write_filecsv�fdd�}|sn@t|d�r:|��D]}||||�q$n|D]\}}|||�q>|rr|��D]\}}|||�q^dS)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����|�|�dSrD)r�r�r�)r[r\r�rr�_set�sz#LegacyMetadata.update.<locals>._setrVN)�hasattrrVr^)r��other�kwargsr��k�vrr�rr��s
zLegacyMetadata.updatecCsh|�|�}|tvs|dkrNt|ttf�sNt|t�rHdd�|�d�D�}qzg}n,|tvrzt|ttf�szt|t�rv|g}ng}t�	t
j��r<|d}t|j
�}|tvr�|dur�|D](}|�|�d�d�s�t�d	|||�q�nb|tv�r|du�r|�|��s<t�d
|||�n0|tv�r<|du�r<|�|��s<t�d
|||�|tv�rZ|dk�rZ|�|�}||j|<dS)z"Control then set a metadata field.r#cSsg|]}|���qSr)�strip)rFr�rrrr]�rIz&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�listrNrr�r�r`�isEnabledFor�logging�WARNINGr
r~�_PREDICATE_FIELDS�is_valid_matcher�warning�_VERSIONS_FIELDS�is_valid_constraint_list�_VERSION_FIELDS�is_valid_version�_UNICODEFIELDSr�r})r�rnr\�project_namer~r�rrrr��s4






zLegacyMetadata.setcCs�|�|�}||jvr*|tur&|�|�}|S|tvr@|j|}|S|tvr�|j|}|dur^gSg}|D].}|tvr~|�|�qf|�|d|df�qf|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�rnrxr\�res�valrrrr��s.







zLegacyMetadata.getcs�|��gg}}dD]}||vr|�|�q|rP|gkrPdd�|�}t|��dD]}||vrT|�|�qT|ddkr�||fSt|j���fdd�}t|ft�jft	�j
ffD]@\}}|D]2}	|�|	d	�}
|
d	ur�||
�s�|�d
|	|
f�q�q�||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 rAcs(|D]}��|�d�d�sdSqdS)Nr�rFT)r�r�)r\r��r~rr�are_valid_constraintssz3LegacyMetadata.check.<locals>.are_valid_constraintsNzWrong value for '%s': %s)r�r�r�rr
r~r�r�r�r�r�r�)r��strict�missing�warningsrpr�r�rh�
controllerrqr\rr�r�check�s2


��zLegacyMetadata.checkcCsh|��t|d�}i}|D]F}|r.||jvrt|}|dkrL||||<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 �project_urlcSsg|]}d�|��qSr�r�)rF�urrrr]#rIz)LegacyMetadata.todict.<locals>.<listcomp>)r�rSr}�_FIELD2ATTR)r�Zskip_missingrh�datar�r[rrr�todictszLegacyMetadata.todictcCs8|ddkr$dD]}||vr||=q|d|7<dS)Nr r)r.r0r/r6r)r��requirementsrqrrr�add_requirements's
zLegacyMetadata.add_requirementscCstt|d��Sr�)r�rSr�rrrrV2szLegacyMetadata.keysccs|��D]
}|VqdSrDrU)r�r[rrr�__iter__5szLegacyMetadata.__iter__cs�fdd����D�S)Ncsg|]}�|�qSrr�rFr[r�rrr]:rIz)LegacyMetadata.values.<locals>.<listcomp>rUr�rr�rr�9szLegacyMetadata.valuescs�fdd����D�S)Ncsg|]}|�|f�qSrrr�r�rrr]=rIz(LegacyMetadata.items.<locals>.<listcomp>rUr�rr�rr^<szLegacyMetadata.itemscCsd|jj|j|jfS)Nz
<%s %s %s>)�	__class__rrnrRr�rrr�__repr__?szLegacyMetadata.__repr__)NNNrx)F)F)F)N)F)F)"rrrrr�r�r�r�r�r�r�r�r�r�r�r�r�r�rr�r�r�r�r�r�r�r�r�r�rVr�r�r^r�rrrrrw�s<
	



&
*
rwzpydist.jsonz
metadata.json�METADATAc@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}rJzdistlib (%s)r)�legacy)rnrR�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�rnrRr�Zdynamic)�_legacy�_datar~NrxcCs@|||g�d�dkrtd��d|_d|_||_|durxz|�||�||_Wn(tytt||d�|_|��Yn0n�d}|r�t	|d��}|�
�}Wd�q�1s�0Yn|r�|�
�}|dur�|j|jd�|_nbt
|t�s�|�d�}zt�|�|_|�|j|�Wn.t�y:tt|�|d�|_|��Yn0dS)Nryrz)r�r~�rb�r��	generatorr)r�r~)r{r|r�r�r~�_validate_mappingrrw�validater�r�METADATA_VERSION�	GENERATORr�r	�decode�json�loadsrPr)r�r�r�r�r~r�rGrrrr�us<
(�


zMetadata.__init__)rnrR�license�keywordsr�r6r;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�}||v�r||\}}|jr^|durP|durHdn|�}n|j�|�}n�|durjdn|�}|dvr�|j�||�}n�t�}|}|j�d�}	|	�r
|dkr�|	�d|�}nP|dkr�|	�d�}	|	r�|	�||�}n,|	�d	�}	|	s�|j�d	�}	|	�r
|	�||�}||u�rT|}n:||v�r2t�||�}n"|j�rH|j�|�}n|j�|�}|S)
N�common_keys�mapped_keys�rrrrr�
extensionsr�python.commandsr�python.details�python.exports)�object�__getattribute__r�r�r�)
r�r[�common�mapped�lk�maker�resultr\�sentinel�drrrr�sD




zMetadata.__getattribute__cCsH||jvrD|j|\}}|p |j|vrD|�|�}|sDtd||f��dS)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_valuecCs*|�||�t�|d�}t�|d�}||vr�||\}}|jrV|durJt�||j|<nf|dvrj||j|<nR|j�di�}|dkr�||d<n2|dkr�|�di�}|||<n|�d	i�}|||<nh||vr�t�|||�nP|d
k�rt|t	��r|�
�}|�r|��}ng}|j�r||j|<n
||j|<dS)Nrr	r
rrrrr
rr�)rrrr��NotImplementedErrorr��
setdefault�__setattr__r�rr�r�)r�r[r\rrrrkrrrrr �s<




zMetadata.__setattr__cCst|j|jd�S�NT)rvrnrRr�rrr�name_and_versionszMetadata.name_and_versioncCsF|jr|jd}n|j�dg�}d|j|jf}||vrB|�|�|S)Nr5�providesz%s (%s))r�r�rrnrRr�)r�r�srrrr#s
zMetadata.providescCs |jr||jd<n
||jd<dS)Nr5r#)r�r�r�rrrr#sc
Cs�|jr|}n�g}t|pg|j�}|D]d}d|vr>d|vr>d}n8d|vrLd}n|�d�|v}|rv|�d�}|rvt||�}|r$|�|d�q$dD]F}d|}	|	|vr�|�|	�|j�d|g�}|�|j|||d��q�|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
�extendr_r��get_requirements)
r��reqtsrr+rr�includerTr[�errrr-&s.	


zMetadata.get_requirementscCs|jr|��S|jSrD)r��_from_legacyr�r�rrr�
dictionaryOszMetadata.dictionarycCs|jrt�nt|j|j�SdSrD)r�rrr��DEPENDENCY_KEYSr�rrr�dependenciesUszMetadata.dependenciescCs|jrt�n|j�|�dSrD)r�rr�r�r�rrrr4\sc	Cs�|�d�|jkrt��g}|j��D]"\}}||vr$||vr$|�|�q$|rbdd�|�}t|��|��D]\}}|�|||�qjdS)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_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~)r�r�r�rrrr�qs
zMetadata.validatecCs(|jr|j�d�St|j|j�}|SdSr!)r�r�rr��
INDEX_KEYS)r�rrrrr�yszMetadata.todictcCs�|jr|jrJ�|j|jd�}|j�d�}dD]*}||vr.|dkrHd}n|}||||<q.|�dg�}|dgkrtg}||d<d	}|D]*\}}||vr�||r�d
||ig||<q�|j|d<|S)Nr�T)rnrRr�r��description�
classifierr8rr&�r�))Z
requires_distr�)Zsetup_requires_distr�r'r#)r�r�r�r�r�r�r#)r�rZlmdr��nk�kwrV�okrrrr1�s*�

zMetadata._from_legacyr!r"r*r$r%r'r(r)r-)
rnrR)rr
r�r�r7)r�python.projectZproject_urlsZHome)rr=�contactsrrn)rr=r>r�emailr)rr
rcCs�dd�}|jr|jrJ�t�}|j}|j��D]t\}}t|t�sV||vr�||||<q.|}d}|D]2}z||}Wqbttfy�d}Yq�Yqb0qb|r.|||<q.||j	|j
�}	||j|j�}
|j
r�t|j
�|d<t|	�|d<t|
�|d<|S)NcSs�t�}|D]|}|�d�}|�d�}|d}|D]V}|sF|sF|�|�q.d}|rVd|}|rp|rld||f}n|}|�d�||f��q.q
|S)Nr%r&r'r9z
extra == "%s"z(%s) and %sr�)r�r��addr�)�entriesr.r0r%r+Zrlistr�rTrrr�process_entries�s"

z,Metadata._to_legacy.<locals>.process_entriesTFr=r6r;)r�r�rw�LEGACY_MAPPINGr^r�rNr��
IndexErrorr�rr�r�r�sorted)r�rBrZnmdr:r<r�foundr�Zr1Zr2rrr�
_to_legacy�s2

zMetadata._to_legacyFTcCs�||g�d�dkrtd��|��|r`|jr4|j}n|��}|rP|j||d�q�|j||d�nr|jrp|��}n|j}|r�t	j
||dddd�nBt�|dd��$}t	j
||dddd�Wd�n1s�0YdS)	Nrz)Exactly one of path and fileobj is needed)r�Try)�ensure_ascii�indent�	sort_keysr�r)
r{rPr�r�rGr�r�r1r�r��dumpr�r�)r�r�r�r�r�Z	legacy_mdrrGrrrr��s"
zMetadata.writecCs�|jr|j�|�nr|j�dg�}d}|D]}d|vr*d|vr*|}qHq*|durfd|i}|�d|�n t|d�t|�B}t|�|d<dS)Nr�r&r%r'r)r�r�r�r�insertr�rE)r�r�r��always�entryZrsetrrrr��szMetadata.add_requirementscCs*|jpd}|jpd}d|jj|j||fS)Nz	(no name)z
no versionz<%s %s %s (%s)>)rnrRr�rr�)r�rnrRrrrr�s

zMetadata.__repr__)NNNrx)N)NN)NNFT)0rrrr�re�compileZMETADATA_VERSION_MATCHER�IZNAME_MATCHERZFIELDNAME_MATCHERrZVERSION_MATCHERZSUMMARY_MATCHERr�rr�r5r6r3r�	__slots__r�r�rr�Z	none_list�dictZ	none_dictr	rrr �propertyr"r#�setterr-r2r4r�r�r�r1rCrGr�r�r�rrrrrHs�

��
+�*
	&




)


�
3
r)F)Ir�
__future__rr�r?rr�r�rOr9rr�compatrrr	rXr
�utilrrrRr
r�	getLoggerrr`rrrr�__all__rrrPr�r�rLrMrcrErdZ_426_FIELDSZ_426_MARKERSrOrerfrQr�r�r�ZEXTRA_RErSrir�r^r�r�r�r�r�r�r�r�rr�rtrvrwZMETADATA_FILENAMEZWHEEL_METADATA_FILENAMEZLEGACY_METADATA_FILENAMErrrrr�<module>sz









J


a