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.7/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-37.pyc
B

L��g
��@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-hv55ucu3/pip/_vendor/distlib/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	
        )zMetadata-Version�Name�Version�Platform�Summary�Description�Keywordsz	Home-page�AuthorzAuthor-email�License)zMetadata-VersionrrrzSupported-Platformrr r!z	Home-pager"zAuthor-emailr#�
ClassifierzDownload-URL�	Obsoletes�Provides�Requires)r%r&r'r$zDownload-URL)zMetadata-VersionrrrzSupported-Platformrr r!z	Home-pager"zAuthor-email�
MaintainerzMaintainer-emailr#r$zDownload-URLzObsoletes-DistzProject-URLz
Provides-Distz
Requires-DistzRequires-PythonzRequires-External)z
Provides-Distz
Requires-DistzRequires-PythonzObsoletes-DistzRequires-Externalr(zMaintainer-emailzProject-URL)zMetadata-VersionrrrzSupported-Platformrr r!z	Home-pager"zAuthor-emailr(zMaintainer-emailr#r$zDownload-URLzObsoletes-DistzProject-URLz
Provides-Distz
Requires-DistzRequires-PythonzRequires-ExternalzPrivate-VersionzObsoleted-ByzSetup-Requires-Dist�	ExtensionzProvides-Extra)zPrivate-VersionzProvides-ExtrazObsoleted-ByzSetup-Requires-Distr))zDescription-Content-Typer'r&r%)zDescription-Content-Type)ZDynamiczLicense-Filez"extra\s*==\s*("([^"]+)"|'([^']+)')cCsl|dkrtS|dkrtS|dkr$tS|dkrBttdd�tD��S|dkrTtd��n|d	kr`tSt|��dS)
Nz1.0z1.1z1.2)z1.3z2.1css|]}|tkr|VqdS)N)�_345_FIELDS)�.0�frrr�	<genexpr>sz%_version2fieldlist.<locals>.<genexpr>z2.0z+Metadata 2.0 is withdrawn and not supportedz2.2)�_241_FIELDS�_314_FIELDSr*�tuple�_566_FIELDS�
ValueError�_643_FIELDSr)�versionrrr�_version2fieldlistvs
r5c	Cs"dd�}dd�|��D�}ddddd	d
g}x�|D]�}|tkrZd|krZ|�d�t�d|�|tkr�d|kr�|�d�t�d|�|tkr�d|kr�|�d�t�d
|�|tkr�d|kr�|�d�t�d|�|tkr�d	|kr�|dkr�|�d	�t�d|�|tkr0d
|kr0|�d
�t�d|�q0Wt	|�dk�r:|dSt	|�dk�r\t�d|�t
d��d|k�on||t�}d|k�o�||t�}d	|k�o�||t
�}d
|k�o�||t�}t|�t|�t|�t|�dk�r�t
d��|�s|�s|�s|�st|k�rtS|�r
dS|�rdS|�rd	Sd
S)z5Detect the best version depending on the fields used.cst�fdd�|D��S)Nc3s|]}|�kVqdS)Nr)r+�marker)�keysrrr-�sz5_best_version.<locals>._has_marker.<locals>.<genexpr>)�any)r7�markersr)r7r�_has_marker�sz"_best_version.<locals>._has_markercSs"g|]\}}|gddfkr|�qS)�UNKNOWNNr)r+�key�valuerrr�
<listcomp>�sz!_best_version.<locals>.<listcomp>z1.0z1.1z1.2z1.3z2.1z2.2zRemoved 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)�itemsr.�remove�logger�debugr/r*r1r3�lenr�_314_MARKERS�_345_MARKERS�_566_MARKERS�_643_MARKERS�intr)	�fieldsr:r7Zpossible_versionsr<Zis_1_1Zis_1_2Zis_2_1Zis_2_2rrr�
_best_version�sX






&
rJcCsi|]}||���dd��qS)�-�_)�lower�replace)r+�namerrr�
<dictcomp>�srPcCsi|]\}}||�qSrr)r+�attr�fieldrrrrP�s)z
Requires-DistzObsoletes-Distz
Provides-Dist)zRequires-Python)r)rr$r%r'r&zObsoletes-Distz
Provides-Distz
Requires-DistzRequires-ExternalzProject-URLzSupported-PlatformzSetup-Requires-DistzProvides-Extrar)zLicense-File)zProject-URL)r!)r"r(rr 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.rK� �.z%s-%s)�	_FILESAFE�subrN)rOr4Zfor_filenamerrr�_get_name_and_version�srWc@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�z'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)NzMetadata-Version)rJr])rcrrrrbsz#LegacyMetadata.set_metadata_versioncCs|�d||f�dS)Nz%s: %s
)�write)rcrerOr=rrr�_write_fieldszLegacyMetadata._write_fieldcCs
|�|�S)N)�get)rcrOrrr�__getitem__szLegacyMetadata.__getitem__cCs|�||�S)N)�set)rcrOr=rrr�__setitem__szLegacyMetadata.__setitem__cCs8|�|�}y|j|=Wntk
r2t|��YnXdS)N)�
_convert_namer]�KeyError)rcrO�
field_namerrr�__delitem__s

zLegacyMetadata.__delitem__cCs||jkp|�|�|jkS)N)r]rn)rcrOrrr�__contains__$s
zLegacyMetadata.__contains__cCs(|tkr|S|�dd���}t�||�S)NrKrL)�_ALL_FIELDSrNrM�_ATTR2FIELDrj)rcrOrrrrn(szLegacyMetadata._convert_namecCs|tks|tkrgSdS)Nr;)�_LISTFIELDS�_ELEMENTSFIELD)rcrOrrr�_default_value.szLegacyMetadata._default_valuecCs&|jdkrt�d|�St�d|�SdS)N)z1.0z1.1�
)�metadata_version�_LINE_PREFIX_PRE_1_2rV�_LINE_PREFIX_1_2)rcr=rrr�_remove_line_prefix3s
z"LegacyMetadata._remove_line_prefixcCs|tkr||St|��dS)N)rt�AttributeError)rcrOrrr�__getattr__9szLegacyMetadata.__getattr__FcCst|d|d|�S)zhReturn the distribution name with version.

        If filesafe is true, return a filename-escaped form.rr)rW)rcZfilesaferrr�get_fullnameDszLegacyMetadata.get_fullnamecCs|�|�}|tkS)z+return True if name is a valid metadata key)rnrs)rcrOrrr�is_fieldJs
zLegacyMetadata.is_fieldcCs|�|�}|tkS)N)rnru)rcrOrrr�is_multi_fieldOs
zLegacyMetadata.is_multi_fieldcCs.tj|ddd�}z|�|�Wd|��XdS)z*Read the metadata values from a file path.�rzutf-8)�encodingN)�codecs�openr`�close)rc�filepath�fprrrr_SszLegacyMetadata.readcCs�t|�}|d|jd<xxtD]p}||kr*q|tkrh|�|�}|tkrZ|dk	rZdd�|D�}|�||�q||}|dk	r|dkr|�||�qW|��}|r�|n|d|d<dS)z,Read the metadata values from a file object.zmetadata-versionzMetadata-VersionNcSsg|]}t|�d���qS)�,)r0�split)r+r=rrrr>hsz,LegacyMetadata.read_file.<locals>.<listcomp>r;r )rr]rsru�get_all�_LISTTUPLEFIELDSrl�get_payload)rcZfileob�msgrR�valuesr=�bodyrrrr`[s

zLegacyMetadata.read_filecCs0tj|ddd�}z|�||�Wd|��XdS)z&Write the metadata fields to filepath.�wzutf-8)r�N)r�r��
write_filer�)rcr��skip_unknownr�rrrrhwszLegacyMetadata.writecCs�|��x�t|d�D]�}|�|�}|r:|dgdgfkr:q|tkrX|�||d�|��q|tkr�|dkr�|jdkr�|�dd�}n|�dd�}|g}|t	kr�d	d
�|D�}x|D]}|�|||�q�WqWdS)z0Write the PKG-INFO format data to a file object.zMetadata-Versionr;r�r )z1.0z1.1rxz	
        z	
       |cSsg|]}d�|��qS)r�)�join)r+r=rrrr>�sz-LegacyMetadata.write_file.<locals>.<listcomp>N)
rbr5rjrvrir�ruryrNr�)rc�
fileobjectr�rRr�r=rrrr�s$


zLegacyMetadata.write_filecs��fdd�}|snHt|d�r>x<|��D]}||||�q&Wnx|D]\}}|||�qDW|r~x|��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����|�|�dS)N)rtrlrn)r<r=)rcrr�_set�sz#LegacyMetadata.update.<locals>._setr7N)�hasattrr7r?)rc�other�kwargsr��k�vr)rcrra�s

zLegacyMetadata.updatecCsl|�|�}|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�x�|D](}|�|�d�d�s�t�d	|||�q�Wnb|tk�r|dk	�r|�|��s@t�d
|||�n0|tk�r@|dk	�r@|�|��s@t�d
|||�|tk�r^|dk�r^|�|�}||j|<dS)z"Control then set a metadata field.rcSsg|]}|���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 )rnrv�
isinstance�listr0rr�rurA�isEnabledFor�logging�WARNINGr
r^�_PREDICATE_FIELDS�is_valid_matcher�warning�_VERSIONS_FIELDS�is_valid_constraint_list�_VERSION_FIELDS�is_valid_version�_UNICODEFIELDSr|r])rcrOr=�project_namer^r�rrrrl�s@








zLegacyMetadata.setcCs�|�|�}||jkr*|tkr&|�|�}|S|tkr@|j|}|S|tkr�|j|}|dkr^gSg}x6|D].}|tkr�|�|�qh|�|d|df�qhW|S|tkr�|j|}t	|t
�r�|�d�S|j|S)zGet a metadata field.Nrrr�)rnr]�_MISSINGrwr�rur��appendrvr�rr�)rcrOrYr=�res�valrrrrj�s.








zLegacyMetadata.getcs
|��gg}}xdD]}||kr|�|�qW|rT|gkrTdd�|�}t|��xdD]}||krZ|�|�qZW|ddkr�||fSt|j���fdd�}xbt|ft�jft	�j
ffD]D\}}x:|D]2}	|�|	d	�}
|
d	k	r�||
�s�|�d
|	|
f�q�Wq�W||fS)zkCheck if the metadata is compliant. If strict is True then raise if
        no Name or Version are provided)rrzmissing required metadata: %sz, )z	Home-pager"zMetadata-Versionz1.2cs*x$|D]}��|�d�d�sdSqWdS)Nr�rFT)r�r�)r=r�)r^rr�are_valid_constraintss
z3LegacyMetadata.check.<locals>.are_valid_constraintsNzWrong value for '%s': %s)rbr�r�rr
r^r�r�r�r�r�rj)rc�strict�missing�warningsrQr�r�rI�
controllerrRr=r)r^r�check�s2




zLegacyMetadata.checkcCsl|��t|d�}i}xN|D]F}|r0||jkrt|}|dkrN||||<qdd�||D�||<qW|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.
        zMetadata-Version�project_urlcSsg|]}d�|��qS)r�)r�)r+�urrrr><sz)LegacyMetadata.todict.<locals>.<listcomp>)rbr5r]�_FIELD2ATTR)rcZskip_missingrI�datarpr<rrr�todict)s
zLegacyMetadata.todictcCs<|ddkr(xdD]}||kr||=qW|d|7<dS)NzMetadata-Versionz1.1)r%r'r&z
Requires-Distr)rc�requirementsrRrrr�add_requirements@s


zLegacyMetadata.add_requirementscCstt|d��S)NzMetadata-Version)r�r5)rcrrrr7KszLegacyMetadata.keysccsx|��D]
}|Vq
WdS)N)r7)rcr<rrr�__iter__NszLegacyMetadata.__iter__cs�fdd����D�S)Ncsg|]}�|�qSrr)r+r<)rcrrr>Ssz)LegacyMetadata.values.<locals>.<listcomp>)r7)rcr)rcrr�RszLegacyMetadata.valuescs�fdd����D�S)Ncsg|]}|�|f�qSrr)r+r<)rcrrr>Vsz(LegacyMetadata.items.<locals>.<listcomp>)r7)rcr)rcrr?UszLegacyMetadata.itemscCsd|jj|j|jfS)Nz
<%s %s %s>)�	__class__rrOr4)rcrrr�__repr__XszLegacyMetadata.__repr__)NNNrY)F)F)F)N)F)F)"rrrrrgrbrirkrmrqrrrnrwr|r~rr�r�r_r`rhr�rarlr�rjr�r�r�r7r�r�r?r�rrrrrX�s>	




