HEX
Server: Apache
System: Linux sg2plmcpnl492417.prod.sin2.secureserver.net 4.18.0-553.58.1.lve.el8.x86_64 #1 SMP Fri Jul 4 12:07:06 UTC 2025 x86_64
User: nyiet8349bzl (9207396)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //opt/python38/lib/python3.8/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-38.pyc
U

��ey��@sdZddlmZddlZddlmZddlZddlZddlZddl	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-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<d0Z=d1Z>d2Z?e@�ZAe�"d3�ZBd=d5d6�ZCGd7d8�d8e@�ZDd9ZEd:ZFd;ZGGd<d�de@�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�@/tmp/pip-unpacked-wheel-uzdrexel/pip/_vendor/distlib/metadata.pyrsrc@seZdZdZdS)�MetadataConflictErrorz>Attempt to read or write metadata fields that are conflictual.Nrrrrrr src@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|dkrBttdd�tD��S|dkrTtd��n|d	kr`tSt|��dS)
N�1.0r�1.2)�1.3�2.1css|]}|tkr|VqdS�N)�_345_FIELDS)�.0�frrr�	<genexpr>sz%_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�_version2fieldlistvs
rRc
CsBdd�}g}|��D]"\}}|gddfkr,q|�|�qddddd	d
g}|D]�}|tkrvd|krv|�d�t�d|�|tkr�d|kr�|�d�t�d|�|tkr�d|kr�|�d�t�d
|�|tkr�d|kr�|�d�t�d|�|tk�rd	|k�r|dk�r|�d	�t�d|�|t	krLd
|krL|�d
�t�d|�qLt
|�dk�rZ|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�r�td��|�s |�s |�s |	�s t|k�r tS|�r*dS|�r4dS|�r>d	Sd
S)z5Detect the best version depending on the fields used.cSs|D]}||krdSqdS)NTFr)�keys�markers�markerrrr�_has_marker�sz"_best_version.<locals>._has_marker�UNKNOWNNr@rrArBrCrJzRemoved 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.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)�items�appendrK�remove�logger�debugrLrErNrP�lenr�_314_MARKERS�_345_MARKERS�_566_MARKERS�_643_MARKERS�intr)
�fieldsrVrS�key�valueZpossible_versionsZis_1_1Zis_1_2Zis_2_1Zis_2_2rrr�
_best_version�s`






&
rfcCsi|]}|���dd�|�qS)�-�_)�lower�replace)rF�namerrr�
<dictcomp>�srlcCsi|]\}}||�qSrr)rF�attr�fieldrrrrl�s)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.rg� �.z%s-%s)�	_FILESAFE�subrj)rkrQZfor_filenamerrr�_get_name_and_version�srsc@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��'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 )rfrz�r�rrrrsz#LegacyMetadata.set_metadata_versioncCs|�d||f�dS)Nz%s: %s
)�write)r�r�rkrerrr�_write_fieldszLegacyMetadata._write_fieldcCs
|�|�SrD)�get�r�rkrrr�__getitem__szLegacyMetadata.__getitem__cCs|�||�SrD)�set)r�rkrerrr�__setitem__"szLegacyMetadata.__setitem__cCs8|�|�}z|j|=Wntk
r2t|��YnXdSrD)�
_convert_namerz�KeyError)r�rk�
field_namerrr�__delitem__%s

zLegacyMetadata.__delitem__cCs||jkp|�|�|jkSrD)rzr�r�rrr�__contains__,s
�zLegacyMetadata.__contains__cCs(|tkr|S|�dd���}t�||�S)Nrgrh)�_ALL_FIELDSrjri�_ATTR2FIELDr�r�rrrr�0szLegacyMetadata._convert_namecCs|tks|tkrgSdS)NrW)�_LISTFIELDS�_ELEMENTSFIELDr�rrr�_default_value6szLegacyMetadata._default_valuecCs&|jdkrt�d|�St�d|�SdS)N�r@r�
)�metadata_version�_LINE_PREFIX_PRE_1_2rr�_LINE_PREFIX_1_2�r�rerrr�_remove_line_prefix;s
z"LegacyMetadata._remove_line_prefixcCs|tkr||St|��dSrD)r��AttributeErrorr�rrr�__getattr__AszLegacyMetadata.__getattr__FcCst|d|d|�S)zhReturn the distribution name with version.

        If filesafe is true, return a filename-escaped form.r!r")rs)r�Zfilesaferrr�get_fullnameLszLegacyMetadata.get_fullnamecCs|�|�}|tkS)z+return True if name is a valid metadata key)r�r�r�rrr�is_fieldRs
zLegacyMetadata.is_fieldcCs|�|�}|tkSrD)r�r�r�rrr�is_multi_fieldWs
zLegacyMetadata.is_multi_fieldcCs.tj|ddd�}z|�|�W5|��XdS)z*Read the metadata values from a file path.�rr��encodingN)�codecs�open�closer})r��filepath�fprrrr|[szLegacyMetadata.readcCs�t|�}|d|jd<tD]p}||kr(q|tkrf|�|�}|tkrX|dk	rXdd�|D�}|�||�q||}|dk	r|dkr|�||�q|��}|r�|n|d|d<dS)z,Read the metadata values from a file object.zmetadata-versionr NcSsg|]}t|�d���qS��,)rM�split�rFrerrr�
<listcomp>psz,LegacyMetadata.read_file.<locals>.<listcomp>rWr%)rrzr�r��get_all�_LISTTUPLEFIELDSr��get_payload)r�Zfileob�msgrn�valuesre�bodyrrrr}cs
zLegacyMetadata.read_filecCs0tj|ddd�}z|�||�W5|��XdS)z&Write the metadata fields to filepath.�wrr�N)r�r�r��
write_file)r�r��skip_unknownr�rrrr�szLegacyMetadata.writecCs�|��t|d�D]�}|�|�}|r8|dgdgfkr8q|tkrV|�||d�|��q|tkr�|dkr�|jdkr~|�dd�}n|�dd�}|g}|t	kr�d	d
�|D�}|D]}|�|||�q�qdS)z0Write the PKG-INFO format data to a file object.r rWr�r%r�r�rz	
       |cSsg|]}d�|��qSr���joinr�rrrr��sz-LegacyMetadata.write_file.<locals>.<listcomp>N)
rrRr�r�r�r�r�r�rjr�)r��
fileobjectr�rnr�rerrrr��s$

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"|tkr|r����|�|�dSrD)r�r�r�)rdrer�rr�_set�sz#LegacyMetadata.update.<locals>._setrSN)�hasattrrSrX)r��other�kwargsr��k�vrr�rr~�s

zLegacyMetadata.updatecCsh|�|�}|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�|D](}|�|�d�d�s�t�d	|||�q�nb|tk�r|dk	�r|�|��s<t�d
|||�n0|tk�r<|dk	�r<|�|��s<t�d
|||�|tk�rZ|dk�rZ|�|�}||j|<dS)z"Control then set a metadata field.r#cSsg|]}|���qSr)�strip)rFr�rrrr��sz&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�listrMrr�r�r[�isEnabledFor�logging�WARNINGr
r{�_PREDICATE_FIELDS�is_valid_matcher�warning�_VERSIONS_FIELDS�is_valid_constraint_list�_VERSION_FIELDS�is_valid_version�_UNICODEFIELDSr�rz)r�rkre�project_namer{r�rrrr��sV
�
�

���


zLegacyMetadata.setcCs�|�|�}||jkr*|tkr&|�|�}|S|tkr@|j|}|S|tkr�|j|}|dkr^gSg}|D].}|tkr~|�|�qf|�|d|df�qf|S|tkr�|j|}t	|t
�r�|�d�S|j|S)zGet a metadata field.Nrrr�)r�rz�_MISSINGr�r�r�r�rYr�r�rr�)r�rkrure�res�valrrrr��s.







zLegacyMetadata.getcs�|��gg}}dD]}||kr|�|�q|rP|gkrPdd�|�}t|��dD]}||krT|�|�qT|ddkr�||fSt|j���fdd�}t|ft�jft	�j
ffD]@\}}|D]2}	|�|	d	�}
|
d	k	r�||
�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�)rer��r{rr�are_valid_constraintssz3LegacyMetadata.check.<locals>.are_valid_constraintsNzWrong value for '%s': %s)rrYr�rr
r{r�r�r�r�r�r�)r��strict�missing�warningsrmr�r�rc�
controllerrnrerr�r�checks8

���zLegacyMetadata.checkcCsh|��t|d�}i}|D]F}|r.||jkrt|}|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�Dsz)LegacyMetadata.todict.<locals>.<listcomp>)rrRrz�_FIELD2ATTR)r�Zskip_missingrc�datar�rdrrr�todict1szLegacyMetadata.todictcCs8|ddkr$dD]}||kr||=q|d|7<dS)Nr r)r.r0r/r6r)r��requirementsrnrrr�add_requirementsHs
zLegacyMetadata.add_requirementscCstt|d��Sr�)r�rRr�rrrrSSszLegacyMetadata.keysccs|��D]
}|VqdSrD�rS)r�rdrrr�__iter__VszLegacyMetadata.__iter__cs�fdd����D�S)Ncsg|]}�|�qSrr�rFrdr�rrr�[sz)LegacyMetadata.values.<locals>.<listcomp>r�r�rr�rr�ZszLegacyMetadata.valuescs�fdd����D�S)Ncsg|]}|�|f�qSrrr�r�rrr�^sz(LegacyMetadata.items.<locals>.<listcomp>r�r�rr�rrX]szLegacyMetadata.itemscCsd|jj|j|jfS)Nz
<%s %s %s>)�	__class__rrkrQr�rrr�__repr__`s�zLegacyMetadata.__repr__)NNNru)F)F)F)N)F)F)"rrrrr�rr�r�r�r�r�r�r�r�r�r�r�r�r|r}r�r�r~r�r�r�r�r�r�rSr�r�rXr�rrrrrt�s@�




