
    <6h                        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j0                  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jD                  d      Z# ejD                  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       Z1e1je                  e%       e1je                  e&       e1je                  e(       e1je                  e*       e1je                  e,       e1je                  e/        ejD                  d"      Z3d# Z4d$ Z5e1D  ci c]#  } | jm                         jo                  d%d&      | % c} Z8e8js                         D ci c]  \  }}||
 c}}Z:d'Z;d(Z<d)Z=d*Z>d+Z?d,Z@d-ZA eB       ZC ejD                  d.      ZDd7d/ZE G d0 d1eB      ZFd2ZGd3ZHd4ZI G d5 d6eB      ZJyc c} w c c}}w )8zzImplementation 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y)MetadataMissingErrorzA required metadata is missingN__name__
__module____qualname____doc__     a/var/www/panel.atabookie.online/venv/lib/python3.12/site-packages/pip/_vendor/distlib/metadata.pyr   r      s    (r   r   c                       e Zd ZdZy)MetadataConflictErrorz>Attempt to read or write metadata fields that are conflictual.Nr   r   r   r   r   r       s    Hr   r   c                       e Zd ZdZy) MetadataUnrecognizedVersionErrorz Unknown metadata version number.Nr   r   r   r   r   r   $   s    *r   r   c                       e Zd ZdZy)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   2   K   | ]  }|t         vs|  y wN)_345_FIELDS).0fs     r   	<genexpr>z%_version2fieldlist.<locals>.<genexpr>   s     "RQk=Q1"Rs   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   sw    %	E		E		N	"U"Rk"RRRR	E	FGG	E	
*7
33r   c                    d }| j                         D cg c]  \  }}|g ddfvs| }}}g d}|D ]>  }|t        vr+d|v r'|j                  d       t        j	                  d|       |t
        vr+d|v r'|j                  d       t        j	                  d|       |t        vr+d	|v r'|j                  d	       t        j	                  d
|       |t        vr+d|v r'|j                  d       t        j	                  d|       |t        vr0d|v r,|dk7  r'|j                  d       t        j	                  d|       |t        vsd|v s|j                  d       t        j	                  d|       A t        |      dk(  r|d   S t        |      dk(  r!t        j	                  d|        t        d      d|v xr  ||t              }d	|v xr  ||t              }d|v xr  ||t              }d|v xr  ||t              }	t        |      t        |      z   t        |      z   t        |	      z   dkD  rt        d      |s|s|s|	st         |v rt         S |ry|ry	|ryyc c}}w )z5Detect the best version depending on the fields used.c                 ,     t         fd|D              S )Nc              3   &   K   | ]  }|v  
 y wrM   r   )rO   markerkeyss     r   rQ   z5_best_version.<locals>._has_marker.<locals>.<genexpr>   s     8f6T>8s   )any)r`   markerss   ` r   _has_markerz"_best_version.<locals>._has_marker   s    8888r   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)itemsrT   removeloggerdebugrU   rN   rW   rY   lenr   _314_MARKERS_345_MARKERS_566_MARKERS_643_MARKERSintr"   )
