HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-310.pyc
o

��iy��@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�G/usr/local/lib/python3.10/site-packages/pip/_vendor/distlib/metadata.pyr�rc@r)�MetadataConflictErrorz>Attempt to read or write metadata fields that are conflictual.Nrrrrrr rrc@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@)�Dynamic�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>s�z%_version2fieldlist.<locals>.<genexpr>�2.0z+Metadata 2.0 is withdrawn and not supported�2.2)�_241_FIELDS�_314_FIELDSrH�tuple�_566_FIELDS�
ValueError�_643_FIELDSr)�versionrrr�_version2fieldlistvsrUc
Csdd�}g}|��D]\}}|gddfvrq
|�|�q
gd�}|D]x}|tvr7d|vr7|�d�t�d|�|tvrJd|vrJ|�d�t�d	|�|tvr]d
|vr]|�d
�t�d|�|tvrpd|vrp|�d�t�d
|�|tvr�d|vr�|dkr�|�d�t�d|�|t	vr�d|vr�|�d�t�d|�q"t
|�dkr�|dSt
|�dkr�t�d|�td��d|vo�||t�}d
|vo�||t
�}d|vo�||t�}d|vo�||t�}	t|�t|�t|�t|	�dkr�td��|s�|s�|s�|	s�t|vr�tS|�rdS|�rd
S|�rdSdS)z5Detect the best version depending on the fields used.cSs|D]	}||vrdSqdS)NTFr)�keys�markers�markerrrr�_has_marker�s
�z"_best_version.<locals>._has_marker�UNKNOWNN)rCr rDrErFrMrCzRemoved 1.0 due to %sr zRemoved 1.1 due to %srDzRemoved 1.2 due to %srEzRemoved 1.3 due to %srFr'zRemoved 2.1 due to %srMzRemoved 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�appendrN�remove�logger�debugrOrHrQrS�lenr�_314_MARKERS�_345_MARKERS�_566_MARKERS�_643_MARKERS�intr)
�fieldsrYrV�key�valueZpossible_versionsZis_1_1Zis_1_2Zis_2_1Zis_2_2rrr�
_best_version�sb





�$ricCsi|]}|���dd�|�qS)�-�_)�lower�replace)rI�namerrr�
<dictcomp>�s�rocCsi|]\}}||�qSrr)rI�attr�fieldrrrro��)r8r5r7)r9)r$)r%r.r0r2r1r5r7r8r:r6r-r=r?r>rB)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.rj� �.z%s-%s)�	_FILESAFE�subrm)rnrTZfor_filenamerrr�_get_name_and_version�srwc@seZdZdZ		d?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�mappingrrrr�__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�rnrhrrr�_write_field�zLegacyMetadata._write_fieldcCs
|�|�SrG)�get�r�rnrrr�__getitem__s
zLegacyMetadata.__getitem__cCs|�||�SrG)�set)r�rnrhrrr�__setitem__"szLegacyMetadata.__setitem__cCs0|�|�}z|j|=WdStyt|��wrG)�
_convert_namer~�KeyError)r�rn�
field_namerrr�__delitem__%s
�zLegacyMetadata.__delitem__cCs||jvp|�|�|jvSrG)r~r�r�rrr�__contains__,s
�zLegacyMetadata.__contains__cCs(|tvr|S|�dd���}t�||�S)Nrjrk)�_ALL_FIELDSrmrl�_ATTR2FIELDr�r�rrrr�0szLegacyMetadata._convert_namecCs|tvs|tvr
gSdS)NrZ)�_LISTFIELDS�_ELEMENTSFIELDr�rrr�_default_value6szLegacyMetadata._default_valuecCs"|jdvrt�d|�St�d|�S)N�rCr �
)�metadata_version�_LINE_PREFIX_PRE_1_2rv�_LINE_PREFIX_1_2�r�rhrrr�_remove_line_prefix;s
z"LegacyMetadata._remove_line_prefixcCs|tvr||St|��rG)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$)rw)r�Zfilesaferrr�get_fullnameLszLegacyMetadata.get_fullnamecC�|�|�}|tvS)z+return True if name is a valid metadata key)r�r�r�rrr�is_fieldRs
zLegacyMetadata.is_fieldcCr�rG)r�r�r�rrr�is_multi_fieldWs
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�[s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��,)rP�split�rIrhrrr�
<listcomp>psz,LegacyMetadata.read_file.<locals>.<listcomp>rZr')rr~r�r��get_all�_LISTTUPLEFIELDSr��get_payload)r�Zfileob�msgrq�valuesrh�bodyrrrr�cs 
�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�szLegacyMetadata.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"rZr�r'r�r�r!z	
       |cS�g|]}d�|��qSr���joinr�rrrr��rrz-LegacyMetadata.write_file.<locals>.<listcomp>N)
