+
    =i.                       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                J    \        V R R4      pVf   \        R4      pWn        V# )metadata_versionNz2.4)getattrr
   r   )selfmvs   & 9lib/python3.14/site-packages/setuptools/_core_metadata.pyget_metadata_versionr      s*    	)4	0B	zU^ "I    c                    V ^8  d   QhRRRR/# )   contentstrreturn )formats   "r   __annotate__r   $   s     Q QS QS Qr   c           	        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.
:   NN)
splitlineslenlstripjointextwrapdedent)r   liness   & 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   s   "r   r   r   ,   s!      g c j r   c                (    W,          pVR8X  d   R# V# )zRead Message header field.UNKNOWNNr   r-   r.   values   && r   _read_field_from_msgr4   ,   s    JE	Lr   c               $    V ^8  d   QhRRRRRR/# r,   r   )r   s   "r   r   r   4   s!     " " " "
 "r   c                :    \        W4      pVf   V# \        V4      # )z4Read Message header field and apply rfc822_unescape.)r4   r*   r2   s   && r   _read_field_unescaped_from_msgr7   4   s!     ,E}5!!r   c               $    V ^8  d   QhRRRRRR/# )r   r-   r   r.   r   r   zlist[str] | Noner   )r   s   "r   r   r   <   s"      W S 5E r   c                <    V P                  VR4      pV. 8X  d   R# V# )z9Read Message header field and return all results as list.N)get_all)r-   r.   valuess   && r   _read_list_from_msgr<   <   s!    [[%F|Mr   c                    V ^8  d   QhRRRR/# )r   r-   r   r   r/   r   )r   s   "r   r   r   D   s       J r   c                v    \        V P                  4       4      P                  4       pVR 8X  g	   V'       g   R# V# )r1   N)r   get_payloadstrip)r-   r3   s   & r   _read_payload_from_msgrA   D   s.    !"((*E	Lr   c                   \        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   r4   rC   rD   rL   rF   
maintainerauthor_emailmaintainer_emailurldownload_urlr7   rJ   license_expressionlong_descriptionrA   splitrM   r<   	platformsclassifiersrQ   rR   rS   license_files)r   filer-   s   && r   read_pkg_filera   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                    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@   r\   )valr-   s   & r   single_linere   u   sD     s{ S$))*;SAiik%a(Jr   c                "   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-INFOwzutf-8F)encodingdirdeleteN)ospathr&   r   rC   write_pkg_filestatS_IMODElstatst_modechmodS_IRGRPS_IROTHreplaceexistsremove)r   base_dirtempfinalfpermissionss   &&    r   write_pkg_infor~      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                p  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                6   < SP                  V  R V R24       R# )z: r!   N)write)keyr3   r`   s   &&r   write_field#write_pkg_file.<locals>.write_field   s    

cU"UG2&'r   zMetadata-VersionNamer
   SummaryNzLicense-ExpressionLicensezProject-URLz, rN   KeywordsPlatform
ClassifierRequiresProvides	Obsoletespython_requireszRequires-PythonzDescription-Content-TypezLicense-FileDynamicr!   ))z	Home-pagerX   )zDownload-URLrY   )AuthorrF   )zAuthor-emailrV   )
MaintainerrU   )zMaintainer-emailrW   ) r   r   get_nameget_versionget_descriptionre   r   rZ   get_licenser   project_urlsitemsr&   get_keywordsget_platforms_write_listget_classifiersget_requiresget_providesget_obsoleteshasattrr   long_description_content_typemap_safe_license_filer_   _write_requirements_POSSIBLE_DYNAMIC_FIELDSr   get_long_descriptionr   endswith)r   r`   rD   r   rE   optional_fieldsr.   attrattr_valrZ   rJ   labelrX   rM   r]   rO   safe_license_filesrd   r[   s   &f                 r   rn   rn      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                   \         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!   :)r   parseinstall_requiresr   extras_requirer   	partitionr@   r   
safe_extra_write_provides_extraparse_strings_include_extra)r   r`   reqprocessed_extrasaugmented_extrareqsunsafe_extra_	conditionextrars   &&         r   r   r      s    {{4001

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

                zW

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

%dV2./r   c                R    \        V P                  4       V P                  4       4      # r   )_distribution_fullnamer   r   )r   s   &r   get_fullnamer     s    !$--/43C3C3EFFr   c               $    V ^8  d   QhRRRRRR/# )r   rC   r   rD   r   r   )r   s   "r   r   r     s!       s s r   c                n    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{}-{}-r   F)strip_trailing_zero)r   r   rv   r	   )rC   rD   s   &&r   r   r     s4     >>$''S1W%@ r   c                    \         P                  P                  V 4      P                  \         P                  R 4      pRV9   d    \         P                  P                  V4      # V# )/z../)rl   rm   normpathrv   sepbasename)r`   
normalizeds   & r   r   r   )  sJ    !!$'//<J
ww
++r   rF   rG   rV   rP   r^   rL   r[   zdescription-content-typer   rI   rY   rH   rX   rM   rJ   rT   r_   rK   rZ   rU   zmaintainer-emailrW   rS   rO   r]   zproject-urlr   rR   zprovides-extrar   rQ   zrequires-distr   zrequires-pythonr   rE   )/__doc__
__future__r   rl   ro   r'   emailr   email.messager   tempfiler   packaging.markersr   packaging.requirementsr   packaging.utilsr   r	   packaging.versionr
   rg   r   r   _staticr   warningsr   distutils.utilr   r   r*   r4   r7   r<   rA   ra   re   r~   rn   r   r   r   r   r   r   r   r   r   r   <module>r      s   # 	   # ! ' $ . C % #  2 (Q"'BT&HV(0$G& h  N  -	 
 %   ?  N    
  y  O   .! " ,# $ *% & ' * + , >- . 
/ 2 &
'(}=  r   