fieldsrc   keyvaluer`   possible_versionsis_1_1is_1_2is_2_1is_2_2s
             r   _best_versionrw      so   9 #),,.WJCE"iQUAV4VCWDWB  7k!e/@&@$$U+LL0#6k!e/@&@$$U+LL0#6k!e/@&@$$U+LL0#6k!e/@&@$$U+LL0#6k!e/@&@m#!((/4c:k!e/@&@$$U+LL0#6'72 " ##		1	$@&I#$:;; ''KKl,KF''KKl,KF''KKl,KF''KKl,KF
6{S[ 3v;.V<q@#$RSS &%)::--  Xs
   I!I!-_)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.]+c                     |r<t         j                  d|       } t         j                  d|j                  dd            }| d|S )zhReturn the distribution name with version.

    If for_filename is true, return a filename-escaped form.rx    .)	_FILESAFEsubreplace)namerZ   for_filenames      r   _get_name_and_versionr      s?      }}S$'--W__S#%>?G$$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!y)#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
    Nc                    |||gj                  d       dk  rt        d      i | _        g | _        d | _        || _        || j                  |       y || j                  |       y |"| j                  |       | j                          y y )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EFF !IIdO NN7# KK %%' !r   c                 H    t        | j                        | j                  d<   y Nr&   )rw   r   r   s    r   r   z#LegacyMetadata.set_metadata_version  s    +8+F'(r   c                 2    |j                  |d|d       y )Nz: 
)write)r   r   r   rq   s       r   _write_fieldzLegacyMetadata._write_field  s    D%01r   c                 $    | j                  |      S rM   )getr   r   s     r   __getitem__zLegacyMetadata.__getitem__  s    xx~r   c                 &    | j                  ||      S rM   )set)r   r   rq   s      r   __setitem__zLegacyMetadata.__setitem__  s    xxe$$r   c                 r    | j                  |      }	 | j                  |= y # t        $ r t        |      w xY wrM   )_convert_namer   KeyError)r   r   
field_names      r   __delitem__zLegacyMetadata.__delitem__  s<    ''-
	!Z( 	!4. 	!s   ! 6c                 \    || j                   v xs | j                  |      | j                   v S rM   )r   r   r   s     r   __contains__zLegacyMetadata.__contains__$  s/    $ 9""4(DLL8	:r   c                     |t         v r|S |j                  dd      j                         }t        j	                  ||      S )Nrx   ry   )_ALL_FIELDSr   lower_ATTR2FIELDr   r   s     r   r   zLegacyMetadata._convert_name(  s9    ;K||C%++-tT**r   c                 (    |t         v s|t        v rg S y)Nrd   )_LISTFIELDS_ELEMENTSFIELDr   s     r   _default_valuezLegacyMetadata._default_value.  s    ;$."8Ir   c                 v    | j                   dv rt        j                  d|      S t        j                  d|      S )NrH   r$   r   )metadata_version_LINE_PREFIX_PRE_1_2r~   _LINE_PREFIX_1_2r   rq   s     r   _remove_line_prefixz"LegacyMetadata._remove_line_prefix3  s6      N2'++D%88#''e44r   c                 2    |t         v r| |   S t        |      rM   )r   AttributeErrorr   s     r   __getattr__zLegacyMetadata.__getattr__9  s    ;:T""r   c                 (    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_fullnameD  s     %T&\4	?HMMr   c                 4    | j                  |      }|t        v S )z+return True if name is a valid metadata key)r   r   r   s     r   is_fieldzLegacyMetadata.is_fieldJ  s    !!$'{""r   c                 4    | j                  |      }|t        v S rM   )r   r   r   s     r   is_multi_fieldzLegacyMetadata.is_multi_fieldO  s    !!$'{""r   c                     t        j                  |dd      }	 | j                  |       |j                          y# |j                          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.readS  s8    [[39	NN2HHJBHHJs	   < Ac           	         t        |      }|d   | j                  d<   t        D ]  }||vr|t        v rU|j	                  |      }|t
        v r)|'|D cg c]  }t        |j                  d             }}| j                  ||       e||   }|m|dk7  ss| j                  ||        |j                         }|r|| d<   y| d   | d<   yc c}w )z,Read the metadata values from a file object.zmetadata-versionr&   N,rd   r+   )
r   r   r   r   get_all_LISTTUPLEFIELDSrV   splitr   get_payload)r   fileobmsgfieldvaluesrq   bodys          r   r   zLegacyMetadata.read_file[  s    '+./A+B'( ! 	+EC#U+,,1CCIJ%eEKK$45JFJ' E
$));HHUE*	+"  &*d]]0C] Ks   !Cc                     t        j                  |dd      }	 | j                  ||       |j                          y# |j                          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.writew  s:    [[39	OOB-HHJBHHJs	   = Ac                    | j                          t        | d         D ]  }| j                  |      }|r	|dg dgfv r|t        v r#| j	                  ||dj                  |             J|t        vr;|dk(  r3| j                  dv r|j                  dd      }n|j                  dd      }|g}|t        v r|D cg c]  }dj                  |       }}|D ]  }| j	                  |||         y	c c}w )
z0Write the PKG-INFO format data to a file object.r&   rd   r   r+   r   r   r%   z	
       |N)
r   r[   r   r   r   joinr   r   r   r   )r   
fileobjectr   r   r   rq   s         r   r   zLegacyMetadata.write_file  s    !!#'-?(@A 	<EXXe_F9b9+*F F&!!*eSXXf5EFK'M),,>!'l!C!'l!C ((7=>e#((5/>> <!!*eU;<%	<  ?s   8C/c                       fd}|snAt        |d      r"|j                         D ]  } ||||           n|D ]  \  }} |||        |r"|j                         D ]  \  }} |||        yy)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                 `    | t         v r%|r"j                  j                  |       |       y y y rM   )r   r   r   )rp   rq   r   s     r   _setz#LegacyMetadata.update.<locals>._set  s.    k!e++C0%8 ',!r   r`   N)hasattrr`   re   )r   otherkwargsr   kvs   `     r   r   zLegacyMetadata.update  s    	9 UF#ZZ\ "Qa!"  1Q
  1Q
 r   c                    | j                  |      }|t        v s|dk(  rVt        |t        t        f      s@t        |t
              r-|j                  d      D cg c]  }|j                          }}n7g }n4|t        v r,t        |t        t        f      st        |t
              r|g}ng }t        j                  t        j                        r| d   }t        | j                        }|t        v rF|D|D ]>  }|j!                  |j                  d      d         r't        j#                  d|||       @ ng|t$        v r,|*|j'                  |      sLt        j#                  d|||       n3|t(        v r+|)|j+                  |      st        j#                  d|||       |t,        v r|d	k(  r| j/                  |      }|| j0                  |<   yc c}w )