,
,
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
�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}z2.0zdistlib (%s)r)�legacy)rOr4�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)ryrOr4r�Zdynamic)�_legacy�_datar^NrYc	Cs0|||g�d�dkrtd��d|_d|_||_|dk	rzy|�||�||_Wn*tk
rvt||d�|_|��YnXn�d}|r�t	|d��}|�
�}WdQRXn|r�|�
�}|dkr�|j|jd�|_ndt
|t�s�|�d�}yt�|�|_|�|j|�Wn0tk
�r*tt|�|d�|_|��YnXdS)NrZz'path, fileobj and mapping are exclusive)rfr^�rb)ry�	generatorzutf-8)rer^)r[r\r�r�r^�_validate_mappingrrX�validater�r_�METADATA_VERSION�	GENERATORr�r	�decode�json�loadsr2r)rcrdrerfr^r�r,rrrrg�s<



zMetadata.__init__)rOr4�license�keywordsr�z
Requires-DistzSetup-Requires-DistzProvides-Extrar$)zDownload-URLN)zMetadata-VersionN)
�run_requires�build_requires�dev_requiresZ
test_requires�
meta_requires�extras�modules�
namespaces�exports�commands�classifiers�
source_urlryc
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)r�r�r�r�r��
extensionsr�zpython.commandsr�zpython.detailszpython.exports)�object�__getattribute__r�rjr�)
rcr<�common�mapped�lk�maker�resultr=�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)rcr<r=r^�pattern�
exclusions�mrrr�_validate_value�s

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)Nr�r�)r�r�r�r�r�r�r�zpython.commandsr�zpython.detailszpython.exportsr�)r�r�r�r��NotImplementedErrorr��
setdefault�__setattr__r�rr�r�)rcr<r=r�r�r�rLr�rrrr�s<




