
    /hy                        d Z ddlmZ ddlZddlmZ ddlZddlZddlZddl	m
Z
mZ ddlmZmZmZ ddlmZ dd	lmZmZ dd
lmZmZ  ej        e          Z G d de
          Z G d de
          Z G d de
          Z G d de
          Zg dZdZ dZ! ej"        d          Z# ej"        d          Z$dZ%dZ&dZ'dZ(dZ)dZ*dZ+e*dz   Z,d Z-d!Z.e,e.z   Z/ e0            Z1e12                    e%           e12                    e&           e12                    e(           e12                    e*           e12                    e,           e12                    e/            ej"        d"          Z3d# Z4d$ Z5d% e1D             Z6d& e67                                D             Z8d'Z9d(Z:d)Z;d*Z<d+Z=d,Z>d-Z? e@            ZA ej"        d.          ZBd8d0ZC G d1 d2e@          ZDd3ZEd4ZFd5ZG G d6 d7e@          ZHdS )9zzImplementation 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                       e Zd ZdZdS )MetadataMissingErrorzA required metadata is missingN__name__
__module____qualname____doc__     O/var/www/html/venv/lib/python3.11/site-packages/pip/_vendor/distlib/metadata.pyr   r      s        ((((r   r   c                       e Zd ZdZdS )MetadataConflictErrorz>Attempt to read or write metadata fields that are conflictual.Nr   r   r   r   r   r       s        HHHHr   r   c                       e Zd ZdZdS ) MetadataUnrecognizedVersionErrorz Unknown metadata version number.Nr   r   r   r   r   r   $   s        ****r   r   c                       e Zd ZdZdS )MetadataInvalidErrorzA metadata value is invalidNr   r   r   r   r   r   (   s        %%%%r   r   )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/   r0   
ClassifierDownload-URL	ObsoletesProvidesRequires)r4   r5   r6   r2   r3   )r&   r'   r(   r)   r1   r*   r+   r,   r-   r.   r/   
MaintainerMaintainer-emailr0   r2   r3   Obsoletes-DistProject-URLProvides-DistRequires-DistRequires-PythonRequires-External)r;   r<   r=   r9   r>   r7   r8   r:   )r&   r'   r(   r)   r1   r*   r+   r,   r-   r.   r/   r7   r8   r0   r2   r3   r9   r:   r;   r<   r=   r>   Private-VersionObsoleted-BySetup-Requires-Dist	ExtensionProvides-Extra)r?   rC   r@   rA   rB   )Description-Content-Typer6   r5   r4   )rD   )DynamicLicense-Filez"extra\s*==\s*("([^"]+)"|'([^']+)')c                    | dk    rt           S | dk    rt          S | dk    rt          S | dv r&t          t          d t          D                       z   S | dk    rt          d          | dk    rt          S t          |           )	N1.0r$   1.2)1.32.1c              3   ,   K   | ]}|t           v|V  d S N)_345_FIELDS).0fs     r   	<genexpr>z%_version2fieldlist.<locals>.<genexpr>   s,      "R"RQk=Q=Q1=Q=Q=Q=Q"R"Rr   2.0z+Metadata 2.0 is withdrawn and not supported2.2)_241_FIELDS_314_FIELDSrN   tuple_566_FIELDS
ValueError_643_FIELDSr   )versions    r   _version2fieldlistr[   v   s    %	E			E			N	"	"U"R"Rk"R"R"RRRRR	E		FGGG	E		
*7
3
33r   c                    d }g }|                                  D ]"\  }}|g ddfv r|                    |           #g d}|D ]w}|t          vr4d|v r0|                    d           t                              d|           |t          vr4d|v r0|                    d           t                              d|           |t          vr4d	|v r0|                    d	           t                              d
|           |t          vr4d|v r0|                    d           t                              d|           |t          vr:d|v r6|dk    r0|                    d           t                              d|           |t          vr4d|v r0|                    d           t                              d|           yt          |          dk    r|d         S t          |          dk    r*t                              d|            t          d          d|v o ||t                    }d	|v o ||t                    }d|v o ||t                    }d|v o ||t                    }	t!          |          t!          |          z   t!          |          z   t!          |	          z   dk    rt          d          |s|s|s|	st"          |v rt"          S |rdS |rd	S |rdS dS )z5Detect the best version depending on the fields used.c                     |D ]	}|| v r dS 
dS )NTFr   )keysmarkersmarkers      r   _has_markerz"_best_version.<locals>._has_marker   s+     	 	F~~tt ur   UNKNOWNN)rH   r$   rI   rJ   rK   rS   rH   zRemoved 1.0 due to %sr$   zRemoved 1.1 due to %srI   zRemoved 1.2 due to %srJ   zRemoved 1.3 due to %srK   r+   zRemoved 2.1 due to %srS   zRemoved 2.2 due to %sr   r   z)Out of options - unknown metadata set: %szUnknown metadata setz,You used incompatible 1.1/1.2/2.1/2.2 fields)itemsappendrT   removeloggerdebugrU   rN   rW   rY   lenr   _314_MARKERS_345_MARKERS_566_MARKERS_643_MARKERSintr"   )
fieldsra   r^   keyvaluepossible_versionsis_1_1is_1_2is_2_1is_2_2s
             r   _best_versionrv      sk      Dllnn  
