+
     h.  c                  s   R t ^ RIHt ^ RIt^ RIt^ RIt^ RIHt ^ RIH	t	 ^ RI
Ht ^ RIHt ^ RIHt ^ RIHtHt ^ R	IHt ^R
IHtHt ^RIHt ^RIHt ^ RIHt R tR R ltR R lt R R lt!R R lt"R R lt#R t$R t%R t&R t'R t(R R lt)R  t*R! t+R" R# lt,R$ t-/ R%R%bR&R'bR(R)bR*R+bR,R-bR.R/bR0R1bR2R2bR3R3bR4R5bR6R7bR8R8bR9R:bR;R;bR<R=bR>R?bR@R@bRARBRCRCRDRERFRGRHR*/Ct.R# )Iz
Handling of Core Metadata for Python packages (including reading and writing).

See: https://packaging.python.org/en/latest/specifications/core-metadata/
)annotationsN)message_from_file)Message)NamedTemporaryFile)Marker)Requirement)canonicalize_namecanonicalize_version)Version)_normalization_reqs)	is_static)SetuptoolsDeprecationWarning)rfc822_escapec                sJ    \        V R R4      pVf   \        R4      pWn        V# )metadata_versionNz2.4)getattrr   r   )selfZmv   & >/usr/lib/python3.14/site-packages/setuptools/_core_metadata.pyget_metadata_versionr      s*    	)4	0B	zU^ "I    c               s     V ^8  d   QhRRRR/# )   contentstrreturn format   "r   __annotate__r   $   s     Q QS QS Qr   c           	     s   V P                  4       p\        V4      ^8X  d   V^ ,          P                  4       # RP                  V^ ,          P                  4       \        P
                  ! RP                  VR,          4      4      34      # )zFReverse RFC-822 escaping by removing leading whitespaces from content.
