HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/lib/python3.10/dist-packages/distlib/__pycache__/metadata.cpython-310.pyc
o

j�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@�eZdZdZdS)�MetadataMissingErrorzA required metadata is missingN��__name__�
__module__�__qualname__�__doc__�rr�;/usr/local/lib/python3.10/dist-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@)�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>ps�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�_version2fieldlistgsrUc	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�|]}|�vVqdSrGr)rI�marker��keysrrrK}s�z5_best_version.<locals>._has_marker.<locals>.<genexpr>)�any)rX�markersrrWr�_has_marker|�z"_best_version.<locals>._has_markercSs"g|]
\}}|gddfvr|�qS)�UNKNOWNNr)rI�key�valuerrr�
<listcomp>s"z!_best_version.<locals>.<listcomp>)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)�itemsrN�remove�logger�debugrOrHrQrS�lenr�_314_MARKERS�_345_MARKERS�_566_MARKERS�_643_MARKERS�intr)	�fieldsr[rX�possible_versionsr^�is_1_1�is_1_2�is_2_1�is_2_2rrr�
_best_versionysZ





�$rqcCsi|]}|���dd�|�qS)�-�_)�lower�replace)rI�namerrr�
<dictcomp>�srwcCsi|]\}}||�qSrr)rI�attr�fieldrrrrw��)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.rr� �.z%s-%s)�	_FILESAFE�subru)rvrT�for_filenamerrr�_get_name_and_version�sr�c@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�_fields�requires_files�
_dependencies�scheme�read�	read_file�update�set_metadata_version)�self�path�fileobj�mappingr�rrr�__init__�s
�zLegacyMetadata.__init__cCst|j�|jd<dS�Nr")rqr��r�rrrr�sz#LegacyMetadata.set_metadata_versioncCs|�d||f�dS)Nz%s: %s
)�write)r�r�rvr_rrr�_write_fieldr\zLegacyMetadata._write_fieldcCs
|�|�SrG)�get�r�rvrrr�__getitem__s
zLegacyMetadata.__getitem__cCs|�||�SrG)�set)r�rvr_rrr�__setitem__	szLegacyMetadata.__setitem__cCs0|�|�}z|j|=WdStyt|��wrG)�
_convert_namer��KeyError)r�rv�
field_namerrr�__delitem__s
�zLegacyMetadata.__delitem__cCs||jvp|�|�|jvSrG)r�r�r�rrr�__contains__szLegacyMetadata.__contains__cCs(|tvr|S|�dd���}t�||�S)Nrrrs)�_ALL_FIELDSrurt�_ATTR2FIELDr�r�rrrr�szLegacyMetadata._convert_namecCs|tvs|tvr
gSdS)Nr])�_LISTFIELDS�_ELEMENTSFIELDr�rrr�_default_valueszLegacyMetadata._default_valuecCs"|jdvrt�d|�St�d|�S)N�rCr �
)�metadata_version�_LINE_PREFIX_PRE_1_2r~�_LINE_PREFIX_1_2�r�r_rrr�_remove_line_prefix!s
z"LegacyMetadata._remove_line_prefixcCs|tvr||St|��rG)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$)r�)r��filesaferrr�get_fullname0szLegacyMetadata.get_fullnamecC�|�|�}|tvS)z+return True if name is a valid metadata key)r�r�r�rrr�is_field8s
zLegacyMetadata.is_fieldcCr�rG)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��,)rP�split�rIr_rrrr`Vsz,LegacyMetadata.read_file.<locals>.<listcomp>r]r')rr�r�r��get_all�_LISTTUPLEFIELDSr��get_payload)r��fileob�msgry�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`�rzz-LegacyMetadata.write_file.<locals>.<listcomp>N)
r�rUr�r�r�r�r�r�rur�)r��
fileobjectr�ryr�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����|�|�dSdSdSrG)r�r�r�)r^r_r�rr�_set�s�z#LegacyMetadata.update.<locals>._setrXN)�hasattrrXra)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�rc�isEnabledFor�logging�WARNINGr
r��_PREDICATE_FIELDS�is_valid_matcher�warning�_VERSIONS_FIELDS�is_valid_constraint_list�_VERSION_FIELDS�is_valid_version�_UNICODEFIELDSr�r�)r�rvr_�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�rvr�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"rDcs(|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�warningsrxr�r�rk�
controllerryr_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"�project_urlcSr�r�r�)rI�urrrr`#rzz)LegacyMetadata.todict.<locals>.<listcomp>)r�rUr��_FIELD2ATTR)r��skip_missingrk�datar�r^rrr�todicts�zLegacyMetadata.todictcCs8|ddkrdD]	}||vr||=q|d|7<dS)Nr"r )r0r2r1r8r)r��requirementsryrrr�add_requirements's�zLegacyMetadata.add_requirementscCstt|d��Sr�)r�rUr�rrrrX2szLegacyMetadata.keysccs�|��D]}|VqdSrGrW)r�r^rrr�__iter__5s��zLegacyMetadata.__iter__c��fdd����D�S)Ncsg|]}�|�qSrr�rIr^r�rrr`:r�z)LegacyMetadata.values.<locals>.<listcomp>rWr�rr�rr�9r\zLegacyMetadata.valuescr�)Ncsg|]}|�|f�qSrrr�r�rrr`=sz(LegacyMetadata.items.<locals>.<listcomp>rWr�rr�rra<r\zLegacyMetadata.itemscCsd|jj|j|jfS)Nz
<%s %s %s>)�	__class__rrvrTr�rrr�__repr__?r\zLegacyMetadata.__repr__�NNNr��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�rXr�r�rar�rrrrr��s>

	