,
,
rtzpydist.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}rIzdistlib (%s)r)�legacy)rkrQ�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�rkrQr�Zdynamic)�_legacy�_datar{Nruc	Cs0|||g�d�dkrtd��d|_d|_||_|dk	rzz|�||�||_Wn*tk
rvt||d�|_|��YnXn�d}|r�t	|d��}|�
�}W5QRXn|r�|�
�}|dkr�|j|jd�|_ndt
|t�s�|�d�}zt�|�|_|�|j|�Wn0tk
�r*tt|�|d�|_|��YnXdS)Nrvrw)r�r{�rb�r��	generatorr)r�r{)rxryr�r�r{�_validate_mappingrrt�validater�r|�METADATA_VERSION�	GENERATORr�r	�decode�json�loadsrOr)r�r�r�r�r{r�rGrrrr��s@
�


�zMetadata.__init__)rkrQ�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�}||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�rrrrr�
extensionsr�python.commandsr�python.details�python.exports)�object�__getattribute__r�r�r�)
r�rd�common�mapped�lk�maker�resultre�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)r�rdrer{�pattern�
exclusions�mrrr�_validate_values

��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)Nrrrr	rr
rrrr�)rr
rr��NotImplementedErrorr��
setdefault�__setattr__r�rr�r�)r�rdrerrrrhrrrrrs<