z"Control then set a metadata field.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   stripr   rg   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   rq   r   project_namer   s         r   r   zLegacyMetadata.set  s   !!$'^#tz'954-0%.,1KK,<=q==k!UT5M2%.w/<L,F((U-> 3A!221773<?CB(!T33 ))e.?66u=NN#S#/>(U->..u5NN#S#/> >!}$007"TG >s   G	c                    | j                  |      }|| j                  vr|t        u r| j                  |      }|S |t        v r| j                  |   }|S |t
        v rQ| j                  |   }|g S g }|D ]5  }|t        vr|j                  |       |j                  |d   |d   f       7 |S |t        v r0| j                  |   }t        |t              r|j                  d      S | j                  |   S )zGet a metadata field.r   r   r   )r   r   _MISSINGr   r   r   r   appendr   r   r	   r   )r   r   defaultrq   resvals         r   r   zLegacyMetadata.get  s    !!$'t||#("--d3N>!LL&EL[ LL&E}	C 1//JJsO JJAA/01 J^#LL&E%.{{3''||D!!r   c                    | j                          g g }}dD ]  }|| vs|j                  |        |r$|g k7  rddj                  |      z  }t        |      dD ]  }|| vs|j                  |        | d   dk7  r||fS t	        | j
                        fd}t        |ft        j                  ft        j                  ffD ]A  \  }}|D ]7  }	| j                  |	d      }
|
 ||
      r!|j                  d	|	d
|
       9 C ||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                 ^    | D ]'  }j                  |j                  d      d         r' y y)Nr   r   FT)r   r   )rq   r   r   s     r   are_valid_constraintsz3LegacyMetadata.check.<locals>.are_valid_constraints  s4     !..qwws|A? ! r   NzWrong value for 'z': )r   r   r   r   r   r   r   r   r   r   r   r   )r   strictmissingwarningsattrr   r  ro   