:i   NN)Z
splitlinesZlenZlstripjointextwrapZdedent)r   Zlinesr   r   rfc822_unescaper!   $   sa     E
5zQQx  99eAhoo'599M)NOPPr   c               $    V ^8  d   QhRRRRRR/# r   msgr   fieldr   r   
str | Noner   r   r   r   r   r   ,   s!      g c j r   c                s(    W,          pVR8X  d   R# V# )zRead Message header field.UNKNOWNNr   r$   r%   value   && r   _read_field_from_msgr+   ,   s    JE	Lr   c               r"   r#   r   r   r   r   r   r   4   s!     " " " "
 "r   c                s:    \        W4      pVf   V# \        V4      # )z4Read Message header field and apply rfc822_unescape.)r+   r!   r(   r*   r   _read_field_unescaped_from_msgr,   4   s!     ,E}5!!r   c               r"   )r   r$   r   r%   r   r   zlist[str] | Noner   r   r   r   r   r   <   s"      W S 5E r   c                s<    V P                  VR4      pV. 8X  d   R# V# )z9Read Message header field and return all results as list.N)Zget_all)r$   r%   Zvaluesr*   r   _read_list_from_msgr-   <   s!    [[%F|Mr   c               s     V ^8  d   QhRRRR/# )r   r$   r   r   r&   r   r   r   r   r   r   D   s       J r   c                sv    \        V P                  4       4      P                  4       pVR 8X  g	   V'       g   R# V# )r'   N)r   Zget_payloadstrip)r$   r)   r   r   _read_payload_from_msgr/   D   s.    !"((*E	Lr   c                s   \        V4      p\        VR,          4      V n        \        VR4      V n        \        VR4      V n        \        VR4      V n        \        VR4      V n        RV n        \        VR4      V n	        RV n
        \        VR4      V n        \        VR	4      V n        \        VR
4      V n        \        VR4      V n        \        VR4      V n        V P                   f+   V P                  \        R4      8  d   \#        V4      V n        \        VR4      V n        RV9   d!   \        VR4      P%                  R4      V n        \)        VR4      V n        \)        VR4      V n        V P                  \        R4      8X  d5   \)        VR4      V n        \)        VR4      V n        \)        VR4      V n        MRV n        RV n        RV n        \)        VR4      V n        R# )z-Reads the metadata values from a file object.zmetadata-versionnameversionsummaryauthorNauthor-email	home-pagedownload-urllicenselicense-expressiondescriptionz2.1keywords,platform
classifierz1.1requiresprovides	obsoleteslicense-file)r   r   r   r+   r0   r1   r9   r3   
maintainerauthor_emailmaintainer_emailurldownload_urlr,   r7   license_expressionlong_descriptionr/   splitr:   r-   	platformsclassifiersr>   r?   r@   license_files)r   filer$   r*   r   read_pkg_filerN   K   s   
D
!C#C(:$;<D$S&1DI'Y7DL+C;D&sH5DKDO,S.AD D#C5DH,S.AD1#yADL<SBVWD:3ND$)>)>'%.)P 6s ;+C;DS,S*=CCCH(j9DN*3=D .+C<+C<,S+>,S.ADr   c                s    RV 9   d@   Rp\         P                  ! RV4       V P                  4       P                  R4      ^ ,          p V # )z>
Quick and dirty validation for Summary pypa/setuptools#1390.
r   zBnewlines are not allowed in `summary` and will break in the futurezInvalid config.)r   emitr.   rI   )valr$   r   r   single_linerQ   u   sD     s{ S$))*;SAiik%a(Jr   c                s"   Rp\         P                  P                  VR4      p \        RRVRR7      ;_uu_ 4       pVP                  pV P                  V4       RRR4       \        P                  ! \         P                  ! V4      P                  4      p\         P                  ! W%\        P                  ,          \        P                  ,          4       \         P                  ! W#4       V'       d@   \         P                  P                  V4      '       d   \         P                  ! V4       R# R# R#   + '       g   i     L; i  T'       d>   \         P                  P                  T4      '       d   \         P                  ! T4       i i i ; i)z.Write the PKG-INFO file into the release tree. zPKG-INFOZwzutf-8F)ZencodingZdirZdeleteN)ospathr   r   r0   write_pkg_filestatZS_IMODEZlstatZst_modeZchmodZS_IRGRPZS_IROTHreplaceZexistsZremove)r   Zbase_dirZtempZfinalZfZpermissionss   &&    r   write_pkg_inforX      s    DGGLL:.E  g8ERRVW66D" S ll288D>#9#9:
T\\1DLL@A


4BGGNN4((IIdO )4 SR BGGNN4((IIdO )4s)   E D4BE 4E	?E -F5Fc                sp  a V P                  4       pV3R lpV! R\        V4      4       V! RV P                  4       4       V! RV P                  4       4       V P	                  4       pV'       d   V! R\        V4      4       RpV F  w  rg\        WR4      pVf   K  V! Wh4       K!  	  V P                  ;p	'       d   V! RV	4       M*V P                  4       ;p
'       d   V! R\        V
4      4       V P                  P                  4        F  w  rV! R	V R
V 24       K  	  RP                  V P                  4       4      pV'       d
   V! RV4       V P                  4       ;'       g    . pV F  pV! RV4       K  	  V P                  SRV P!                  4       4       V P                  SRV P#                  4       4       V P                  SRV P%                  4       4       V P                  SRV P'                  4       4       \)        V R4      '       d   V! RV P*                  4       V P,                  '       d   V! RV P,                  4       \/        \0        V P2                  ;'       g    . 4      pV P                  SRV4       \5        V S4       \6        P                  4        F7  w  rg\        WR4      ;p'       g   K  \9        V4      '       d   K.  V! RV4       K9  	  V P;                  4       pV'       dA   SP=                  RV 24       VP?                  R4      '       g   SP=                  R4       R# R# R# )z0Write the PKG-INFO format data to a file object.c                s6   < SP                  V  R V R24       R# )z: r   N)write)Zkeyr)   rM   s   &&r   write_fieldZ#write_pkg_file.<locals>.write_field   s    

cU"UG2&'r   zMetadata-VersionZNamer   ZSummaryNzLicense-ExpressionZLicensezProject-URLz, r;   ZKeywordsZPlatformZ
ClassifierZRequiresZProvidesZ	Obsoletespython_requireszRequires-PythonzDescription-Content-TypezLicense-FileZDynamicr   ))z	Home-pagerE   )zDownload-URLrF   )ZAuthorr3   )zAuthor-emailrC   )Z
MaintainerrB   )zMaintainer-emailrD   ) r   r   get_nameget_versionZget_descriptionrQ   r   rG   Zget_licenser   project_urlsitemsr   Zget_keywordsZget_platformsZ_write_listZget_classifiersZget_requiresZget_providesZget_obsoletesZhasattrr[   long_description_content_typeZmap_safe_license_filerL   _write_requirements_POSSIBLE_DYNAMIC_FIELDSr   Zget_long_descriptionrY   Zendswith)r   rM   r1   rZ   r2   Zoptional_fieldsr%   ZattrZattr_valrG   r7   ZlabelrE   r:   rJ   r<   Zsafe_license_filesrP   rH   s   &f                 r   rU   rU      s   '')G( "CL1(	4++-.""$GI{734O '4t,( '
 "4444(*<=$$&	&	&I}W56''--/
MeWBse#45 0 xx))+,HJ)""$**IJ)  	T<)=)=)?@ 	T:t'8'8':;T:t'8'8':;T;(:(:(<= t&''%t';';< ))).0R0RS/1C1C1I1IrJT>+=>d#/5574t,,C,,inn	5) 8 002

R()*+((..JJt / r   c                s   \         P                  ! V P                  4       F  pVP                  R V R24       K  	  / pV P                  P                  4        F  w  rEVP                  R4      w  rgpVP                  4       p\        P                  ! V4      p	V	'       d   \        WW4       \         P                  ! V4       F2  p\        W)VP                  4       4      p
VP                  R V
 R24       K4  	  K  	  V# )zRequires-Dist: r   Z:)r
   Zparseinstall_requiresrY   extras_requirer_   Z	partitionr.   r	   Z
safe_extra_write_provides_extraZparse_strings_include_extra)r   rM   reqprocessed_extrasZaugmented_extraZreqsZunsafe_extra_	conditionextrars   &&         r   rb   rb      s    {{4001

_SE,- 2 !%!4!4!:!:!<%4%>%>s%C"#))+)),7!$%N&&t,Cs9??+<=AJJ2./ - "= r   c               s(    V ^8  d   QhRRRRRRRR/# )r   rh   r   rl   rk   r   r   r   r   r   r   r   r      s(       C C K r   c                s    \        V 4      pVP                  '       d   R VP                   R2MRV'       d   R V R2MRV'       d   RV: 2MR3p\        RP                  R V 4       4      4      Vn        V# )Z(Z)Nz	extra ==  and c              3  s8   "   T F  q'       g   K  Vx  K  	  R # 5iNr   )Z.0Zxr   r   Z	<genexpr>Z!_include_extra.<locals>.<genexpr>   s     "9eq11es   	
)r   Zmarkerr   r   )rh   rl   rk   rm   Zpartss   &&&  r   rg   rg      sl    CA888!AHH:Q%!I;a4!&)E9DE
 gll"9e"99:AHHr   c           
     s    VP                  V4      pWC8X  d)   \        P                  ! R RV: RV: RV: R2RR7       R	# W1V&   V P                  RV R24       R	# )
z8Ambiguity during "extra" normalization for dependencies.z
            rn   z/ normalize to the same value:

                zW

            In future versions, setuptools might halt the build process.
            z!https://peps.python.org/pep-0685/)Zsee_urlzProvides-Extra: r   N)Zgetr   rO   rY   )rM   ri   ZsafeZunsafeZpreviouss   &&&& r   rf   rf      sr    ##D)H$))FLfZ ( 
 8	
 "(

%dV2./r   c                sR    \        V P                  4       V P                  4       4      # ro   )_distribution_fullnamer\   r]   )r   s   &r   get_fullnamerq     s    !$--/43C3C3EFFr   c               s$    V ^8  d   QhRRRRRR/# )r   r0   r   r1   r   r   r   r   r   r   r     s!       s s r   c                sn    RP                  \        V 4      P                  RR4      \        VRR7      4      # )a  
>>> _distribution_fullname('setup.tools', '1.0-2')
'setup_tools-1.0.post2'
>>> _distribution_fullname('setup-tools', '1.2post2')
'setup_tools-1.2.post2'
>>> _distribution_fullname('setup-tools', '1.0-r2')
'setup_tools-1.0.post2'
>>> _distribution_fullname('setup.tools', '1.0.post')
'setup_tools-1.0.post0'
>>> _distribution_fullname('setup.tools', '1.0+ubuntu-1')
'setup_tools-1.0+ubuntu.1'
z{}-{}Z-rj   F)Zstrip_trailing_zero)r   r   rW   r   )r0   r1   s   &&r   rp   rp     s4     >>$''S1W%@ r   c                s    \         P                  P                  V 4      P                  \         P                  R 4      pRV9   d    \         P                  P                  V4      # V# )Z/z../)rS   rT   ZnormpathrW   ZsepZbasename)rM   Z
normalizedr   r   ra   ra   )  sJ    !!$'//<J
ww
++r   r3   r4   rC   r=   rK   r9   rH   zdescription-content-typer`   r6   rF   r5   rE   r:   r7   rA   rL   r8   rG   rB   zmaintainer-emailrD   r@   r<   rJ   zproject-urlr^   r?   zprovides-extrare   r>   zrequires-distrd   zrequires-pythonr[   r2   )/Z__doc__Z
__future__r    rS   rV   r    Zemailr   Zemail.messager   Ztempfiler   Zpackaging.markersr   Zpackaging.requirementsr   Zpackaging.utilsr   r   Zpackaging.versionr   rR   r	   r
   Z_staticr   Zwarningsr   Zdistutils.utilr   r   r!   r+   r,   r-   r/   rN   rQ   rX   rU   rb   rg   rf   rq   rp   ra   rc   r   r   r   <module>rr      s   # 	   # ! ' $ . C % #  2 (Q"'BT&HV(0$G& h  N  -	 
 %   ?  N    
  y  O   .! " ,# $ *% & ' * + , >- . 
/ 2 &
'(}=  r   