zMetadata.__setattr__cCst|j|jd�S)NT)rWrOr4)rcrrr�name_and_version/szMetadata.name_and_versioncCsF|jr|jd}n|j�dg�}d|j|jf}||krB|�|�|S)Nz
Provides-Dist�providesz%s (%s))r�r�r�rOr4r�)rcr��srrrr�3s
zMetadata.providescCs |jr||jd<n
||jd<dS)Nz
Provides-Distr�)r�r�)rcr=rrrr�>sc
Cs�|jr|}n�g}t|pg|j�}xl|D]d}d|kr@d|kr@d}n8d|krNd}n|�d�|k}|rx|�d�}|rxt||�}|r&|�|d�q&WxNdD]F}d|}	|	|kr�|�|	�|j�d|g�}|�|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�environmentT�requires)�build�dev�testz:%s:z%s_requires)r��env)	r�rr�rjr
�extendr@r��get_requirements)
rc�reqtsr�r�r�r��includer6r<�errrr�Es0	




zMetadata.get_requirementscCs|jr|��S|jS)N)r��_from_legacyr�)rcrrr�
dictionaryoszMetadata.dictionarycCs|jrt�nt|j|j�SdS)N)r�r�rr��DEPENDENCY_KEYS)rcrrr�dependenciesuszMetadata.dependenciescCs|jrt�n|j�|�dS)N)r�r�r�ra)rcr=rrrr|sc	Cs�|�d�|jkrt��g}x0|j��D]"\}}||kr&||kr&|�|�q&W|rfdd�|�}t|��x"|��D]\}}|�|||�qpWdS)NryzMissing metadata items: %sz, )	rjr�r�MANDATORY_KEYSr?r�r�rr�)	rcrfr^r�r<r�r�r�r�rrrr��szMetadata._validate_mappingcCsB|jr.|j�d�\}}|s|r>t�d||�n|�|j|j�dS)NTz#Metadata: missing: %s, warnings: %s)r�r�rAr�r�r�r^)rcr�r�rrrr��s
zMetadata.validatecCs(|jr|j�d�St|j|j�}|SdS)NT)r�r�rr��
INDEX_KEYS)rcr�rrrr��szMetadata.todictc
Cs�|jr|jrt�|j|jd�}|j�d�}x2dD]*}||kr0|dkrJd}n|}||||<q0W|�dg�}|dgkrxg}||d<d	}x2|D]*\}}||kr�||r�d
||ig||<q�W|j|d<i}i}	|S)N)ryr�T)rOr4r�r��description�
classifierrr�r!�r�))Z
requires_distr�)Zsetup_requires_distr�r�r�)r�r��AssertionErrorr�r�r�rjr�)
rcr�Zlmdr��nk�kwr7�ok�author�
maintainerrrrr��s,