controllerr   rq   r   s              @r   checkzLegacyMetadata.check  sM    	!!# ' 	%D4t$	% gm1DIIg4FFC&s+++ 	%D4t$	%
 "#u,H$$DKK(	 %67L#M$4$*$C$C$E$3$*$;$;$=#> 	QFJ
   Q-$Z->OO%$OPQ	Q   r   c                     | j                          t        | d         }i }|D ]O  }|r|| j                  v st        |   }|dk7  r	| |   ||<   +| |   D cg c]  }dj	                  |       c}||<   Q |S c c}w )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_urlr   )r   r[   r   _FIELD2ATTRr   )r   skip_missingro   datar   rp   us          r   todictzLegacyMetadata.todict)  s     	!!##D);$<=  	HJ:#=!*--' $Z 0DI6::6F G! GDI	H  !Hs   A7c                 L    | d   dk(  rdD ]
  }|| v s| |=  | dxx   |z  cc<   y )Nr&   r$   )r4   r6   r5   r<   r   )r   requirementsr   s      r   add_requirementszLegacyMetadata.add_requirements@  s?    "#u,> $D=U$ 	_-r   c                 0    t        t        | d               S r   )r   r[   r   s    r   r`   zLegacyMetadata.keysK  s    &t,>'?@AAr   c              #   >   K   | j                         D ]  }|  y wrM   r`   r   rp   s     r   __iter__zLegacyMetadata.__iter__N  s      99; 	CI	s   c                 N    | j                         D cg c]  }| |   	 c}S c c}w rM   r  r  s     r   r   zLegacyMetadata.valuesR  s     %)YY[1cS	111s   "c                 R    | j                         D cg c]	  }|| |   f c}S c c}w rM   r  r  s     r   re   zLegacyMetadata.itemsU  s%    ,0IIK8Sd3i 888s   $c                 j    d| j                   j                  d| j                  d| j                  dS )N<r{   >)	__class__r   r   rZ   r   s    r   __repr__zLegacyMetadata.__repr__X  s&    #~~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   re   r  r   r   r   r   r      s     9=!( G2%!:+
5#N#
#D8<28*#X !) ":*!X..B29-r   r   zpydist.jsonzmetadata.jsonMETADATAc                   j   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	 	 d5d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d6dZd Ze d        Z!e d        Z"e"jF                  d        Z"d7dZ$e d         Z%e d!        Z&e&jF                  d"        Z&d# Z'd$ Z(d% Z)d& Z*d'd(d)d*d+d,d-d.d/dd0
Z+d1 Z,d8d2Z-d3 Z.d4 Z/y)9r    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   Nc                    |||gj                  d       dk  rt        d      d | _        d | _        || _        |	 | j                  ||       || _        y d }|r&t        |d      5 }|j                         }d d d        n|r|j                         }|| j                  | j                  d| _        y t        |t              s|j                  d      }	 t!        j"                  |      | _        | j                  | j                  |       y # t        $ r% t        ||      | _        | j                          Y y w xY w# 1 sw Y   xY w# t$        $ r. t        t'        |      |      | _        | j                          Y y w xY w)Nr   r   )r   r   rbr   	generatorr#   )r   r   )r   r   r&  r'  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__  sd   '7#))$/!3EFF
 &&w7$

 D$% $668D$ $||~| )-(=(=!%

 "$	2;;w/D$!%D!1DJ**4::v>+ 4  -gfM $ $  " 	$ $2(4.9?$ADLMMO	$s/   D %D<6E +D98D9<E4E?>E?)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                 n   t         j                  | d      }t         j                  | d      }||v r#||   \  }}| j                  r,||d n |       }|S | j                  j                  |      }|S |d n |       }|dvr| j                  j                  ||      }|S t               }|}| j                  j                  d      }	|	r|dk(  r|	j                  d|      }nm|dk(  r&|	j                  d      }	|	rU|	j                  ||      }nB|	j                  d	      }	|	s| j                  j                  d	      }	|	r|	j                  ||      }||u r|}|S ||vrt         j                  | |      }|S | j                  r| j                  j                  |      }|S | j                  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   rp   commonmappedlkmakerresultrq   sentinelds
             r   rJ  zMetadata.__getattribute__  s   ((}=((}=&=sIB||:%*]TFD A "\\--b1F@ = !&57 . .!ZZ^^C7F6 1  &xH%F

|4A*,%&UU+<e%DF M1 !&6 7A )*sE): !&6 7A#$$(JJNN3C$D )*sE):)!&  ,,T37F
 	 \\\\%%c*F  ZZ^^C(Fr   c                     || j                   v rK| j                   |   \  }}|xs | j                  |vr&|j                  |      }|st        d|d|d      y y y )N'z' is an invalid value for the 'z