URD)))CBBB  7 7k!!e/@&@&@$$U+++LL0#666k!!e/@&@&@$$U+++LL0#666k!!e/@&@&@$$U+++LL0#666k!!e/@&@&@$$U+++LL0#666k!!e/@&@&@m##!((///4c:::k!!e/@&@&@$$U+++LL0#666 "" ##			1	$	$@&III#$:;;; ''KKKl,K,KF''KKKl,K,KF''KKKl,K,KF''KKKl,K,KF
6{{S[[ 3v;;.V<q@@#$RSSS  .& . . .%):::-- u u u 5r   c                 `    i | ]+}|                                                     d d          |,S )-_)lowerreplace)rO   names     r   
<dictcomp>r}      s?       -1DJJLLc""D  r   c                     i | ]\  }}||	S r   r   )rO   attrfields      r   r}   r}      s    BBB{tUudBBBr   )r<   r9   r;   )r=   )r(   )r)   r2   r4   r6   r5   r9   r;   r<   r>   r:   r1   rA   rC   rB   rF   )r:   )r,   )r.   r7   r*   r+   z[^A-Za-z0-9.]+Fc                     |rJt                               d|           } t                               d|                    dd                    }| d|S )zhReturn the distribution name with version.

    If for_filename is true, return a filename-escaped form.rx    .)	_FILESAFEsubr{   )r|   rZ   for_filenames      r   _get_name_and_versionr      sT      @ }}S$''--W__S#%>%>??ddGG$$r   c                       e Zd ZdZ	 	 d"dZd Zd Zd Zd Zd	 Z	d
 Z