zMetadata._from_legacyrrr#rr z	Home-pager"zAuthor-emailzDownload-URL)
rOr4)r�zpython.detailsr�r�r)r�zpython.project�project_urlsZHome)r�zpython.project�contactsrrO)r�zpython.projectrr�emailr�)r�zpython.detailsr�cCs�dd�}|jr|jrt�t�}|j}x�|j��D]v\}}t|t�sX||kr�||||<q0|}d}x8|D]0}y||}Wqftt	fk
r�d}PYqfXqfW|r0|||<q0W||j
|j�}	||j|j
�}
|jr�t|j�|d<t|	�|d<t|
�|d<|S)NcSs�t�}x�|D]�}|�d�}|�d�}|d}x^|D]V}|sJ|sJ|�|�q2d}|rZd|}|rt|rpd||f}n|}|�d�||f��q2WqW|S)Nr�r�r�rz
extra == "%s"z(%s) and %sr�)rlrj�addr�)�entriesr�r�r�r�Zrlistr�r6rrr�process_entries�s"



z,Metadata._to_legacy.<locals>.process_entriesTFzProvides-Extraz
Requires-DistzSetup-Requires-Dist)r�r�rrX�LEGACY_MAPPINGr?r�r0ro�
IndexErrorr�r�r�r�r��sorted)rcrr�Znmdr	rr��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�WdQRXdS)	Nrz)Exactly one of path and fileobj is needed)r�TrZ)�ensure_ascii�indent�	sort_keysr�zutf-8)
r[r2r�r�rrhr�r�r�r��dumpr�r�)rcrdrer�r�Z	legacy_mdr�r,rrrrh�s&