' property)SYNTAX_VALIDATORSr   matchr   )r   rp   rq   r   pattern
exclusionsms          r   _validate_valuezMetadata._validate_value  sq    $((("&"8"8"=GZ%$++j8MM%(.FKDG0I J J  9 )r   c                    | j                  ||       t        j                  | d      }t        j                  | d      }||v r||   \  }}| j                  r|t        || j                  |<   y |dvr|| j
                  |<   y | j
                  j                  di       }|dk(  r||d<   y |dk(  r|j                  di       }|||<   y |j                  d	i       }|||<   y ||vrt        j                  | ||       y |d
k(  r5t        |t              r%|j                         }|r|j                         }ng }| j                  r|| j                  |<   y || j
                  |<   y )NrB  rC  rD  rE  r>  rF  r?  rG  rH  r4  )rY  rI  rJ  r&  NotImplementedErrorr'  
setdefault__setattr__r   r	   r   r   )r   rp   rq   rK  rL  rM  ry   rQ  s           r   r]  zMetadata.__setattr__  sW   S%(((}=((}=&=3KEB||:--#(R  , ,"'

3 JJ)),;*$+0A'(M)%5r:A"AcF%5r:A"AcFtS%0j e\2!KKME % "||$)S!"'

3r   c                 D    t        | j                  | j                  d      S NT)r   r   rZ   r   s    r   name_and_versionzMetadata.name_and_version/  s    $TYYdCCr   c                     | j                   r| j                   d   }n| j                  j                  dg       }| j                  d| j                  d}||vr|j                  |       |S )Nr;   provides ())r&  r'  r\  r   rZ   r   )r   rO  ss      r   rb  zMetadata.provides3  sW    <<\\/2FZZ**:r:FDLL1F?MM!r   c                 Z    | j                   r|| j                   d<   y || j                  d<   y )Nr;   rb  )r&  r'  r   s     r   rb  zMetadata.provides>  s%    <<,1DLL)%*DJJz"r   c                    | j                   r|}|S g }t        |xs g | j                        }|D ]_  }d|vrd|vrd}n;d|vrd}n|j                  d      |v }|r|j                  d      }|rt	        ||      }|sL|j                  |d          a dD ]_  }d|z  }	|	|v s|j                  |	       | j                  j                  d|z  g       }|j                  | j                  |||             a |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:  r   r   extendrf   r'  get_requirements)
r   reqtsr:  rn  rO  rQ  includer_   rp   es
             r   rp  zMetadata.get_requirementsE  s    <<F< 9 F"dkk:F 1!#Q(>"Ga'"&"#%%.F":!"}!5!&/&<GMM!J-0!1" 0 BSL;MM!$ !JJNN=3+>CEMM$"7"7f<? #8 #A BB r   c                 R    | j                   r| j                         S | j                  S rM   )r&  _from_legacyr'  r   s    r   
