Uname: Linux web3.us.cloudlogin.co 5.10.226-xeon-hst #2 SMP Fri Sep 13 12:28:44 UTC 2024 x86_64
Software: Apache
PHP version: 8.1.31 [ PHP INFO ] PHP os: Linux
Server Ip: 162.210.96.117
Your Ip: 3.140.208.203
User: edustar (269686) | Group: tty (888)
Safe Mode: OFF
Disable Function:
NONE

name : metadata.cpython-36.pyc
3

���e���@sdZddlmZddlZddlmZddlZddlZddlZddl	m
Z
mZddlm
Z
mZmZddlmZdd	lmZmZdd
lmZmZeje�ZGdd�de
�ZGd
d�de
�ZGdd�de
�ZGdd�de
�ZdddgZdZ dZ!ej"d�Z#ej"d�Z$dGZ%dHZ&dIZ'dJZ(dKZ)dLZ*dMZ+e,�Z-e-j.e%�e-j.e&�e-j.e(�e-j.e*�ej"d8�Z/d9d:�Z0d;d<�Z1ddddd%ddd d!d"d#d+d,d$d&d'd-d/d0d5d1d2d*d)d(d.d3d4d6d7d=�Z2dNZ3dOZ4dPZ5dQZ6dRZ7dSZ8dTZ9e:�Z;ej"d>�Z<dUd@dA�Z=GdBdC�dCe:�Z>dDZ?dEZ@GdFd�de:�ZAdS)VzImplementation of the Metadata for Python packages PEPs.

Supports all metadata formats (1.0, 1.1, 1.2, and 2.0 experimental).
�)�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.6/metadata.pyrsrc@seZdZdZdS)�MetadataConflictErrorz>Attempt to read or write metadata fields that are conflictual.N)rrrrrrrrr src@seZdZdZdS)� MetadataUnrecognizedVersionErrorz Unknown metadata version number.N)rrrrrrrrr$src@seZdZdZdS)�MetadataInvalidErrorzA metadata value is invalidN)rrrrrrrrr(sr�Metadata�PKG_INFO_ENCODING�PKG_INFO_PREFERRED_VERSIONzutf-8z1.1z

       \|z	
        �Metadata-Version�Name�Version�Platform�Summary�Description�Keywords�	Home-page�Author�Author-email�License�Supported-Platform�
Classifier�Download-URL�	Obsoletes�Provides�Requires�
Maintainer�Maintainer-email�Obsoletes-Dist�Project-URL�
Provides-Dist�
Requires-Dist�Requires-Python�Requires-External�Private-Version�Obsoleted-By�Setup-Requires-Dist�	Extension�Provides-Extraz"extra\s*==\s*("([^"]+)"|'([^']+)')cCs<|dkrtS|dkrtS|dkr$tS|dkr0tSt|��dS)Nz1.0z1.1z1.2z2.0)�_241_FIELDS�_314_FIELDS�_345_FIELDS�_426_FIELDSr)�versionrrr�_version2fieldlistgsr?c	Cs�dd�}g}x.|j�D]"\}}|gddfkr.q|j|�qWddddg}xt|D]l}|tkrld|krl|jd�|tkr�d|kr�|jd�|tkr�d|kr�|jd�|tkrNd|krN|jd�qNWt|�d	kr�|d
St|�d
kr�td��d|ko�||t	�}d|k�o
||t
�}d|k�o||t�}t|�t|�t|�d	k�rFtd��|�rl|�rl|�rlt
|k�rlt
S|�rvdS|�r�dSdS)
z5Detect the best version depending on the fields used.cSsx|D]}||krdSqWdS)NTFr)�keys�markers�markerrrr�_has_markerus
z"_best_version.<locals>._has_marker�UNKNOWNNz1.0z1.1z1.2z2.0rrzUnknown metadata setz(You used incompatible 1.1/1.2/2.0 fields)�items�appendr:�remover;r<r=�lenr�_314_MARKERS�_345_MARKERS�_426_MARKERS�intr)	�fieldsrCr@�key�valueZpossible_versionsZis_1_1Zis_1_2Zis_2_0rrr�
_best_versionssB