d Zd Zd Zd Zd#dZd Zd Zd Zd Zd#dZd#dZd$dZd ZefdZd#dZd#dZd Zd Zd Zd Zd  Z d! Z!dS )%LegacyMetadataao  The 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defaultc                 R   |||g                     d           dk     rt          d          i | _        g | _        d | _        || _        ||                     |           d S ||                     |           d S |+|                     |           | 	                                 d S d S )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   s        r   __init__zLegacyMetadata.__init__	  s    '7#))$//!33EFFF !IIdOOOOO NN7##### KK   %%''''' ! r   c                 >    t          | j                  | j        d<   d S Nr&   )rv   r   r   s    r   r   z#LegacyMetadata.set_metadata_version  s    +8+F+F'(((r   c                 <    |                     |d|d           d S )Nz: 
)write)r   r   r|   rp   s       r   _write_fieldzLegacyMetadata._write_field  s'    DDD%%%011111r   c                 ,    |                      |          S rM   )getr   r|   s     r   __getitem__zLegacyMetadata.__getitem__  s    xx~~r   c                 .    |                      ||          S rM   )set)r   r|   rp   s      r   __setitem__zLegacyMetadata.__setitem__"  s    xxe$$$r   c                 |    |                      |          }	 | j        |= d S # t          $ r t          |          w xY wrM   )_convert_namer   KeyError)r   r|   
field_names      r   __delitem__zLegacyMetadata.__delitem__%  sQ    ''--
	!Z((( 	! 	! 	!4.. 	!s   ! ;c                 L    || j         v p|                     |          | j         v S rM   )r   r   r   s     r   __contains__zLegacyMetadata.__contains__,  s.    $ 9""4((DL8	:r   c                     |t           v r|S |                    dd                                          }t                              ||          S )Nrx   ry   )_ALL_FIELDSr{   rz   _ATTR2FIELDr   r   s     r   r   zLegacyMetadata._convert_name0  sE    ;K||C%%++--tT***r   c                 .    |t           v s	|t          v rg S dS )Nrb   )_LISTFIELDS_ELEMENTSFIELDr   s     r   _default_valuezLegacyMetadata._default_value6  s!    ;$."8"8Iyr   c                     | j         dv rt                              d|          S t                              d|          S )NrH   r$   r   )metadata_version_LINE_PREFIX_PRE_1_2r   _LINE_PREFIX_1_2r   rp   s     r   _remove_line_prefixz"LegacyMetadata._remove_line_prefix;  s<     N22'++D%888#''e444r   c                 B    |t           v r| |         S t          |          rM   )r   AttributeErrorr   s     r   __getattr__zLegacyMetadata.__getattr__A  s%    ;:T"""r   Fc                 <    t          | d         | d         |          S )zhReturn the distribution name with version.

        If filesafe is true, return a filename-escaped form.r'   r(   )r   )r   filesafes     r   get_fullnamezLegacyMetadata.get_fullnameL  s     %T&\4	?HMMMr   c                 >    |                      |          }|t          v S )z+return True if name is a valid metadata key)r   r   r   s     r   is_fieldzLegacyMetadata.is_fieldR  s     !!$''{""r   c                 >    |                      |          }|t          v S rM   )r   r   r   s     r   is_multi_fieldzLegacyMetadata.is_multi_fieldW  s     !!$''{""r   c                     t          j        |dd          }	 |                     |           |                                 dS # |                                 w xY w)z*Read the metadata values from a file path.rr#   encodingN)codecsopenr   close)r   filepathfps      r   r   zLegacyMetadata.read[  sR    [3999	NN2HHJJJJJBHHJJJJs   A Ac                    t          |          }|d         | j        d<   t          D ]y}||vr|t          v rC|                    |          }|t
          v r|d |D             }|                     ||           S||         }||dk    r|                     ||           z|                                }|r|n| d         | d<   dS )z,Read the metadata values from a file object.zmetadata-versionr&   Nc                 R    g | ]$}t          |                    d                     %S ,)rV   splitrO   rp   s     r   