dictionaryzMetadata.dictionaryo  s"    <<$$&&zzr   c                 f    | j                   rt        t        | j                  | j                        S rM   )r&  r[  r   r'  DEPENDENCY_KEYSr   s    r   dependencieszMetadata.dependenciesu  s&    <<%%!$**d.B.BCCr   c                 ^    | j                   rt        | j                  j                  |       y rM   )r&  r[  r'  r   r   s     r   ry  zMetadata.dependencies|  s!    <<%%JJe$r   c                 j   |j                  d      | j                  k7  r
t               g }| j                  j	                         D ]   \  }}||vs||vs|j                  |       " |rddj                  |      z  }t        |      |j	                         D ]  \  }}| j                  |||        y )Nr   zMissing metadata items: %sr   )	r   r.  r   MANDATORY_KEYSre   r   r   r   rY  )	r   r   r   r  rp   rW  r   r   r   s	            r   r,  zMetadata._validate_mapping  s    ;;)*d.C.CC244#2288: 	(OC'!+NN3'	( .71CCC&s++MMO 	/DAq  Av.	/r   c                     | j                   r;| j                   j                  d      \  }}|s|rt        j                  d||       y y | j	                  | j
                  | j                         y )NTz#Metadata: missing: %s, warnings: %s)r&  r  rg   r   r,  r'  r   )r   r  r  s      r   r-  zMetadata.validate  sZ    << $ 2 24 8GX(D&2 # ""4::t{{;r   c                     | j                   r| j                   j                  d      S t        | j                  | j                        }|S r_  )r&  r  r   r'  