rP)�metadata_version�namer>�platformZsupported_platform�summary�description�keywords�	home_page�author�author_email�
maintainer�maintainer_email�license�
classifier�download_url�obsoletes_dist�
provides_dist�
requires_dist�setup_requires_dist�requires_python�requires_external�requires�provides�	obsoletes�project_urlZprivate_versionZobsoleted_by�	extensionZprovides_extraz[^A-Za-z0-9.]+FcCs0|r$tjd|�}tjd|jdd��}d||fS)zhReturn the distribution name with version.

    If for_filename is true, return a filename-escaped form.�-� �.z%s-%s)�	_FILESAFE�sub�replace)rRr>Zfor_filenamerrr�_get_name_and_version�srpc@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�LegacyMetadataaaThe legacy metadata of a release.

    Supports versions 1.0, 1.1 and 1.2 (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|||gjd�dkrtd��i|_g|_d|_||_|dk	rH|j|�n.|dk	r\|j|�n|dk	rv|j|�|j	�dS)N�z'path, fileobj and mapping are exclusive)
�count�	TypeError�_fieldsZrequires_filesZ
_dependencies�scheme�read�	read_file�update�set_metadata_version)�self�path�fileobj�mappingrwrrr�__init__�s
zLegacyMetadata.__init__cCst|j�|jd<dS)NzMetadata-Version)rPrv)r|rrrr{sz#LegacyMetadata.set_metadata_versioncCs|jd||f�dS)Nz%s: %s
)�write)r|r~rRrOrrr�_write_fieldszLegacyMetadata._write_fieldcCs
|j|�S)N)�get)r|rRrrr�__getitem__szLegacyMetadata.__getitem__cCs|j||�S)N)�set)r|rRrOrrr�__setitem__szLegacyMetadata.__setitem__cCs8|j|�}y|j|=Wntk
r2t|��YnXdS)N)�
_convert_namerv�KeyError)r|rR�
field_namerrr�__delitem__s

zLegacyMetadata.__delitem__cCs||jkp|j|�|jkS)N)rvr�)r|rRrrr�__contains__s
zLegacyMetadata.__contains__cCs(|tkr|S|jdd�j�}tj||�S)Nrj�_)�_ALL_FIELDSro�lower�_ATTR2FIELDr�)r|rRrrrr�szLegacyMetadata._convert_namecCs|tks|tkrgSdS)NrD)�_LISTFIELDS�_ELEMENTSFIELD)r|rRrrr�_default_value%szLegacyMetadata._default_valuecCs&|jdkrtjd|�Stjd|�SdS)N�1.0�1.1�
)r�r�)rQ�_LINE_PREFIX_PRE_1_2rn�_LINE_PREFIX_1_2)r|rOrrr�_remove_line_prefix*s
z"LegacyMetadata._remove_line_prefixcCs|tkr||St|��dS)N)r��AttributeError)r|rRrrr�__getattr__0szLegacyMetadata.__getattr__FcCst|d|d|�S)zhReturn the distribution name with version.

        If filesafe is true, return a filename-escaped form.rr)rp)r|Zfilesaferrr�get_fullname;szLegacyMetadata.get_fullnamecCs|j|�}|tkS)z+return True if name is a valid metadata key)r�r�)r|rRrrr�is_fieldAs
zLegacyMetadata.is_fieldcCs|j|�}|tkS)N)r�r�)r|rRrrr�is_multi_fieldFs
zLegacyMetadata.is_multi_fieldc
Cs.tj|ddd�}z|j|�Wd|j�XdS)z*Read the metadata values from a file path.�rzutf-8)�encodingN)�codecs�openry�close)r|�filepath�fprrrrxJszLegacyMetadata.readcCs�t|�}|d|jd<xxtD]p}||kr*q|tkrh|j|�}|tkrZ|dk	rZdd�|D�}|j||�q||}|dk	r|dkr|j||�qW|j�dS)z,Read the metadata values from a file object.zmetadata-versionzMetadata-VersionNcSsg|]}t|jd���qS)�,)�tuple�split)�.0rOrrr�
<listcomp>_sz,LegacyMetadata.read_file.<locals>.<listcomp>rD)rrvr�r�Zget_all�_LISTTUPLEFIELDSr�r{)r|Zfileob�msg�field�valuesrOrrrryRs