r�rUr�r�r�r�r�r�rmr�)r��
fileobjectr�rqr�rhrrrr��s(

��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����|�|�dSdSdSrG)r�r�r�)rgrhr�rr�_set�s�z#LegacyMetadata.update.<locals>._setrVN)�hasattrrVr[)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)rIr�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�listrPrr�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�rnrh�project_namerr�rrrr��sP
�
�

���
��
�
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�r\r�r�rr�)r�rnryrh�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"rDcs(|D]}��|�d�d�sdSqdS)Nr�rFT)r�r�)rhr��rrr�are_valid_constraintss
�z3LegacyMetadata.check.<locals>.are_valid_constraintsNzWrong value for '%s': %s)r�r\r�rr
rr�r�r�r�r�r�)r��strict�missing�warningsrpr�r�rf�
controllerrqrhrr�r�checks@

�
�
�����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"�project_urlcSr�r�r�)rI�urrrr�Drrz)LegacyMetadata.todict.<locals>.<listcomp>)r�rUr~�_FIELD2ATTR)r�Zskip_missingrf�datar�rgrrr�todict1s�zLegacyMetadata.todictcCs8|ddkrdD]	}||vr||=q|d|7<dS)Nr"r )r0r2r1r8r)r��requirementsrqrrr�add_requirementsHs�zLegacyMetadata.add_requirementscCstt|d��Sr�)r�rUr�rrrrVSszLegacyMetadata.keysccs�|��D]}|VqdSrG�rV)r�rgrrr�__iter__Vs��zLegacyMetadata.__iter__c��fdd����D�S)Ncsg|]}�|�qSrr�rIrgr�rrr�[r�z)LegacyMetadata.values.<locals>.<listcomp>r�r�rr�rr�Zr�zLegacyMetadata.valuescr�)Ncsg|]}|�|f�qSrrr�r�rrr�^sz(LegacyMetadata.items.<locals>.<listcomp>r�r�rr�rr[]r�zLegacyMetadata.itemscCsd|jj|j|jfS)Nz
<%s %s %s>)�	__class__rrnrTr�rrr�__repr__`s�zLegacyMetadata.__repr__�NNNry�FrG)"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�rVr�r�r[r�rrrrrx�sB
�



,

,rxzpydist.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
�ZdZ		dIdd�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}rLzdistlib (%s)r)�legacy)rnrT�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�rnrTr�Zdynamic)�_legacy�_datarNrycCsB|||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)Nrzr{)r�r�rb�r��	generatorr)r�r)r|r}r�r�r�_validate_mappingrrx�validater�r��METADATA_VERSION�	GENERATORr�r	�decode�json�loadsrRr)r�r�r�r�rr�rJrrrr��sH�
���

��zMetadata.__init__)rnrT�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�rr
rrr�
extensionsr�python.commandsr�python.details�python.exports)�object�__getattribute__r�r�r�)
r�rg�common�mapped�lk�maker�resultrh�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�rgrhr�pattern�
exclusions�mrrr�_validate_values

���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)Nrrrrrrrrrr)r&rrr��NotImplementedErrorr��
setdefault�__setattr__r�rr�r�)r�rgrhrrrrkr rrrr)s<

zMetadata.__setattr__cCst|j|jd�S�NT)rwrnrTr�rrr�name_and_version7szMetadata.name_and_versioncCsF|jr	|jd}n|j�dg�}d|j|jf}||vr!|�|�|S)Nr7�providesz%s (%s))r�r�r(rnrTr\)r�r�srrrr,;s
zMetadata.providescCs"|jr
||jd<dS||jd<dS)Nr7r,)r�r�r�rrrr,Fsc
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r
r�r
�extendr]r��get_requirements)
r��reqtsr
r4rr �includerXrg�errrr6Ms8	�

�
��zMetadata.get_requirementscCs|jr|��S|jSrG)r��_from_legacyr�r�rrr�
dictionarywszMetadata.dictionarycCs|jrt�t|j|j�SrG)r�r'rr��DEPENDENCY_KEYSr�rrr�dependencies}szMetadata.dependenciescCs|jrt�|j�|�dSrG)r�r'r�r�r�rrrr=�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�rr�rgr$r�r�r�rrrr��s
��zMetadata._validate_mappingcCsH|jr|j�d�\}}|s|rt�d||�dSdS|�|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�}|Sr*)r�r�rr��
INDEX_KEYS)r�rrrrr��szMetadata.todictc
Cs�|jr|jrJ�|j|jd�}|j�d�}dD]}||vr,|dkr$d}n|}||||<q|�dg�}|dgkr:g}||d<d	}|D]\}}||vrW||rWd
||ig||<qB|j|d<i}i}	|S)Nr�T)rnrTrr��description�
classifierrArr(�r))Z
requires_distr)Zsetup_requires_distrr0r,)r�r�r�rr�r�r,)
r�rZlmdr��nk�kwrV�okZauthorZ
maintainerrrrr:�s2��
�
zMetadata._from_legacyr#r$r,r&r'r)r*r+r/)
rnrT)rrrr�r@)r�python.projectZproject_urlsZHome)rrF�contactsrrn)rrFrGr�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/r0rBz
extra == "%s"z(%s) and %sr�)r�r��addr�)�entriesr7r9r.r4Zrlistr�rXrrr�process_entries�s$

�
z,Metadata._to_legacy.<locals>.process_entriesTFr?r8r=)r�r�rx�LEGACY_MAPPINGr[r�rPr��
IndexErrorrr	rrr
�sorted)r�rKrZnmdrCrEr �foundr��r1�r2rrr�
_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�Trz)�ensure_ascii�indent�	sort_keysr�r)
r|rRr�r�rRr�r�r:r�r�dumpr�r�)r�r�r�r�r�Z	legacy_mdr rJrrrr�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.r0r)r�r�r�r(�insertr�rN)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)>)rnrTr�rr�)r�rnrTrrrr�0s


�zMetadata.__repr__r�rG)NN)NNFT)0rrrr�re�compileZMETADATA_VERSION_MATCHER�IZNAME_MATCHERZFIELDNAME_MATCHERrZVERSION_MATCHERZSUMMARY_MATCHERr�rrr>r?r<r!�	__slots__r�r�rr�Z	none_list�dictZ	none_dictrrr&r)�propertyr+r,�setterr6r;r=r�r�r�r:rLrRr�r�r�rrrrrjs�

��
�-�
+
'




*


	�
2rr�)Ir�
__future__rr�rHrrr�rZrBrr�compatrrr	rWr
�utilrrrTr
r�	getLoggerrr^rrrr�__all__rrr[r�r�rNrOrarHrbZ_426_FIELDSZ_426_MARKERSrQrcrdrSr�r�r�ZEXTRA_RErUrir�r[r�r�r�r�r�r�r�r�rr�rurwrxZMETADATA_FILENAMEZWHEEL_METADATA_FILENAMEZLEGACY_METADATA_FILENAMErrrrr�<module>s�










P�


j