Current File : //lib/python3.9/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-39.pyc
a

[��f�@s�dZddlmZddlZddlmZddlZddlZddlZddl	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-e.�Z/e/�0e%�e/�0e&�e/�0e(�e/�0e*�e/�0e,�e�"d!�Z1d"d#�Z2d$d%�Z3d&d'�e/D�Z4d(d'�e4�5�D�Z6d)Z7d*Z8d+Z9d,Z:d-Z;d.Z<d/Z=e>�Z?e�"d0�Z@d;d2d3�ZAGd4d5�d5e>�ZBd6ZCd7ZDd8ZEGd9d:�d:e>�ZFdS)<z�Implementation of the Metadata for Python packages PEPs.

Supports all metadata formats (1.0, 1.1, 1.2, 1.3/2.1 and withdrawn 2.0).
�)�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/lib/python3.9/site-packages/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>z"extra\s*==\s*("([^"]+)"|'([^']+)')cCsZ|dkrtS|dkrtS|dkr$tS|dvrBttdd�tD��S|dkrNtSt|��dS)N�1.0r�1.2)�1.3�2.1css|]}|tvr|VqdS�N)�_345_FIELDS)�.0�frrr�	<genexpr>z�z%_version2fieldlist.<locals>.<genexpr>�2.0)�_241_FIELDS�_314_FIELDSrD�tuple�_566_FIELDS�_426_FIELDSr)�versionrrr�_version2fieldlistqsrPc
Cs:dd�}g}|��D]"\}}|gddfvr,q|�|�qgd�}|D]�}|tvrnd|vrn|�d�t�d|�|tvr�d|vr�|�d�t�d	|�|tvr�d
|vr�|�d
�t�d|�|tvr�d|vr�|�d�t�d
|�|tv�rd|v�r|dk�r|�d�t�d|�|t	vrDd|vrD|�d�t�d|�qDt
|�dk�rR|dSt
|�dk�rtt�d|�td��d|v�o�||t�}d
|v�o�||t
�}d|v�o�||t�}d|v�o�||t�}	t|�t|�t|�t|	�dk�r�td��|�s|�s|�s|	�st|v�rtS|�r"dS|�r,d
S|�r6dSdS)z5Detect the best version depending on the fields used.cSs|D]}||vrdSqdS)NTFr)�keys�markers�markerrrr�_has_marker�sz"_best_version.<locals>._has_marker�UNKNOWNN)r?rr@rArIrBr?zRemoved 1.0 due to %srzRemoved 1.1 due to %sr@zRemoved 1.2 due to %srAzRemoved 1.3 due to %srBr%zRemoved 2.1 due to %srIzRemoved 2.0 due to %srrz)Out of options - unknown metadata set: %szUnknown metadata setz,You used incompatible 1.1/1.2/2.0/2.1 fields)�items�appendrJ�remove�logger�debugrKrDrMrN�lenr�_314_MARKERS�_345_MARKERS�_566_MARKERS�_426_MARKERS�intr)
�fieldsrTrQ�key�valueZpossible_versionsZis_1_1Zis_1_2Zis_2_1Zis_2_0rrr�
_best_version�s`






&
rdcCsi|]}|���dd�|�qS)�-�_)�lower�replace)rE�namerrr�
<dictcomp>�srjcCsi|]\}}||�qSrr)rE�attr�fieldrrrrj�rH)r6r3r5)r7)r")r#r,r.r0r/r3r5r6r8r4r+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.re� �.z%s-%s)�	_FILESAFE�subrh)rirOZfor_filenamerrr�_get_name_and_version�srqc@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�mappingryrrr�__init__�s
zLegacyMetadata.__init__cCst|j�|jd<dS�Nr )rdrx�r~rrrr}
sz#LegacyMetadata.set_metadata_versioncCs|�d||f�dS)Nz%s: %s
)�write)r~r�rircrrr�_write_field
szLegacyMetadata._write_fieldcCs
|�|�SrC)�get�r~rirrr�__getitem__szLegacyMetadata.__getitem__cCs|�||�SrC)�set)r~rircrrr�__setitem__szLegacyMetadata.__setitem__cCs6|�|�}z|j|=Wnty0t|��Yn0dSrC)�
_convert_namerx�KeyError)r~ri�
field_namerrr�__delitem__s

zLegacyMetadata.__delitem__cCs||jvp|�|�|jvSrC)rxr�r�rrr�__contains__s
�zLegacyMetadata.__contains__cCs(|tvr|S|�dd���}t�||�S)Nrerf)�_ALL_FIELDSrhrg�_ATTR2FIELDr�r�rrrr�!szLegacyMetadata._convert_namecCs|tvs|tvrgSdS)NrU)�_LISTFIELDS�_ELEMENTSFIELDr�rrr�_default_value'szLegacyMetadata._default_valuecCs&|jdvrt�d|�St�d|�SdS)N�r?r�
)�metadata_version�_LINE_PREFIX_PRE_1_2rp�_LINE_PREFIX_1_2�r~rcrrr�_remove_line_prefix,s
z"LegacyMetadata._remove_line_prefixcCs|tvr||St|��dSrC)r��AttributeErrorr�rrr�__getattr__2szLegacyMetadata.__getattr__FcCst|d|d|�S)zhReturn the distribution name with version.

        If filesafe is true, return a filename-escaped form.r!r")rq)r~Zfilesaferrr�get_fullname=szLegacyMetadata.get_fullnamecCs|�|�}|tvS)z+return True if name is a valid metadata key)r�r�r�rrr�is_fieldCs
zLegacyMetadata.is_fieldcCs|�|�}|tvSrC)r�r�r�rrr�is_multi_fieldHs
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�fprrrrzLs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��,)rL�split�rErcrrr�
<listcomp>arHz,LegacyMetadata.read_file.<locals>.<listcomp>rUr%)rrxr�r�Zget_all�_LISTTUPLEFIELDSr�Zget_payload)r~Zfileob�msgrl�valuesrc�bodyrrrr{Ts
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�pszLegacyMetadata.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 rUr�r%r�r�rz	
       |cSsg|]}d�|��qSr���joinr�rrrr��rHz-LegacyMetadata.write_file.<locals>.<listcomp>N)
r}rPr�r�r�r�r�r�rhr�)r~Z
fileobjectr�rlr�rcrrrr�xs$

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����|�|�dSrC)r�r�r�)rbrcr�rr�_set�sz#LegacyMetadata.update.<locals>._setrQN)�hasattrrQrV)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)rEr�rrrr��rHz&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�listrLrr�r�rYZisEnabledFor�loggingZWARNINGr
ry�_PREDICATE_FIELDS�is_valid_matcher�warning�_VERSIONS_FIELDS�is_valid_constraint_list�_VERSION_FIELDS�is_valid_version�_UNICODEFIELDSr�rx)r~rircZproject_nameryr�rrrr��sJ
�
�

���


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�rx�_MISSINGr�r�r�r�rWr�r�rr�)r~rirsrc�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 r@cs(|D]}��|�d�d�sdSqdS)Nr�rFT)r�r�)rcr��ryrr�are_valid_constraintssz3LegacyMetadata.check.<locals>.are_valid_constraintsNzWrong value for '%s': %s)r}rWr�rr
ryr�r�r�r�r�r�)r~�strict�missing�warningsrkr�r�raZ
controllerrlrcrr�r�check�s8

���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 Zproject_urlcSsg|]}d�|��qSr�r�)rE�urrrr�5rHz)LegacyMetadata.todict.<locals>.<listcomp>)r}rPrx�_FIELD2ATTR)r~Zskip_missingra�datar�rbrrr�todict"szLegacyMetadata.todictcCs8|ddkr$dD]}||vr||=q|d|7<dS)Nr r)r.r0r/r6r)r~�requirementsrlrrr�add_requirements9s
zLegacyMetadata.add_requirementscCstt|d��Sr�)r�rPr�rrrrQDszLegacyMetadata.keysccs|��D]
}|VqdSrC�rQ)r~rbrrr�__iter__GszLegacyMetadata.__iter__cs�fdd����D�S)Ncsg|]}�|�qSrr�rErbr�rrr�LrHz)LegacyMetadata.values.<locals>.<listcomp>r�r�rr�rr�KszLegacyMetadata.valuescs�fdd����D�S)Ncsg|]}|�|f�qSrrr�r�rrr�OrHz(LegacyMetadata.items.<locals>.<listcomp>r�r�rr�rrVNszLegacyMetadata.itemscCsd|jj|j|jfS)Nz
<%s %s %s>)�	__class__rrirOr�rrr�__repr__Qs�zLegacyMetadata.__repr__)NNNrs)F)F)F)N)F)F)"rrrrr�r}r�r�r�r�r�r�r�r�r�r�r�r�rzr{r�r�r|r�r�r�r�r�r�rQr�r�rVr�rrrrrr�s@�




,
,
rrzpydist.jsonz
metadata.jsonZMETADATAc@s�eZdZdZe�d�Ze�dej�Ze	Z
e�d�ZdZde
Zdddd	�Zd
ZdZedfedfe
dfedfd�Zd
ZdHdd�Zed�ZdefZdefZdefdefeeedefeeeedefddd�
Z[[dd�ZdIdd�Zdd�Zed d!��Z ed"d#��Z!e!j"d$d#��Z!dJd%d&�Z#ed'd(��Z$ed)d*��Z%e%j"d+d*��Z%d,d-�Z&d.d/�Z'd0d1�Z(d2d3�Z)d4d5d6d7d8d9d:d;d<dd=�
Z*d>d?�Z+dKdBdC�Z,dDdE�Z-dFdG�Z.dS)Lrz�
    The metadata of a release. This implementation uses 2.0 (JSON)
    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	.{1,2047}rIzdistlib (%s)r)�legacy)rirO�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�rirOr�)�_legacy�_dataryNrscCs@|||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)Nrtru)r�ry�rb�r��	generatorr)r�ry)rvrwr�r�ry�_validate_mappingrrr�validater�rz�METADATA_VERSION�	GENERATORr�r	�decode�json�loads�
ValueErrorr)r~rr�r�ryr�rFrrrr��s@
(�


�zMetadata.__init__)rirO�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�r�r�r�r�r��
extensionsr��python.commandsr��python.details�python.exports)�object�__getattribute__r�r�r�)
r~rb�common�mapped�lkZmaker�resultrc�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_VALIDATORSry�matchr)r~rbrcry�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)Nr�r�r�r�r�rr�rrr�)rrrr��NotImplementedErrorr��
setdefault�__setattr__r�rr�r�)r~rbrcrrrrfr
rrrr�s<




zMetadata.__setattr__cCst|j|jd�S�NT)rqrirOr�rrr�name_and_version%szMetadata.name_and_versioncCsF|jr|jd}n|j�dg�}d|j|jf}||vrB|�|�|S)Nr5�providesz%s (%s))r�r�rrirOrW)r~r�srrrr)s
zMetadata.providescCs |jr||jd<n
||jd<dS)Nr5r)r�r�r�rrrr4s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)Zbuild�dev�testz:%s:z%s_requires)r��env)	r�rr�r�r
�extendrXr��get_requirements)
r~�reqtsr�rrr
ZincluderSrb�errrr;s2	


�
zMetadata.get_requirementscCs|jr|��S|jSrC)r��_from_legacyr�r�rrr�
dictionaryeszMetadata.dictionarycCs|jrt�nt|j|j�SdSrC)r�rrr��DEPENDENCY_KEYSr�rrr�dependencieskszMetadata.dependenciescCs|jrt�n|j�|�dSrC)r�rr�r|r�rrrr%rsc	Cs�|�d�|jkrt��g}|j��D]"\}}||vr$||vr$|�|�q$|rbdd�|�}t|��|��D]\}}|�|||�qjdS)Nr�zMissing metadata items: %sr�)	r�r�r�MANDATORY_KEYSrVrWr�rr)	r~r�ryr�rbrr�r�r�rrrr�yszMetadata._validate_mappingcCsB|jr.|j�d�\}}|s|r>t�d||�n|�|j|j�dS)NTz#Metadata: missing: %s, warnings: %s)r�r�rYr�r�r�ry)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|jrJ�|j|jd�}|j�d�}dD]*}||vr.|dkrHd}n|}||||<q.|�dg�}|dgkrtg}||d<d	}|D]*\}}||vr�||r�d
||ig||<q�|j|d<i}i}	|S)Nr�T)rirOr�r��description�
classifierr)r�r&�r�))Z
requires_distr�)Zsetup_requires_distr�rr)r�r�r�r�r�r�r)
r~rZlmdr��nk�kwrQ�okZauthorZ
maintainerrrrr"�s.�

zMetadata._from_legacyr!r"r*r$r%r'r(r)r-)
rirO)r�rr�r�r()r��python.projectZproject_urlsZHome)r�r.�contactsrri)r�r.r/r�emailr�)r�rr�cCs�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)Nrrrr*z
extra == "%s"z(%s) and %sr�)r�r��addr�)�entriesr r!rrZrlistr�rSrrr�process_entries�s"

z,Metadata._to_legacy.<locals>.process_entriesTFr=r6r;)r�r�rr�LEGACY_MAPPINGrVr�rLr��
IndexErrorr�r�r�r�r��sorted)r~r3rZnmdr+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�Trt)Zensure_ascii�indentZ	sort_keysr�r)
rvr�r�r�r8r�r�r"r�r��dumpr�r�)r~rr�r�r�Z	legacy_mdr
rFrrrr��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�rrrr)r�r�r�r�insertr�r6)r~r�r��always�entryZrsetrrrr�
szMetadata.add_requirementscCs*|jpd}|jpd}d|jj|j||fS)Nz	(no name)z
no versionz<%s %s %s (%s)>)rirOr�rr�)r~rirOrrrr�s


�zMetadata.__repr__)NNNrs)N)NN)NNFT)/rrrr�re�compileZMETADATA_VERSION_MATCHER�IZNAME_MATCHERrZVERSION_MATCHERZSUMMARY_MATCHERr�rr�r&r'r$r�	__slots__r�r�r�r�Z	none_list�dictZ	none_dictr�rrr�propertyrr�setterrr#r%r�r�r�r"r4r8r�r�r�rrrrr[s�

���
-�+

'




*


	�
2
r)F)GrZ
__future__rr�r0rr�r�r>r*rr�compatrrr	rRr
�utilrrrOr
rZ	getLoggerrrYrrrr�__all__rrr?r�r�rJrKr\rDr]rNr_rMr^r�r�r|ZEXTRA_RErPrdr�rVr�r�r�r�r�r�r�r�rr�rorqrrZMETADATA_FILENAMEZWHEEL_METADATA_FILENAMEZLEGACY_METADATA_FILENAMErrrrr�<module>sx









I�


j