<listcomp>z,LegacyMetadata.read_file.<locals>.<listcomp>p  s,    JJJ%eEKK$4$455JJJr   rb   r+   )r   r   r   r   get_all_LISTTUPLEFIELDSr   get_payload)r   fileobmsgr   valuesrp   bodys          r   r   zLegacyMetadata.read_filec  s    ''+./A+B'( ! 	+ 	+EC##U++,,,1CJJ6JJJF'''' E
$)););HHUE***   &*Cdd]0C]r   c                     t          j        |dd          }	 |                     ||           |                                 dS # |                                 w xY w)z&Write the metadata fields to filepath.wr#   r   N)r   r   
write_filer   )r   r   skip_unknownr   s       r   r   zLegacyMetadata.write  sT    [3999	OOB---HHJJJJJBHHJJJJs   A Ac                    |                                   t          | d                   D ]}|                     |          }|r	|dg dgfv r"|t          v r+|                     ||d                    |                     V|t          vr?|dk    r6| j        dv r|                    dd          }n|                    dd          }|g}|t          v rd	 |D             }|D ]}|                     |||           d
S )z0Write the PKG-INFO format data to a file object.r&   rb   r   r+   r   r   r%   z	
       |c                 8    g | ]}d                      |          S r   joinr   s     r   r   z-LegacyMetadata.write_file.<locals>.<listcomp>  s"    >>>e#((5//>>>r   N)
r   r[   r   r   r   r   r   r   r{   r   )r   
fileobjectr   r   r   rp   s         r   r   zLegacyMetadata.write_file  s;   !!###'-?(@AA 	< 	<EXXe__F 9b9+*F F F&&!!*eSXXf5E5EFFFK''M)),>>!'l!C!C!'l!C!C (((>>v>>> < <!!*eU;;;;<%	< 	<r   c                      fd}|snNt          |d          r*|                                D ]} ||||                    n|D ]\  }} |||           |r&|                                D ]\  }} |||           dS dS )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.
        c                 x    | t           v r-|r-                                        |           |           d S d S d S rM   )r   r   r   )ro   rp   r   s     r   _setz#LegacyMetadata.update.<locals>._set  sI    k!!e!++C00%88888 "!!!r   r^   N)hasattrr^   rc   )r   otherkwargsr   kvs   `     r   r   zLegacyMetadata.update  s    	9 	9 	9 	9 	9  	UF## 	ZZ\\ " "Qa!!!!"   1Q



 	  1Q



	 	 r   c                     |                      |          }|t          v s|dk    rTt          |t          t          f          s8t          |t
                    r d |                    d          D             }nCg }n@|t          v r7t          |t          t          f          st          |t
                    r|g}ng }t          	                    t          j                  r| d         }t          | j                  }|t          v rS|Q|D ]M}|                    |                    d          d                   st                              d|||           Nn{|t"          v r5|3|                    |          st                              d	|||           n=|t&          v r4|2|                    |          st                              d	|||           |t*          v r|d
k    r|                     |          }|| j        |<   dS )z"Control then set a metadata field.r)   c                 6    g | ]}|                                 S r   )strip)rO   r   s     r   r   z&LegacyMetadata.set.<locals>.<listcomp>  s     ===q===r   r   r'   N;r   z$'%s': '%s' is not valid (field '%s')z.'%s': '%s' is not a valid version (field '%s')r+   )r   r   
isinstancelistrV   r	   r   r   rf   isEnabledForloggingWARNINGr   r   _PREDICATE_FIELDSis_valid_matcherwarning_VERSIONS_FIELDSis_valid_constraint_list_VERSION_FIELDSis_valid_version_UNICODEFIELDSr   r   )r   r|   rp   project_namer   r   s         r   r   zLegacyMetadata.set  s"   !!$''^##tz'9'954-00 (:%.. ==EKK,<,<===k!!UT5M22 "%.. w// 	><L,,F(((U-> 3 3A!221773<<?CC 3B(!T3 3 33 )))e.?66u== >NN#S#/> > >((U->..u55 >NN#S#/> > > >!!}$$0077"Tr   c                    |                      |          }|| j        vr |t          u r|                     |          }|S |t          v r| j        |         }|S |t
          v r\| j        |         }|g S g }|D ]D}|t          vr|                    |           !|                    |d         |d         f           E|S |t          v r7| j        |         }t          |t                    r|                    d          S | j        |         S )zGet a metadata field.Nr   r   r   )r   r   _MISSINGr   r  r   r   rd   r   r   r	   r   )r   r|   r   rp   resvals         r   r   zLegacyMetadata.get  s$   !!$''t|##(""--d33N>!!L&EL[  L&E}	C 1 1///JJsOOOO JJAA/0000J^##L&E%.. ({{3'''|D!!r   c                 >   |                                   g g }}dD ]}|| vr|                    |           |r-|g k    r'dd                    |          z  }t          |          dD ]}|| vr|                    |           | d         dk    r||fS t	          | j                  fd}t          |ft          j        ft          j
        ffD ]H\  }}|D ]@}	|                     |	d          }
|
& ||
          s|                    d	|	d
|
           AI||fS )zkCheck if the metadata is compliant. If strict is True then raise if
        no Name or Version are provided)r'   r(   zmissing required metadata: %s, )r-   r.   r&   rI   c                 t    | D ]3}                     |                    d          d                   s dS 4dS )Nr   r   FT)r   r   )rp   r   r   s     r   are_valid_constraintsz3LegacyMetadata.check.<locals>.are_valid_constraints  sG     ! !..qwws||A?? ! 55!4r   NzWrong value for 'z': )r   rd   r   r   r   r   r   r   r   r   r  r   )r   strictmissingwarningsr   r   r  rn   
controllerr   rp   r   s              @r   checkzLegacyMetadata.check  s    	!!### ' 	% 	%D4t$$$ 	,gmm1DIIg4F4FFC&s++++ 	% 	%D4t$$$ "#u,,H$$DK((	 	 	 	 	 %67L#M$4$*$C$E$3$*$;$=#> 	Q 	QFJ
   Q Q--$ZZ->->$OOO%%%$OPPPQ
   r   c                     |                                   t          | d                   }i }|D ]A}|r	|| j        v r4t          |         }|dk    r| |         ||<   ,d | |         D             ||<   B|S )a  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).
        This is as per https://www.python.org/dev/peps/pep-0566/#id17.
        r&   project_urlc                 8    g | ]}d                      |          S r   r   )rO   us     r   r   z)LegacyMetadata.todict.<locals>.<listcomp>D  s"     G G G! G G Gr   )r   r[   r   _FIELD2ATTR)r   skip_missingrn   datar   ro   s         r   todictzLegacyMetadata.todict1  s     	!!####D);$<==  	H 	HJ H:#=#=!*--'' $Z 0DII G Gd:6F G G GDIr   c                 V    | d         dk    rdD ]	}|| v r| |= 