&

*r�zpydist.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}rLzdistlib (%s)r)�legacy)rvrT�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�rvrTr�dynamic)�_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�r�rrr��_validate_mappingrr��validater�r��METADATA_VERSION�	GENERATORr�r	�decode�json�loadsrRr)r�r�r�r�r�r�rJrrrr�usD�
���

�zMetadata.__init__)rvrT�license�keywordsrr8r=r?r.)r/N)r"N)
�run_requires�build_requires�dev_requires�
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�rrrrr�
extensionsr�python.commandsr�python.details�python.exports)�object�__getattribute__rr�r)
r�r^�common�mapped�lk�maker�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)Nrr r!r"rr#rr$r%r)r4r&r'r�NotImplementedErrorr�
setdefault�__setattr__r�rr�r�)r�r^r_r(r)r*rsr.rrrr7�s<

zMetadata.__setattr__cCst|j|jd�S�NT)r�rvrTr�rrr�name_and_versionszMetadata.name_and_versioncCsF|jr	|jd}n|j�dg�}d|j|jf}||vr!|�|�|S)Nr7�providesz%s (%s))rrr6rvrTr�)r�r,�srrrr:s
zMetadata.providescCs"|jr
||jd<dS||jd<dS)Nr7r:)rrr�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)	rrrr�r
�extendrbr�get_requirements)
r��reqtsrrBr,r.�includerVr^�errrrD&s4	�

�
�zMetadata.get_requirementscCs|jr|��S|jSrG)r�_from_legacyrr�rrr�
dictionaryOszMetadata.dictionarycCs|jrt�t|j|j�SrG)rr5rr�DEPENDENCY_KEYSr�rrr�dependenciesUszMetadata.dependenciescCs|jrt�|j�|�dSrG)rr5rr�r�rrrrK\sc	Cs�|�d�|jkrt��g}|j��D]\}}||vr#||vr#|�|�q|r1dd�|�}t|��|��D]\}}|�|||�q5dS)Nr�zMissing metadata items: %sr�)	r�rr�MANDATORY_KEYSrar�r�rr4)	r�r�r�r�r^r2r�r�r�rrrr
cs
��zMetadata._validate_mappingcCsH|jr|j�d�\}}|s|rt�d||�dSdS|�|j|j�dS)NTz#Metadata: missing: %s, warnings: %s)rr�rcr�r
rr�)r�r�r�rrrrqs�zMetadata.validatecCs$|jr	|j�d�St|j|j�}|Sr8)rr�rr�
INDEX_KEYS)r�r,rrrr�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)NrT)rvrTrr�description�
classifierrOrr(�r))�
requires_distr)�setup_requires_distrr>r:)rrrr
r�r�r:)r�r,�lmdr��nk�kwrX�okrrrrH�s.��
�
zMetadata._from_legacyr#r$r,r&r'r)r*r+r/)
rvrT)r"r$rrrN)r"�python.project�project_urls�Home)r"rW�contactsrrv)r"rWrZr�emailr)r"r$rcCs�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>rPz
extra == "%s"z(%s) and %sr�)r�r��addr�)�entriesrErGr<rB�rlistr�rVrrr�process_entries�s$

�
z,Metadata._to_legacy.<locals>.process_entriesTFr?r8r=)rrr��LEGACY_MAPPINGrar�rPr��
IndexErrorrrrrr�sorted)r�r_r,�nmdrTrVr.�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�Tr�)�ensure_ascii�indent�	sort_keysr�r)
r�rRrrrgr�r�rHrr�dumpr�r�)r�r�r�rr��	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<r>r)rr�rr6�insertr�rb)r�r�r�always�entry�rsetrrrr��s�zMetadata.add_requirementscCs*|jpd}|jp	d}d|jj|j||fS)Nz	(no name)z
no versionz<%s %s %s (%s)>)rvrTr�rr�)r�rvrTrrrr�s

zMetadata.__repr__r�rG)NN)NNFT)0rrrr�re�compile�METADATA_VERSION_MATCHER�I�NAME_MATCHER�FIELDNAME_MATCHERr�VERSION_MATCHER�SUMMARY_MATCHERrrr
rLrMrJr/�	__slots__r�r�rr��	none_list�dict�	none_dictr r'r4r7�propertyr9r:�setterrDrIrKr
rr�rHr`rgr�r�r�rrrrrHs�

��
+�
*	&




)


�
3rr)Ir�
__future__rr�r[rrr�rqrPrr�compatrrr	rZr
�utilrrrTr
r�	getLoggerrrcrrrr�__all__rrrrr�r�rNrOrfrHrg�_426_FIELDS�_426_MARKERSrQrhrirSr�r�r��EXTRA_RErUrqr�rar�r�r�r�r�r�r�r�r&r�r}r�r��METADATA_FILENAME�WHEEL_METADATA_FILENAME�LEGACY_METADATA_FILENAMErrrrr�<module>s|









J


a