zLegacyMetadata.read_filec
Cs0tj|ddd�}z|j||�Wd|j�XdS)z&Write the metadata fields to filepath.�wzutf-8)r�N)r�r��
write_filer�)r|r��skip_unknownr�rrrr�hszLegacyMetadata.writecCs�|j�x�t|d�D]�}|j|�}|r:|dgdgfkr:q|tkrX|j||dj|��q|tkr�|dkr�|jd
kr�|jdd�}n|jdd	�}|g}|t	kr�d
d�|D�}x|D]}|j|||�q�WqWdS)z0Write the PKG-INFO format data to a file object.zMetadata-VersionrDr�r!�1.0�1.1r�z	
        z	
       |cSsg|]}dj|��qS)r�)�join)r�rOrrrr��sz-LegacyMetadata.write_file.<locals>.<listcomp>N)r�r�)
r{r?r�r�r�r�r�rQror�)r|Z
fileobjectr�r�r�rOrrrr�ps$


zLegacyMetadata.write_filecs��fdd�}|snHt|d�r>x<|j�D]}||||�q&Wnx|D]\}}|||�qDW|r~x|j�D]\}}|||�qhWdS)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�j�j|�|�dS)N)r�r�r�)rNrO)r|rr�_set�sz#LegacyMetadata.update.<locals>._setr@N)�hasattrr@rE)r|�other�kwargsr��k�vr)r|rrz�s

zLegacyMetadata.updatecCsn|j|�}|tks|dkrPt|ttf�rPt|t�rJdd�|jd�D�}q~g}n.|tkr~t|ttf�r~t|t�rz|g}ng}tj	t
j��rB|d}t|j
�}|tkr�|dk	r�x�|D](}|j|jd�d�s�tjd	|||�q�Wn`|tko�|dk	�r|j|��sBtjd
|||�n0|tk�rB|dk	�rB|j|��sBtjd
|||�|tk�r`|dk�r`|j|�}||j|<dS)z"Control then set a metadata field.rcSsg|]}|j��qSr)�strip)r�r�rrrr��sz&LegacyMetadata.set.<locals>.<listcomp>r�rN�;rz$'%s': '%s' is not valid (field '%s')z.'%s': '%s' is not a valid version (field '%s')r!)r�r��
isinstance�listr�rr�r��loggerZisEnabledFor�loggingZWARNINGr
rw�_PREDICATE_FIELDS�is_valid_matcher�warning�_VERSIONS_FIELDS�is_valid_constraint_list�_VERSION_FIELDS�is_valid_version�_UNICODEFIELDSr�rv)r|rRrOZproject_namerwr�rrrr��s@








zLegacyMetadata.setcCs�|j|�}||jkr*|tkr&|j|�}|S|tkr@|j|}|S|tkr�|j|}|dkr^gSg}x6|D].}|tkr�|j|�qh|j|d|df�qhW|S|tkr�|j|}t	|t
�r�|jd�S|j|S)zGet a metadata field.Nrrr�)r�rv�_MISSINGr�r�r�r�rFr�r�rr�)r|rRrrrO�res�valrrrr��s.








zLegacyMetadata.getcs|j�gg}}xd
D]}||kr|j|�qW|rT|gkrTddj|�}t|��xdD]}||krZ|j|�qZW|ddkr�||fSt|j���fd	d
�}xdt|ft�jft	�j
ffD]F\}}x<|D]4}	|j|	d�}
|
dk	o�||
�r�|jd|	|
f�q�Wq�W||fS)zkCheck if the metadata is compliant. If strict is True then raise if
        no Name or Version are providedrrzmissing required metadata: %sz, �	Home-pager$zMetadata-Versionz1.2cs*x$|D]}�j|jd�d�sdSqWdS)Nr�rFT)r�r�)rOr�)rwrr�are_valid_constraintss
z3LegacyMetadata.check.<locals>.are_valid_constraintsNzWrong value for '%s': %s)rr)r�r$)r{rFr�rr
rwr�r�r�r�r�r�)r|�strict�missing�warnings�attrr�r�rMZ
controllerr�rOr)rwr�check�s2




zLegacyMetadata.checkcCs�|j�dB}i}x,|D]$\}}|s.||jkr||||<qW|ddk�r�dK}x�|D]F\}}|sn||jkrV|d&k�r�||||<qVd,d-�||D�||<qVWnF|dd.k�r�dO}x2|D]*\}}|�s�||jk�r�||||<�q�W|S)Pz�Return 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).
        rQ�Metadata-VersionrRrr>rrTr rW�	Home-pagerXr$rY�Author-emailr\r&rUr!rVr"rSr�classifiersr(r^�Download-URLz1.2ra�
Requires-Distrc�Requires-Pythonrd�Requires-Externalr`�
Provides-Distr_�Obsoletes-Distrh�Project-URLrZr-r[�Maintainer-emailcSsg|]}dj|��qS)r�)r�)r��urrrr�Gsz)LegacyMetadata.todict.<locals>.<listcomp>z1.1rfr+rer,rgr*�rQr��rRr�r>r�rTr �rWr��rXr$�rYr��r\r&�rUr!�rVr"�rSr�r�r(�r^r�)
r�r�r�r�r�r�r�r�r�r�r�r�r��rar��rcr��rdr��r`r��r_r��rhr��rZr-�r[r�)r�r�r�r�r�r�r�r��rfr+�rer,�rgr*)r�r�r�)r{rv)r|Zskip_missingZmapping_1_0�datarNr�Zmapping_1_2Zmapping_1_1rrr�todictsP
zLegacyMetadata.todictcCs<|ddkr(xdD]}||kr||=qW|d|7<dS)NzMetadata-Versionz1.1r*r,r+z
Requires-Dist)r*r,r+r)r|�requirementsr�rrr�add_requirementsUs


zLegacyMetadata.add_requirementscCstt|d��S)NzMetadata-Version)r�r?)r|rrrr@`szLegacyMetadata.keysccsx|j�D]
}|Vq
WdS)N)r@)r|rNrrr�__iter__cszLegacyMetadata.__iter__cs�fdd��j�D�S)Ncsg|]}�|�qSrr)r�rN)r|rrr�hsz)LegacyMetadata.values.<locals>.<listcomp>)r@)r|r)r|rr�gszLegacyMetadata.valuescs�fdd��j�D�S)Ncsg|]}|�|f�qSrr)r�rN)r|rrr�ksz(LegacyMetadata.items.<locals>.<listcomp>)r@)r|r)r|rrEjszLegacyMetadata.itemscCsd|jj|j|jfS)Nz
<%s %s %s>)�	__class__rrRr>)r|rrr�__repr__mszLegacyMetadata.__repr__)NNNrr)F)F)F)N)F)F)"rrrrr�r{r�r�r�r�r�r�r�r�r�r�r�r�rxryr�r�rzr�r�r�r�r�r�r@r�r�rEr�rrrrrq�s>	