| dxx         |z  cc<   d S )Nr&   r$   )r4   r6   r5   r<   r   )r   requirementsr   s      r   add_requirementszLegacyMetadata.add_requirementsH  sU    "#u,,> $ $D==U_-r   c                 F    t          t          | d                             S r   )r   r[   r   s    r   r^   zLegacyMetadata.keysS  s    &t,>'?@@AAAr   c              #   @   K   |                                  D ]}|V  d S rM   r^   )r   ro   s     r   __iter__zLegacyMetadata.__iter__V  s2      99;; 	 	CIIII	 	r   c                 D      fd                                  D             S )Nc                      g | ]
}|         S r   r   rO   ro   r   s     r   r   z)LegacyMetadata.values.<locals>.<listcomp>[  s    111cS	111r   r  r   s   `r   r   zLegacyMetadata.valuesZ  s%    1111TYY[[1111r   c                 D      fd                                  D             S )Nc                 $    g | ]}||         fS r   r   r"  s     r   r   z(LegacyMetadata.items.<locals>.<listcomp>^  s"    888Sd3i 888r   r  r   s   `r   rc   zLegacyMetadata.items]  s%    8888DIIKK8888r   c                 B    d| j         j        d| j        d| j        dS )N<r   >)	__class__r   r|   rZ   r   s    r   __repr__zLegacyMetadata.__repr__`  s-     #~666			#|||- 	-r   NNNr   FrM   )"r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r  r  r  r^   r  r   rc   r)  r   r   r   r   r      s         9=!( ( ( ( G G G2 2 2  % % %! ! !: : :+ + +  
5 5 5# # #N N N N# # #
# # #  D D D8   < < < <2   8*# *# *#X !) " " " ":*! *! *! *!X   .. . .B B B  2 2 29 9 9- - - - -r   r   zpydist.jsonzmetadata.jsonMETADATAc                   ^   e Zd ZdZ ej        d          Z ej        dej                  Z ej        dej                  Z	e
Z ej        d          ZdZdez  Zddd	d
ZdZdZedfed	fed	fed	fe	d	fdZdZ	 	 d8dZ ed          ZdefZdefZdefdefeeedefeeeedefdddZ[[d Zd9dZd Ze d             Z!e d             Z"e"j#        d             Z"d:d Z$e d!             Z%e d"             Z&e&j#        d#             Z&d$ Z'd% Z(d& Z)d' Z*d(d)d*d+d,d-d.d/d0dd1
Z+d2 Z,d;d5Z-d6 Z.d7 Z/dS )<r    z
    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}rR   zdistlib (%s)r   )legacy)r|   rZ   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   r|   rZ   r/  dynamic)_legacy_datar   Nr   c                 l   |||g                     d           dk     rt          d          d | _        d | _        || _        |[	 |                     ||           || _        d S # t          $ r. t          ||          | _        |                                  Y d S w xY wd }|r=t          |d          5 }|
                                }d d d            n# 1 swxY w Y   n|r|
                                }|| j        | j        d| _        d S t          |t                    s|                    d          }	 t!          j        |          | _        |                     | j        |           d S # t$          $ r; t          t'          |          |          | _        |                                  Y d S w xY w)Nr   r   )r   r   rbr   	generatorr#   )r   r   )r   r   r1  r2  r   _validate_mappingr   r   validater   r   METADATA_VERSION	GENERATORr   r
   decodejsonloadsrX   r   )r   r   r   r   r   r  rP   s          r   r   zMetadata.__init__  s   '7#))$//!33EFFF
 &&w777$


3      -gfMMM  D &$%% $6688D$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ &||~~| )-(=!% 



 "$	22 0;;w//D$!%D!1!1DJ**4:v>>>>>! 	$ 	$ 	$ $2(4..9?$A $A $ADLMMOOOOOO	$s7   A# #4BB2CCC84E. .AF32F3)r|   rZ   licensekeywordsr/  r<   rA   rC   r2   )r3   N)r&   N)run_requiresbuild_requiresdev_requirestest_requiresmeta_requiresextrasmodules
namespacesexportscommandsclassifiers
source_urlr   c                    t                               | d          }t                               | d          }||v r<||         \  }}| j        r.||d n	 |            }nt| j                            |          }nX|d n	 |            }|dvr| j                            ||          }n)t                      }|}| j                            d          }	|	r|dk    r|	                    d|          }n}|dk    r.|	                    d          }	|	r|	                    ||          }nI|	                    d	          }	|	s| j                            d	          }	|	r|	                    ||          }||u r|}n\||vrt                               | |          }n<| j        r| j                            |          }n| j                            |          }|S )
Ncommon_keysmapped_keysrI  rH  rF  rG  rJ  
extensionsrI  python.commandsrJ  python.detailspython.exports)object__getattribute__r1  r   r2  )
r   ro   commonmappedlkmakerresultrp   sentinelds
             r   rU  zMetadata.__getattribute__  s   ((}==((}==&==sIB| ':%*]TTFF!\--b11FF %5577 . . .!Z^^C77FF  &xxH%F
|44A ;*,,%&UU+<e%D%DFF M11 !&6 7 7A  ;)*sE):): !&6 7 7A#$ E$(JNN3C$D$D  ;)*sE):):))!&,,T377FF\ 	)\%%c**FFZ^^C((Fr   c                     || j         v rH| j         |         \  }}|p| j        |vr/|                    |          }|st          d|d|d          d S d S d S )N'z' is an invalid value for the 'z
' property)SYNTAX_VALIDATORSr   matchr   )r   ro   rp   r   pattern
exclusionsms          r   _validate_valuezMetadata._validate_value  s    $((("&"8"=GZ%$+j88MM%(( J..FKeeDGCC0I J J J )(88J Jr   c                    |                      ||           t                              | d          }t                              | d          }||v r||         \  }}| j        r|t          || j        |<   d S |dvr|| j        |<   d S | j                            di           }|dk    r||d<   d S |dk    r|                    di           }|||<   d S |                    d	i           }|||<   d S ||vrt                              | ||           d S |d
k    rBt          |t                    r-|
                                }|r|                                }ng }| j        r|| j        |<   d S || j        |<   d S )NrM  rN  rO  rP  rI  rQ  rJ  rR  rS  r?  )rd  rT  rU  r1  NotImplementedErrorr2  
setdefault__setattr__r   r	   r   r   )r   ro   rp   rV  rW  rX  ry   r\  s           r   rh  zMetadata.__setattr__  s   S%(((((}==((}==&==3KEB| #:--#(R    , , ,"'
3 J)),;;*$$+0A'(((M))%5r::A"AcFFF%5r::A"AcFFFtS%00000j  e\22 #!KKMME # % "| ($)S!!!"'
3r   c                 8    t          | j        | j        d          S NT)r   r|   rZ   r   s    r   name_and_versionzMetadata.name_and_version7  s    $TYdCCCr   c                     | j         r| j         d         }n| j                            dg           }| j        d| j        d}||vr|                    |           |S )Nr;   provides ())r1  r2  rg  r|   rZ   rd   )r   rZ  ss      r   rm  zMetadata.provides;  sg    < 	;\/2FFZ**:r::FDLLL1F??MM!r   c                 @    | j         r|| j         d<   d S || j        d<   d S )Nr;   rm  )r1  r2  r   s     r   rm  zMetadata.providesF  s0    < 	+,1DL)))%*DJz"""r   c                    | j         r|}ng }t          |pg | j                  }|D ]q}d|vrd|vrd}nGd|vrd}n|                    d          |v }|r'|                    d          }|rt	          ||          }|r|                    |d                    rdD ]i}d|z  }	|	|v r^|                    |	           | j                            d|z  g           }|                    |                     |||                     j|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)rE  env)	r1  r   rE  r   r   extendre   r2  get_requirements)
r   reqtsrE  ry  rZ  r\  includer`   ro   es
             r   r{  zMetadata.get_requirementsM  s`    < 	BFFF"dk::F 1 1!##Q(>(>"GGa''"&"#%%..F": =!"}!5!5! =&/&<&<G 1MM!J-000/ B BSL;;MM!$$$ !JNN=3+>CCEMM$"7"7f<? #8 #A #A B B Br   c                 F    | j         r|                                 S | j        S rM   )r1  _from_legacyr2  r   s    r   
dictionaryzMetadata.dictionaryw  s&    < 	'$$&&&zr   c                 R    | j         rt          t          | j        | j                  S rM   )r1  rf  r   r2  DEPENDENCY_KEYSr   s    r   dependencieszMetadata.dependencies}  s(    < 	D%%!$*d.BCCCr   c                 V    | j         rt          | j                            |           d S rM   )r1  rf  r2  r   r   s     r   r  zMetadata.dependencies  s.    < 	%%%Je$$$$$r   c                    |                     d          | j        k    rt                      g }| j                                        D ]"\  }}||vr||vr|                    |           #|r'dd                    |          z  }t          |          |                                D ]\  }}|                     |||           d S )Nr   zMissing metadata items: %sr	  )	r   r9  r   MANDATORY_KEYSrc   rd   r   r   rd  )	r   r   r   r  ro   rb  r   r   r   s	            r   r7  zMetadata._validate_mapping  s    ;;)**d.CCC2444#288:: 	( 	(OC'!!++NN3''' 	,.71C1CCC&s+++MMOO 	/ 	/DAq  Av....	/ 	/r   c                     | j         rA| j                             d          \  }}|s|rt                              d||           d S d S |                     | j        | j                   d S )NTz#Metadata: missing: %s, warnings: %s)r1  r  rf   r   r7  r2  r   )r   r  r  s      r   r8  zMetadata.validate  s    < 	< $ 2 24 8 8GX 2( 2D&2 2 2 2 22 2 ""4:t{;;;;;r   c                 |    | j         r| j                             d          S t          | j        | j                  }|S rj  )r1  r  r   r2  
INDEX_KEYS)r   rZ  s     r   r  zMetadata.todict  s:    < 	<&&t,,,#DJ@@FMr   c                 b   | j         r| j        rJ | j        | j        d}| j                             d          }dD ]}||v r|dk    rd}n|}||         ||<   |                    dg           }|dgk    rg }||d<   d	}|D ]\  }}||v r||         rd
||         ig||<    | j        |d<   i }i }	|S )Nr5  T)r|   rZ   r>  r/  description
classifierr  rJ  r,    r?  ))requires_distr@  )setup_requires_distrA  ru  rm  )r1  r2  r9  r:  r  r   rm  )
r   rZ  lmdr   nkkwr^   okauthor
maintainers
             r   r  zMetadata._from_legacy  s   |.DJ... $ 5
 
 l!!$''  	$ 	$ACxx$$&BBB Vr
WWZ$$"::Bz; 	5 	5FBSyySWy)3r734r
!]z
r   r'   r(   r0   r*   r+   r-   r.   r/   r3   )
r|   rZ   )rP  rR  r>  r/  r  )rP  python.projectproject_urlsHome)rP  r  contactsr   r|   )rP  r  r  r   emailrK  )rP  rR  rJ  c                 (   d }| j         r| j        rJ t                      }| j         }| j                                        D ]]\  }}t          |t                    s||v r||         ||<   *|}d}|D ]%}	 ||         }# t          t          f$ r d}Y  nw xY w|r|||<   ^ || j	        | j
        z             }	 || j        | j        z             }
| j        rt          | j                  |d<   t          |	          |d<   t          |
          |d<   |S )Nc                 R   t                      }| D ]}|                    d          }|                    d          }|d         }|D ]^}|s|s|                    |           d}|rd|z  }|r|r	d|d|}n|}|                    d                    ||f                     _|S )	Nrs  rt  ru  r  zextra == "%s"(z) and r   )r   r   addr   )entriesr|  r~  rs  ry  rlistr   r`   s           r   process_entriesz,Metadata._to_legacy.<locals>.process_entries  s    EEE 9 9geeM*** 9 9A 9u 9		!!#  =%4u%<F -% - -:=##vv)F),		#((Av;"7"788889 Lr   TFrC   r<   rA   )r2  r1  r   LEGACY_MAPPINGrc   r   rV   r   
IndexErrorr@  rD  rA  rB  rE  sorted)r   r  rZ  nmdr  r  r\  foundr   r1r2s              r   
_to_legacyzMetadata._to_legacy  sg   	 	 	* z.$,...!!j)//11 	# 	#FBb%(( #99!$RF2J  AaD$j1    %  #!"F2J_T.1CCDD_T043DDEE; 	;'-dk':':F#$"(**(.r

