ó
    EñiÊ.  ã                  ó®  • 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     ÚV/home/mande/repo/quber/.venv/lib/python3.13/site-packages/setuptools/_core_metadata.pyÚget_metadata_versionr      s*   € Ü	�Ð)¨4Ó	0€BØ	�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Ü
ˆ5ƒz�QƒØ�Q‰x�‰Ó Ð Ø�9‰9�e˜A‘h—o‘oÓ'¬¯ª¸¿¹À5ÈÈÀ9Ó9MÓ)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   € à‰J€EØ�	ÓØØ€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¨&Ó1€D„IÜ'¨¨YÓ7€D„LÜ+¨C°Ó;€DÔä& s¨HÓ5€D„KØ€D„OÜ,¨S°.ÓA€DÔØ €DÔÜ# C¨Ó5€D„HÜ,¨S°.ÓA€DÔÜ1°#°yÓA€D„LÜ<¸SÐBVÓW€DÔä:¸3ÀÓN€DÔØ×ÑÑ$¨×)>Ñ)>Ä'È%Ã.Ó)PÜ 6°sÓ ;ˆÔÜ+¨C°Ó;€DÔà�SÓÜ,¨S°*Ó=×CÑCÀCÓHˆŒä(¨¨jÓ9€D„NÜ*¨3°Ó=€DÔð ×Ñ¤¨£Ó.Ü+¨C°Ó<ˆŒÜ+¨C°Ó<ˆŒÜ,¨S°+Ó>ˆ�àˆŒØˆŒØˆŒä,¨S°.ÓA€DÕ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à�i‰i‹k×Ñ Ó% 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Ü�G‰G�L‰L˜ :Ó.€Eðô   ¨g¸8ÈEÒRÐVWØ—6‘6ˆDØ×Ñ Ô"÷ Sô —l’l¤2§8¢8¨D£>×#9Ñ#9Ó:ˆÜ
�Š�¤T§\¡\Ñ1´D·L±LÑ@ÔAÜ
�
Š
�4Ôæ”B—G‘G—N‘N 4×(Ñ(Ü�IŠI�d�Oð )ˆ4÷ SÕRûö ”B—G‘G—N‘N 4×(Ñ(Ü�IŠI�d�Oð )ˆ4ús$   ¤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  p¼U" 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   ø€ Ø�
‰
�c�U˜"˜U˜G 2Ð&Õ'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ó '‰ˆÜ˜4 tÓ,ˆØÓÙ˜Ö(ñ 'ð
 "×4Ñ4Ð4ÐÕ4ÙÐ(Ð*<Õ=Ø×$Ñ$Ó&Ð	&ˆÕ	&Ù�Iœ}¨WÓ5Ô6à×'Ñ'×-Ñ-Ö/‰
ˆÙ�M e W¨B¨s¨eÐ#4Ö5ñ 0ð �x‰x˜×)Ñ)Ó+Ó,€HÞÙ�J Ô)à×"Ñ"Ó$×*¨€IÛˆÙ�J Ö)ñ ð 	×Ñ�T˜<¨×)=Ñ)=Ó)?Ô@ð 	×Ñ�T˜: t×'8Ñ'8Ó':Ô;Ø×Ñ�T˜: t×'8Ñ'8Ó':Ô;Ø×Ñ�T˜;¨×(:Ñ(:Ó(<Ô=ô ˆtÐ&×'Ñ'ÙÐ% t×';Ñ';Ô<ð ×)×)ÙÐ.°×0RÑ0RÔSäÔ/°×1CÑ1C×1IÀrÓJÐØ×Ñ�T˜>Ð+=Ô>Ü˜˜dÔ#ä/×5Ñ5Ö7‰ˆÜ˜4 tÓ,Ð,ˆC×,´iÀ·n³nÙ˜	 5Ö)ñ 8ð ×0Ñ0Ó2ÐÞØ�
‰
�RÐ(Ð)Ð*Ô+Ø×(Ñ(¨×.Ñ.Ø�J‰J�tÕð /ð 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X–5        [         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ˆØ�
‰
�_ S E¨Ð,Ö-ñ 2ð ÐØ!%×!4Ñ!4×!:Ñ!:Ö!<Ñˆà%4×%>Ñ%>¸sÓ%CÑ"ˆ˜Ø#×)Ñ)Ó+ˆÜ×)Ò)¨,Ó7ˆæÜ! $¸%ÔNÜ×&Ò& tÖ,ˆCÜ˜s¨9¯?©?Ó+<Ó=ˆAØ�J‰J˜¨¨¨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   é € Ð"9ªe¨³q§1¡1ªeùs   ‚
�	)r   Úmarkerr   r   )r¬   r³   r²   r´   Úpartss        r   r«   r«   õ   sj   € Ü�CÓ€AàŸ8Ÿ8ˆ!ˆA�H‰Hˆ:�Q‰¨Þ%ˆ!ˆIˆ;�aÑ¨4Þ!&ˆ)�E‘9Ñ¨Dð€Eô
 �g—l‘lÑ"9©eÓ"9Ó9Ó:€A„HØ€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˜˜f™Zð (Ø‘ð ðð
 8ó	
ð "(˜ÑØ�
‰
Ð% d V¨2Ð.Õ/r   c                óR   • [        U R                  5       U R                  5       5      $ rº   )Ú_distribution_fullnamerˆ   r‰   )r   s    r   Úget_fullnamerÉ     s   € Ü! $§-¡-£/°4×3CÑ3CÓ3EÓ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Ø�
ÓÜ�w‰w×Ñ 
Ó+Ð+ØÐ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   