zMetadata.writecCs�|jr|j�|�nt|j�dg�}d}x"|D]}d|kr,d|kr,|}Pq,W|dkrhd|i}|�d|�n t|d�t|�B}t|�|d<dS)Nr�r�r�r�r)r�r�r�r��insertrlr)rcr�r��always�entryZrsetrrrr�s
zMetadata.add_requirementscCs*|jpd}|jpd}d|jj|j||fS)Nz	(no name)z
no versionz<%s %s %s (%s)>)rOr4r�rry)rcrOr4rrrr�(s

zMetadata.__repr__)NNNrY)N)NN)NNFT)0rrrr�re�compileZMETADATA_VERSION_MATCHER�IZNAME_MATCHERZFIELDNAME_MATCHERrZVERSION_MATCHERZSUMMARY_MATCHERr�rr�rrrr��	__slots__rgrlr�r�Z	none_list�dictZ	none_dictr�r�r�r��propertyr�r��setterr�rrr�r�r�r�rrrhr�r�rrrrrbs�


,+

'
*	2
)F)Ir�
__future__rr�rrr�r�r rrr�compatrrr	r9r
�utilrrr4r
r�	getLoggerrrArrrr�__all__rrr!r{rzr.r/rDr*rEZ_426_FIELDSZ_426_MARKERSr1rFrGr3rlrsraZEXTRA_REr5rJrtr?r�r�r�r�rur�rvr�r�r�rUrWrXZMETADATA_FILENAMEZWHEEL_METADATA_FILENAMEZLEGACY_METADATA_FILENAMErrrrr�<module>	s|











H


j