INDEX_KEYS)r   rO  s     r   r  zMetadata.todict  s7    <<<<&&t,,#DJJ@FMr   c                    | j                   r| j                  rJ | j                  | j                  d}| j                   j	                  d      }dD ]  }||v s|dk(  rd}n|}||   ||<    |j                  dg       }|dgk(  rg }||d<   d	}|D ]  \  }}||v s||   sd
||   ig||<    | j                  |d<   i }i }	|S )Nr*  T)r   rZ   r3  r$  description
classifierr  r?  r,    r4  ))requires_distr5  )setup_requires_distr6  rj  rb  )r&  r'  r.  r/  r  r   rb  )
r   rO  lmdr   nkkwr`   okauthor
maintainers
             r   ru  zMetadata._from_legacy  s    ||DJJ.. $ 5 5
 ll!!$'  	$ACx$&BB Vr
	$ WWZ$":Bz; 	5FBSySW)3r734r
	5 "]]z
r   r'   r(   r0   r*   r+   r-   r.   r/   r3   )
r   rZ   )rE  rG  r3  r$  r  )rE  python.projectproject_urlsHome)rE  r  contactsr   r   )rE  r  r  r   emailr@  )rE  rG  r?  c                 J   d }| j                   r| j                  rJ t               }| j                   }| j                  j	                         D ]<  \  }}t        |t              s||v s||   ||<   $|}d}|D ]  }	 ||   }
 |s8|||<   >  || j                  | j                  z         }	 || j                  | j                  z         }
| j                  rt        | j                        |d<   t        |	      |d<   t        |
      |d<   |S # t        t        f$ r d}Y  w xY w)Nc                 $   t               }| D ]  }|j                  d      }|j                  d      }|d   }|D ]R  }|s|s|j                  |       d}|rd|z  }|r|r	d|d|}n|}|j                  dj                  ||f             T  |S )	Nrh  ri  rj  r  zextra == "%s"(z) and r   )r   r   addr   )entriesrq  rs  rh  rn  rlistr   r_   s           r   process_entriesz,Metadata._to_legacy.<locals>.process_entries  s    EE 9geeM** 9Au		!!# %4u%<F%:=v)F),		#((Av;"789	9" Lr   TFrC   r<   rA   )r'  r&  r   LEGACY_MAPPINGre   r   rV   r   
IndexErrorr5  r9  r6  r7  r:  sorted)r   r  rO  nmdr  r  rQ  foundr   r1r2s              r   
_to_legacyzMetadata._to_legacy  s5   	* zz$,,..!jj))//1 	#FBb%(9!$RF2J AaD !"F2J	# T..1C1CCDT0043D3DDE;;'-dkk':F#$"(*(.r
$% %j1  %s   <DD"!D"c                 (   ||gj                  d       dk7  rt        d      | j                          |rS| j                  r| j                  }n| j	                         }|r|j                  ||       y |j                  ||       y | j                  r| j                         }n| j                  }|rt        j                  ||ddd       y t        j                  |dd      5 }t        j                  ||ddd       d d d        y # 1 sw Y   y xY w)	Nr   z)Exactly one of path and fileobj is needed)r   Tr   )ensure_asciiindent	sort_keysr   r#   )r   rX   r-  r&  r  r   r   ru  r'  r1  dumpr   r   )r   r   r   r#  r   	legacy_mdrQ  rP   s           r   r   zMetadata.write  s    '?  &!+HII|| LL	 OO-	<@$$W<$H||%%'JJ		!W4$(* [[sG4 .IIaa(,.. . .s   $DDc                 :   | j                   r| j                   j                  |       y | j                  j                  dg       }d }|D ]  }d|vsd|vs|} n |d|i}|j	                  d|       y t        |d         t        |      z  }t        |      |d<   y )Nr5  ri  rh  rj  r   )r&  r  r'  r\  insertr   r  )r   r  r5  alwaysentryrsets         r   r  zMetadata.add_requirements  s    <<LL)),7::00DLF%  -'2F"F ~%|5##Av.6*-.\1BB%+D\z"r   c           	          | j                   xs d}| j                  xs d}d| j                  j                  d| j                  d|d|d	S )Nz	(no name)z
no versionr  r{   rc  z)>)r   rZ   r  r   r   )r   r   rZ   s      r   r  zMetadata.__repr__(  sD    yy'K,,.,$(NN$;$;$($9$94J 	Jr   r  rM   )NN)NNFT)0r   r   r   r   recompileMETADATA_VERSION_MATCHERINAME_MATCHERFIELDNAME_MATCHERr   VERSION_MATCHERSUMMARY_MATCHERr.  r   r/  r|  r  rx  rT  	__slots__r   r   rB  r   	none_listdict	none_dictrC  rJ  rY  r]  propertyr`  rb  setterrp  rv  ry  r,  r-  r  ru  r  r  r   r  r  r   r   r   r    r    b  s-     *rzz*:;2::A244HL"

#A244H'O bjj-O,I N!J/O
 6r:{+#[1#[1%{3 /I8<!+$Z KLKtItI )$/0$7!""#T*$d+,6K  	9)VJ%(N D D   __+ +(T  
 D D % %/<< 5>$BMAIBP$9EN0d.42"Jr   r    r   )Kr   
__future__r   r   r  r   r1  r   r  r  r   r   compatr   r	   r
   rb   r   utilr   r   rZ   r   r   	getLoggerr   rg   r   r   r   r   __all__r!   r"   r  r   r   rT   rU   rj   rN   rk   _426_FIELDS_426_MARKERSrW   rl   rm   rY   r   r   r   EXTRA_REr[   rw   r   r   r   re   r  r   r   r   r   r   r   r   rI  r   r}   r   r   METADATA_FILENAMEWHEEL_METADATA_FILENAMELEGACY_METADATA_FILENAMEr    )r   r  r   s   000r   <module>r     s_   (  #   	 , 5 5  , 2			8	$)+ )I, I+'7 +&+ & J   # 2::n- !rzz,/ 
' 73!4  B B -*L(e   ;    ;    ;    ;    ;    ; 2::?@4$DR 6A-1DJJLc"D( /:.?.?.AB{tUud{BH ' >
 $ C8BJJ'(	
%e-V e-P " ) % JJv JJe Cs   (G-G2