
    sh.                       S r SSKJr  SSKrSSKrSSKrSSKJr  SSKJ	r	  SSK
Jr  SSKJr  SSKJr  SS	KJrJr  SS
KJr  SSKJrJr  SSKJr  SSKJr  SSKJr  S rSAS jrSBS jr SBS jr!SCS jr"SDS jr#S r$S r%S r&S r'S r(SES jr)S r*S r+SFS jr,S r-0 S S _S!S"_S#S$_S%S&_S'S(_S)S*_S+S,_S-S-_S.S._S/S0_S1S2_S3S3_S4S5_S6S6_S7S8_S9S:_S;S;_S<S=S>S?S%S@.Er.g)Gz
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                H    [        U SS 5      nUc  [        S5      nXl        U$ )Nmetadata_versionz2.4)getattrr   r   )selfmvs     m/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/setuptools/_core_metadata.pyget_metadata_versionr      s*    	)4	0B	zU^ "I    c           
         U R                  5       n[        U5      S:X  a  US   R                  5       $ SR                  US   R                  5       [        R
                  " SR                  USS 5      5      45      $ )zFReverse RFC-822 escaping by removing leading whitespaces from content.r   r   
N)
splitlineslenlstripjointextwrapdedent)contentliness     r   rfc822_unescaper$   $   sc     E
5zQQx  99eAhoo'599M)NOPPr   c                    X   nUS:X  a  gU$ )zRead Message header field.UNKNOWNN msgfieldvalues      r   _read_field_from_msgr,   ,   s    JE	Lr   c                8    [        X5      nUc  U$ [        U5      $ )z4Read Message header field and apply rfc822_unescape.)r,   r$   r(   s      r   _read_field_unescaped_from_msgr.   4   s!     ,E}5!!r   c                8    U R                  US5      nU/ :X  a  gU$ )z9Read Message header field and return all results as list.N)get_all)r)   r*   valuess      r   _read_list_from_msgr2   <   s!    [[%F|Mr   c                p    [        U R                  5       5      R                  5       nUS:X  d  U(       d  g U$ )Nr&   )strget_payloadstrip)r)   r+   s     r   _read_payload_from_msgr7   D   s.    !"((*E	Lr   c                   [        U5      n[        US   5      U l        [        US5      U l        [        US5      U l        [        US5      U l        [        US5      U l        SU l        [        US5      U l	        SU l
        [        US5      U l        [        US	5      U l        [        US
5      U l        [        US5      U l        [        US5      U l        U R                   c)  U R                  [        S5      :  a  [#        U5      U l        [        US5      U l        SU;   a   [        US5      R%                  S5      U l        [)        US5      U l        [)        US5      U l        U R                  [        S5      :X  a4  [)        US5      U l        [)        US5      U l        [)        US5      U l        OSU l        SU l        SU l        [)        US5      U l        g)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,   r9   r:   rB   r<   
maintainerauthor_emailmaintainer_emailurldownload_urlr.   r@   license_expressionlong_descriptionr7   splitrC   r2   	platformsclassifiersrG   rH   rI   license_files)r   filer)   s      r   read_pkg_filerW   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U ;   a;  Sn[         R                  " SU5        U R                  5       R                  S5      S   n U $ )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   )r   emitr6   rR   )valr)   s     r   single_liner[   u   sD     s{ S$))*;SAiik%a(Jr   c                   Sn[         R                  R                  US5      n [        SSUSS9 nUR                  nU R                  U5        SSS5        [        R                  " [         R                  " U5      R                  5      n[         R                  " X%[        R                  -  [        R                  -  5        [         R                  " X#5        U(       a<  [         R                  R                  U5      (       a  [         R                  " U5        ggg! , (       d  f       N= f! U(       a<  [         R                  R                  U5      (       a  [         R                  " U5        f f f = f)z.Write the PKG-INFO file into the release tree. zPKG-INFOwzutf-8F)encodingdirdeleteN)ospathr   r   r9   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_infort      s    DGGLL:.E  g8ERVW66D" S ll288D>#9#9:
T\\1DLL@A


4BGGNN4((IIdO )4 SR BGGNN4((IIdO )4s$   D- DB
D- 
D*&D- -AE2c                P  ^ U R                  5       nU4S jnU" S[        U5      5        U" SU R                  5       5        U" SU R                  5       5        U R	                  5       nU(       a  U" S[        U5      5        SnU H  u  pg[        XS5      nUc  M  U" Xh5        M      U R                  =n	(       a
  U" SU	5        O)U R                  5       =n
(       a  U" S	[        U
5      5        U R                  R                  5        H  u  pU" S
U SU 35        M     SR                  U R                  5       5      nU(       a	  U" SU5        U R                  5       =(       d    / nU H  nU" SU5        M     U R                  TSU R!                  5       5        U R                  TSU R#                  5       5        U R                  TSU R%                  5       5        U R                  TSU R'                  5       5        [)        U S5      (       a  U" SU R*                  5        U R,                  (       a  U" SU R,                  5        [/        [0        U R2                  =(       d    / 5      nU R                  TSU5        [5        U T5        [6        R                  5        H5  u  pg[        XS5      =n(       d  M  [9        U5      (       a  M,  U" SU5        M7     U R;                  5       nU(       a=  TR=                  SU 35        UR?                  S5      (       d  TR=                  S5        ggg)z0Write the PKG-INFO format data to a file object.c                4   > TR                  U  SU S35        g )Nz: r   )write)keyr+   rV   s     r   write_field#write_pkg_file.<locals>.write_field   s    

cU"UG2&'r   zMetadata-VersionNamer   Summary))z	Home-pagerN   )zDownload-URLrO   )Authorr<   )zAuthor-emailrL   )
MaintainerrK   )zMaintainer-emailrM   NzLicense-ExpressionLicensezProject-URLz, rD   KeywordsPlatform
ClassifierRequiresProvides	Obsoletespython_requireszRequires-PythonzDescription-Content-TypezLicense-FileDynamicr   ) r   r4   get_nameget_versionget_descriptionr[   r   rP   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_filerU   _write_requirements_POSSIBLE_DYNAMIC_FIELDSr   get_long_descriptionrw   endswith)r   rV   r:   ry   r;   optional_fieldsr*   attrattr_valrP   r@   labelrN   rC   rS   rE   safe_license_filesrZ   rQ   s    `                 r   rd   rd      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/1C1C1IrJT>+=>d#/5574t,,C,inn	5) 8 002

R()*+((..JJt / r   c                   [         R                  " U R                  5       H  nUR                  SU S35        M     0 nU R                  R                  5        H  u  pEUR                  S5      u  pgnUR                  5       n[        R                  " U5      n	U	(       a  [        XX5        [         R                  " U5       H2  n[        X)UR                  5       5      n
UR                  SU
 S35        M4     M     U$ )NzRequires-Dist: r   :)r   parseinstall_requiresrw   extras_requirer   	partitionr6   r   
safe_extra_write_provides_extraparse_strings_include_extra)r   rV   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                    [        U 5      nUR                  (       a  SUR                   S3OS U(       a  SU S3OS U(       a  SU< 3OS 4n[        SR                  S U 5       5      5      Ul        U$ )N()z	extra ==  and c              3  6   #    U  H  o(       d  M  Uv   M     g 7fNr'   ).0xs     r   	<genexpr>!_include_extra.<locals>.<genexpr>   s     "9eq11es   
	)r   markerr   r   )r   r   r   r   partss        r   r   r      sj    CA88!AHH:Q%!I;a4!&)E9DE
 gll"9e"99:AHHr   c           
         UR                  U5      nXC:X  a$  [        R                  " SSU< SU< SU< S3SS9  g X1U'   U R                  SU S	35        g )
Nz8Ambiguity 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   )getr   rY   rw   )rV   r   safeunsafepreviouss        r   r   r      sr    ##D)H$))FLfZ ( 
 8	
 "(

%dV2./r   c                R    [        U R                  5       U R                  5       5      $ r   )_distribution_fullnamer   r   )r   s    r   get_fullnamer     s    !$--/43C3C3EFFr   c                h    SR                  [        U 5      R                  SS5      [        USS95      $ )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)formatr	   rl   r
   )r9   r:   s     r   r   r     s4     >>$''S1W%@ r   c                    [         R                  R                  U 5      R                  [         R                  S5      nSU;   a  [         R                  R                  U5      $ U$ )N/z../)rb   rc   normpathrl   sepbasename)rV   
normalizeds     r   r   r   )  sJ    !!$'//<J
ww
++r   r<   r=   rL   rF   rT   rB   rQ   zdescription-content-typer   r?   rO   r>   rN   rC   r@   rJ   rU   rA   rP   rK   zmaintainer-emailrM   rI   rE   rS   zproject-urlr   rH   r   rG   r   r   )zprovides-extrarG   zrequires-distzrequires-pythonr;   )r"   r4   returnr4   )r)   r   r*   r4   r   
str | None)r)   r   r*   r4   r   zlist[str] | None)r)   r   r   r   )r   r4   r   r4   r   r4   r   r   )r9   r4   r:   r4   r   r4   )/__doc__
__future__r   rb   re   r    emailr   email.messager   tempfiler   packaging.markersr   packaging.requirementsr   packaging.utilsr	   r
   packaging.versionr   r]   r   r   _staticr   warningsr   distutils.utilr   r   r$   r,   r.   r2   r7   rW   r[   rt   rd   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   