$%s   5A>>BBFTc                 D   ||g                     d           dk    rt          d          |                                  |rW| j        r| j        }n|                                 }|r|                    ||           d S |                    ||           d S | j        r|                                 }n| j        }|rt          j
        ||ddd           d S t          j        |dd          5 }t          j
        ||ddd           d d d            d S # 1 swxY w Y   d S )	Nr   z)Exactly one of path and fileobj is needed)r   Tr   )ensure_asciiindent	sort_keysr   r#   )r   rX   r8  r1  r  r   r   r  r2  r<  dumpr   r   )r   r   r   r.  r   	legacy_mdr\  rP   s           r   r   zMetadata.write  s   '?  &&!++HIII 	.| . L		 OO--	 I<@@@@@$$W<$HHHHH| %%''J .	!W4$(* * * * * * [sG44 .Iaa(,. . . .. . . . . . . . . . . . . . . . . .s   .DDDc                 R   | j         r| j                             |           d S | j                            dg           }d }|D ]}d|vrd|vr|} n|d|i}|                    d|           d S t          |d                   t          |          z  }t          |          |d<   d S )Nr@  rt  rs  ru  r   )r1  r  r2  rg  insertr   r  )r   r  r@  alwaysentryrsets         r   r  zMetadata.add_requirements  s    < 	2L)),77777:00DDLF%   --'2F2F"FE~%|5##Av.....6*-..\1B1BB%+D\\z"""r   c           	      b    | j         pd}| j        pd}d| j        j        d| j        d|d|d	S )Nz	(no name)z