,
,
;rqzpydist.jsonz
metadata.jsonc@s�eZdZdZejd�Zejdej�Ze	Z
ejd�ZdZde
ZffdId�Zd	Zd
ZeffedJfe
dKfedLfd�ZdMZdNdd�ZedO�ZdefZdefZdefdefeeedefeeeedefdPdQd�
Z[[dd �ZdRd!d"�Zd#d$�Zed%d&��Z ed'd(��Z!e!j"d)d(��Z!dSd*d+�Z#ed,d-��Z$ed.d/��Z%e%j"d0d/��Z%d1d2�Z&d3d4�Z'd5d6�Z(d7d8�Z)d9d:d;d<d=dd>�Z*d?d@�Z+dTdCdD�Z,dEdF�Z-dGdH�Z.dS)Urz�
    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}z2.0zdistlib (%s)�legacy)rRr>rTzqname 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)rQrRr>rT�_legacy�_datarwNrrcCs0|||gjd�dkrtd��d|_d|_||_|dk	rzy|j||�||_Wn*tk
rvt||d�|_|j�YnXn�d}|r�t	|d��}|j
�}WdQRXn|r�|j
�}|dkr�|j|jd�|_ndt
|t�s�|jd�}ytj|�|_|j|j|�Wn0tk
�r*tt|�|d�|_|j�YnXdS)Nrsz'path, fileobj and mapping are exclusive)rrw�rb)rQ�	generatorzutf-8)r~rw)rtrur�rrw�_validate_mappingrrq�validater�rx�METADATA_VERSION�	GENERATORr�r	�decode�json�loads�
ValueErrorr)r|r}r~rrwr��frrrr��s<