zMetadata.__setattr__cCst|j|jd�S�NT)rsrkrQr�rrr�name_and_version7szMetadata.name_and_versioncCsF|jr|jd}n|j�dg�}d|j|jf}||krB|�|�|S)Nr5�providesz%s (%s))r�r�rrkrQrY)r�r�srrrr!;s
zMetadata.providescCs |jr||jd<n
||jd<dS)Nr5r!)r�r�r�rrrr!Fsc
Cs�|jr|}n�g}t|pg|j�}|D]d}d|kr>d|kr>d}n8d|krLd}n|�d�|k}|rv|�d�}|rvt||�}|r$|�|d�q$dD]F}d|}	|	|kr�|�|	�|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r�r�r
�extendrZr��get_requirements)
r��reqtsr�r)rr�includerUrd�errrr+Ms2	


�
zMetadata.get_requirementscCs|jr|��S|jSrD)r��_from_legacyr�r�rrr�
dictionarywszMetadata.dictionarycCs|jrt�nt|j|j�SdSrD)r�rrr��DEPENDENCY_KEYSr�rrr�dependencies}szMetadata.dependenciescCs|jrt�n|j�|�dSrD)r�rr�r~r�rrrr2�sc	Cs�|�d�|jkrt��g}|j��D]"\}}||kr$||kr$|�|�q$|rbdd�|�}t|��|��D]\}}|�|||�qjdS)Nr�zMissing metadata items: %sr�)	r�r�r�MANDATORY_KEYSrXrYr�rr)	r�r�r{r�rdrr�r�r�rrrr��s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��s�zMetadata.validatecCs(|jr|j�d�St|j|j�}|SdSr)r�r�rr��
INDEX_KEYS)r�rrrrr��szMetadata.todictc
Cs�|jr|jrt�|j|jd�}|j�d�}dD]*}||kr.|dkrHd}n|}||||<q.|�dg�}|dgkrtg}||d<d	}|D]*\}}||kr�||r�d
||ig||<q�|j|d<i}i}	|S)Nr�T)rkrQr�r��description�
classifierr6rr&�r�))Z
requires_distr�)Zsetup_requires_distr�r%r!)r�r��AssertionErrorr�r�r�r�r!)
r�rZlmdr��nk�kwrS�ok�author�
maintainerrrrr/�s.�

zMetadata._from_legacyr!r"r*r$r%r'r(r)r-)
rkrQ)r	rr�r�r5)r	�python.project�project_urlsZHome)r	r>�contactsrrk)r	r>r@r�emailr)r	rrcCs�dd�}|jr|jrt�t�}|j}|j��D]v\}}t|t�sV||kr�||||<q.|}d}|D]4}z||}Wqbtt	fk
r�d}Yq�YqbXqb|r.|||<q.||j
|j�}	||j|j
�}
|jr�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%r7z
extra == "%s"z(%s) and %sr�)r�r��addr�)�entriesr,r.r#r)Zrlistr�rUrrr�process_entries�s"

z,Metadata._to_legacy.<locals>.process_entriesTFr=r6r;)r�r�r8rt�LEGACY_MAPPINGrXr�rMr��
IndexErrorr�r�r�r�r��sorted)r�rDrZnmdr9r;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�W5QRXdS)	Nrz)Exactly one of path and fileobj is needed)r�Trv)�ensure_ascii�indent�	sort_keysr�r)
rxrOr�r�rIr�r�r/r�r��dumpr�r�)r�r�r�r�r�Z	legacy_mdrrGrrrr�s*
��zMetadata.writecCs�|jr|j�|�nr|j�dg�}d}|D]}d|kr*d|kr*|}qHq*|dkrfd|i}|�d|�n t|d�t|�B}t|�|d<dS)Nr�r$r#r%r)r�r�r�r�insertr�rG)r�r�r��always�entryZrsetrrrr�szMetadata.add_requirementscCs*|jpd}|jpd}d|jj|j||fS)Nz	(no name)z
no versionz<%s %s %s (%s)>)rkrQr�rr�)r�rkrQrrrr�0s

�zMetadata.__repr__)NNNru)N)NN)NNFT)0rrrr�re�compileZMETADATA_VERSION_MATCHER�IZNAME_MATCHERZFIELDNAME_MATCHERrZVERSION_MATCHERZSUMMARY_MATCHERr�rr�r3r4r1r�	__slots__r�r�rr�Z	none_list�dictZ	none_dictrrrr�propertyr r!�setterr+r0r2r�r�r�r/rErIr�r�r�rrrrrjs�

���
-�+

'




*


	�
2
)F)Ir�
__future__rr�rArr�r�rQr7rr�compatrrr	rTr
�utilrrrQr
r�	getLoggerrr[rrrr�__all__rrrRr�r�rKrLr^rEr_Z_426_FIELDSZ_426_MARKERSrNr`rarPr�r�r~ZEXTRA_RErRrfr�rXr�r�r�r�r�r�r�r�r
r�rqrsrtZMETADATA_FILENAMEZWHEEL_METADATA_FILENAMEZLEGACY_METADATA_FILENAMErrrrr�<module>s~











P�


j