no versionr&  r   rn  z)>)r|   rZ   r(  r   r   )r   r|   rZ   s      r   r)  zMetadata.__repr__0  sN    y'K,.,$(N$;$;$;$($9$9$9444J 	Jr   r*  rM   )NN)NNFT)0r   r   r   r   recompileMETADATA_VERSION_MATCHERINAME_MATCHERFIELDNAME_MATCHERr   VERSION_MATCHERSUMMARY_MATCHERr9  r   r:  r  r  r  r_  	__slots__r   r   rM  r   	none_listdict	none_dictrN  rU  rd  rh  propertyrk  rm  setterr{  r  r  r7  r8  r  r  r  r  r   r  r)  r   r   r   r    r    j  s"          *rz*:;;2:A24HHL"
#A24HH'O bj--O,I  N!J/O
 6r:{+#[1#[1%{3  /I8<!+$ +$ +$ +$Z #KLLKtItI )$/0$7!""#T*$d+,6 K  	9) ) )VJ J J J%( %( %(N D D XD   X _+ + _+( ( ( (T   X
 D D XD % % %/ / /< < <    < 5>$BMAIBP$9E N0 0 0d. . . .42 2 2"J J J J Jr   r    r+  )Ir   
__future__r   r   r  r   r<  r   r  r  r   r   compatr   r	   r
   r_   r   utilr   r   rZ   r   r   	getLoggerr   rf   r   r   r   r   __all__r!   r"   r  r   r   rT   rU   ri   rN   rj   _426_FIELDS_426_MARKERSrW   rk   rl   rY   r   r   r   EXTRA_REr[   rv   r   rc   r  r   r   r   r   r   r   r  rT  r  r   r   r   METADATA_FILENAMEWHEEL_METADATA_FILENAMELEGACY_METADATA_FILENAMEr    r   r   r   <module>r     s    ( ' ' ' ' '  # # # # # #   				 , + + + + + + + 5 5 5 5 5 5 5 5 5 5       , , , , , , , , 2 2 2 2 2 2 2 2		8	$	$) ) ) ) )+ ) ) )I I I I I, I I I+ + + + +'7 + + +& & & & &+ & & & J
I
I   # 2:n-- !rz,// 
' 73!4  B B -*L(cee   ;      ;      ;      ;      ;      ;   2:?@@4 4 4$L L L` 5@   CBk.?.?.A.ABBBH ' >
 $ C688BJ'((	
% 
% 
% 
%e- e- e- e- e-V e- e- e-P " ) % JJ JJ JJ JJ JJv JJ JJ JJ JJ JJr   