zMetadata.__init__rRr>r\rVrTz
Requires-DistzSetup-Requires-DistzProvides-Extrar(�Download-URL�Metadata-Version)
�run_requires�build_requires�dev_requiresZ
test_requires�
meta_requires�extras�modules�
namespaces�exports�commandsr�Z
source_urlrQc
CsZtj|d�}tj|d�}||k�r||\}}|jr^|dkrP|dkrHdn|�}n|jj|�}n�|dkrjdn|�}|dkr�|jj||�}n�t�}|}|jjd�}	|	�r|dkr�|	jd	|�}nR|dkr�|	jd
�}	|	r�|	j||�}n.|	jd�}	|	�s�|jjd�}	|	�r|	j||�}||k�rV|}n:||k�r4tj||�}n"|j�rJ|jj|�}n|jj|�}|S)
N�common_keys�mapped_keysrrrrr��
extensionszpython.commandszpython.detailszpython.exports)rrrrr�)�object�__getattribute__r�r�r)
r|rN�common�mapped�lkZmaker�resultrO�sentinel�drrrr�sF




zMetadata.__getattribute__cCsH||jkrD|j|\}}|p |j|krD|j|�}|sDtd||f��dS)Nz.'%s' is an invalid value for the '%s' property)�SYNTAX_VALIDATORSrw�matchr)r|rNrOrw�pattern�
exclusions�mrrr�_validate_values

zMetadata._validate_valuecCs*|j||�tj|d�}tj|d�}||kr�||\}}|jrV|dkrJt�||j|<nf|d
krj||j|<nR|jjdi�}|dkr�||d	<n2|dkr�|jd
i�}|||<n|jdi�}|||<nh||kr�tj|||�nP|dk�rt|t	��r|j
�}|�r|j�}ng}|j�r||j|<n
||j|<dS)Nrrrrrrr�rzpython.commandszpython.detailszpython.exportsrV)rrrrr�)r'rrr��NotImplementedErrorr�
setdefault�__setattr__r�rr�r�)r|rNrOrrrr�r!rrrr*s>




zMetadata.__setattr__cCst|j|jd�S)NT)rprRr>)r|rrr�name_and_version@szMetadata.name_and_versioncCsF|jr|jd}n|jjdg�}d|j|jf}||krB|j|�|S)Nz
Provides-Distrfz%s (%s))r�rr)rRr>rF)r|r�srrrrfDs
zMetadata.providescCs |jr||jd<n
||jd<dS)Nz
Provides-Distrf)r�r)r|rOrrrrfOsc
Cs�|jr|}n�g}t|pg|j�}xl|D]d}d|kr@d|kr@d}n8d|krNd}n|jd�|k}|rx|jd�}|rxt||�}|r&|j|d�q&WxNdD]F}d|}	|	|kr�|j|	�|jjd	|g�}|j|j|||d
��q�W|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�environmentTre�build�dev�testz:%s:z%s_requires)r�env)r/r0r1)	r�rrr�r
�extendrGr�get_requirements)
r|�reqtsrr2rr!�includerBrN�errrr4Vs0	




zMetadata.get_requirementscCs|jr|j�S|jS)N)r��_from_legacyr)r|rrr�
dictionary�szMetadata.dictionarycCs|jrt�nt|j|j�SdS)N)r�r(rr�DEPENDENCY_KEYS)r|rrr�dependencies�szMetadata.dependenciescCs|jrt�n|jj|�dS)N)r�r(rrz)r|rOrrrr;�sc	Cs�|jd�|jkrt��g}x0|jj�D]"\}}||kr&||kr&|j|�q&W|rfddj|�}t|��x"|j�D]\}}|j|||�qpWdS)NrQzMissing metadata items: %sz, )	r�rr�MANDATORY_KEYSrErFr�rr')	r|rrwr�rNr%r�r�r�rrrr�szMetadata._validate_mappingcCsB|jr.|jjd�\}}|s|r>tjd||�n|j|j|j�dS)NTz#Metadata: missing: %s, warnings: %s)r�r�r�r�rrrw)r|r�r�rrrr�s
zMetadata.validatecCs(|jr|jjd�St|j|j�}|SdS)NT)r�r�rr�
INDEX_KEYS)r|rrrrr��szMetadata.todictc
Cs�|jr|jst�|j|jd�}|jjd�}x2dD]*}||kr2|dkrLd	}n|}||||<q2W|jd
g�}|dgkrzg}||d<d}x2|D]*\}}||kr�||r�d||ig||<q�W|j|d<i}i}	|S)N)rQrTrRr>r\rTrUr]r�r"�rVrarrbrrerf)rRr>r\rTrUr]�rar�rbr)r?r@)r�r�AssertionErrorrrr�r�rf)
r|rZlmdr��nk�kwr@�okrXrZrrrr8�s0


zMetadata._from_legacyrrr&r r!)rRr>r\rTrUr�cCs�dd�}|jr|jst�t�}|j}x*|jj�D]\}}||kr2||||<q2W||j|j�}||j|j	�}|j
r�t|j
�|d<t|�|d<t|�|d<|S)NcSs�t�}x�|D]�}|jd�}|jd�}|d}xb|D]Z}|rN|rN|j|�q2d}|r^d|}|rx|rtd||f}n|}|jdj||f��q2WqW|S)Nr-r.rer>z
extra == "%s"z(%s) and %sr�)r�r��addr�)Zentriesr5r7r-r2Zrlistr�rBrrr�process_entries�s"



z,Metadata._to_legacy.<locals>.process_entrieszProvides-Extraz
Requires-DistzSetup-Requires-Dist)rr�rArq�LEGACY_MAPPINGrErrrrr�sorted)r|rFrZnmdrBrDZr1Zr2rrr�
_to_legacy�szMetadata._to_legacyFTcCs�||gjd�dkrtd��|j�|r`|jr4|j}n|j�}|rP|j||d�q�|j||d�n^|jrp|j�}n|j}|r�t	j
||dddd�n.tj|dd��}t	j
||dddd�WdQRXdS)	Nrz)Exactly one of path and fileobj is needed)r�Trs)Zensure_ascii�indentZ	sort_keysr�zutf-8)
rtr
rr�rIr�r�r8rr�dumpr�r�)r|r}r~r�r�Z	legacy_mdr!rrrrr��s&

zMetadata.writecCs�|jr|jj|�nt|jjdg�}d}x"|D]}d|kr,d|kr,|}Pq,W|dkrhd|i}|jd|�n t|d�t|�B}t|�|d<dS)Nrr.r-rer)r�r�rr)�insertr�rH)r|r�r�always�entryZrsetrrrr�s
zMetadata.add_requirementscCs*|jpd}|jpd}d|jj|j||fS)Nz	(no name)z
no versionz<%s %s %s (%s)>)rRr>r�rrQ)r|rRr>rrrr�(s

zMetadata.__repr__)r�)r�)r�)r�)r�rrw)NNNrr)rRr>r\rVrT)rN)r
N)N)NN)NNFT)/rrrr�re�compileZMETADATA_VERSION_MATCHER�IZNAME_MATCHERrZVERSION_MATCHERZSUMMARY_MATCHERrrrr<r=r:r"�	__slots__r�r�rr�Z	none_list�dictZ	none_dictrrr'r*�propertyr+rf�setterr4r9r;rrr�r8rGrIr�r�r�rrrrrvsx


,+

'
*	%
)rrrrr r!r"r#r$r%r&)rrrrr'r r!r"r#r$r%r&r(r)r*r+r,)r*r+r,r(r))rrrrr'r r!r"r#r$r%r-r.r&r(r)r/r0r1r2r3r4)r1r2r3r/r4r-r.r0)rrrrr'r r!r"r#r$r%r-r.r&r(r)r/r0r1r2r3r4r5r6r7r8r9)r5r9r6r7r8)r2r/r1)r3)r)rr(r*r,r+r/r1r2r4r0r'r7r9r8)r0)r")r$r-r r!)F)BrZ
__future__rr�Zemailrrr�rOr>rr�compatrrr	rAr
�utilrrr>r
rZ	getLoggerrr�rrrr�__all__rrrPr�r�r:r;rIr<rJr=rKr�r�rzZEXTRA_REr?rPr�r�r�r�r�r�r�r�rr�rmrprqZMETADATA_FILENAMEZWHEEL_METADATA_FILENAMErrrrr�<module>	s�








9


	
© 2025 GrazzMean