Ë
    -Tbj©s  ã                  ó¸  — d Z ddlmZ ddlZddlZddlZddlmZ ddlm	Z	 ddl
mZ ddlZddlmZ ddlmZ ddlZdd	lmZ dd
lmZ ddlmZmZmZ ddlmZmZ ddlmZ ddlm Z m!Z! ddl"m#Z#m$Z$ ddl%m&Z&m'Z'  e	e(«      jR                  Z*dZ+d„ Z,d„ Z-ej\                  j_                  d e'e*e+z  «      «      ej\                  ja                  d«      ej\                  jb                  d„ «       «       «       Z2dZ3dZ4dZ5dZ6dZ7de3fd„Z8d„ Z9ej\                  j_                  d g d!¢«      d"„ «       Z:d#„ Z;d$„ Z<ej\                  j_                  d% ejz                  e3d&d'¬(«       ejz                  e4d)ej\                  j}                  d*d+¬,«      d-¬.«      f«      d/„ «       Z?ej\                  j_                  d0 ejz                  e6d1dd2d3d4ej\                  ja                  d5«      g¬6«       ejz                  e7dd7d8d9d:¬(«      f«      d;„ «       Z@d<„ ZAd=„ ZB G d>„ d?«      ZC G d@„ dA«      ZD G dB„ dC«      ZE G dD„ dE«      ZF G dF„ dG«      ZG G dH„ dI«      ZH G dJ„ dK«      ZI G dL„ dM«      ZJdOdN„ZKy)PzÍMake sure that applying the configuration from pyproject.toml is equivalent to
applying a similar configuration from setup.cfg

To run these tests offline, please have a look on ``./downloads/preload.py``
é    )ÚannotationsN)Úcleandoc)ÚPath)ÚMock)ÚLiteTranslator)ÚMetadata)Ú	is_static)Úwrite_requirements)ÚexpandÚpyprojecttomlÚsetupcfg)Ú_MissingDynamicÚ_some_attrgetter©ÚDistribution)ÚInvalidConfigErrorÚRemovedConfigError)ÚInformationOnlyÚSetuptoolsDeprecationWarningé   )Úretrieve_fileÚurls_from_filezsetupcfg_examples.txtc                ó    — t        d| i|¥«      S )NÚsrc_rootr   )ÚpathÚattrss     úc/var/www/html/venv/lib/python3.12/site-packages/setuptools/tests/config/test_apply_pyprojecttoml.pyÚmakedistr   #   s   € Ü˜ TÐ3¨UÐ3Ó4Ð4ó    c           	     ó~   — | D �cg c]-  }t        j                  dd|t         j                  ¬«      xs d‘Œ/ c}S c c}w )z„
    Allow comparing the given patterns for 2 dist objects.
    We need to strip special chars to avoid errors when validating.
    z
[^a-z0-9]+Ú )ÚflagsÚempty)ÚreÚsubÚ
IGNORECASE)ÚpatternsÚ_Ú__Úps       r   Ú_mock_expand_patternsr+   '   s>   € ð NVöØHIŒ�‰ˆ|˜R ¬"¯-©-Ô8ÒC¸GÑCòð ùò s   …2:ÚurlÚignorec           	     ó¦  — |j                  t        dt        d¬«      «       |j                  t        dt        t        ¬«      «       t        | «      }t        |d«      }|j                  d¬«      }t        «       j                  |d	«      }|j                  |d¬«       t        j                  t        |«      |«      }t        j                  t        |«      |«      }t        |«      }	t        |«      }
|	|
k(  sJ ‚t!        d
„ ||fD «       «      r-t#        |j$                  «      t#        |j$                  «      k(  sJ ‚t!        d„ ||fD «       «      rœt'        |j(                  «       |j(                  j+                  «       D ��ch c]  \  }}|gt-        d„ |D «       «      ¢­’Œ }}}|j(                  j+                  «       D ��ch c]  \  }}|gt-        d„ |D «       «      ¢­’Œ }}}||k(  sJ ‚t!        d„ ||fD «       «      ry|j.                  j+                  «       D ��ch c]  \  }}|gt-        |«      ¢­’Œ }}}|j.                  j+                  «       D ��ch c]  \  }}|gt-        |«      ¢­’Œ }}}||k(  sJ ‚t!        d„ ||fD «       «      r]|j0                  D ��ch c]  \  }}|gt-        |«      ¢­’Œ }}}|j0                  D ��ch c]  \  }}|gt-        |«      ¢­’Œ }}}||k(  sJ ‚t#        |j2                  «      t#        |j2                  «      k(  sJ ‚t!        d„ ||fD «       «      rz|j4                  j+                  «       D ��ch c]  \  }}|gt-        |«      ¢­’Œ }}}|j4                  j+                  «       D ��ch c]  \  }}|gt-        |«      ¢­’Œ }}}||k(  sJ ‚y y c c}}w c c}}w c c}}w c c}}w c c}}w c c}}w c c}}w c c}}w )NÚ	read_attrz0.0.1)Úreturn_valueÚ_expand_patterns)Úside_effectúpyproject.tomlúutf-8©Úencodingz	setup.cfgc              3  ó6   K  — | ]  }t        |d d«      –— Œ y­w)Úlicense_filesN©Úgetattr©Ú.0Úds     r   ú	<genexpr>z>test_apply_pyproject_equivalent_to_setupcfg.<locals>.<genexpr>F   s   è ø€ Ò
L°Œ7�1�o t×,Ñ
Lùó   ‚c              3  ó6   K  — | ]  }t        |d d«      –— Œ y­w)Úentry_pointsNr9   r;   s     r   r>   z>test_apply_pyproject_equivalent_to_setupcfg.<locals>.<genexpr>I   ó   è ø€ Ò
K°Œ7�1�n d×+Ñ
Kùr?   c              3  ó@   K  — | ]  }|j                  d d«      –— Œ y­w©ú r!   N©Úreplace©r<   Úis     r   r>   z>test_apply_pyproject_equivalent_to_setupcfg.<locals>.<genexpr>L   ó   è ø€ Ò6¨q˜Ÿ	™	 # r×*Ñ6ùó   ‚c              3  ó@   K  — | ]  }|j                  d d«      –— Œ y­wrD   rF   rH   s     r   r>   z>test_apply_pyproject_equivalent_to_setupcfg.<locals>.<genexpr>P   rJ   rK   c              3  ó6   K  — | ]  }t        |d d«      –— Œ y­w)Úpackage_dataNr9   r;   s     r   r>   z>test_apply_pyproject_equivalent_to_setupcfg.<locals>.<genexpr>U   rB   r?   c              3  ó6   K  — | ]  }t        |d d«      –— Œ y­w)Ú
data_filesNr9   r;   s     r   r>   z>test_apply_pyproject_equivalent_to_setupcfg.<locals>.<genexpr>Z   s   è ø€ Ò
I¨aŒ7�1�l D×)Ñ
Iùr?   c              3  ó6   K  — | ]  }t        |d d«      –— Œ y­w)Úextras_requireNr9   r;   s     r   r>   z>test_apply_pyproject_equivalent_to_setupcfg.<locals>.<genexpr>`   s   è ø€ Ò
M°!Œ7�1Ð&¨×-Ñ
Mùr?   )Úsetattrr   r   r   r+   r   r   Ú	read_textr   Ú	translateÚ
write_textr   Úapply_configurationr   r   Úcore_metadataÚanyÚsetr8   ÚprintrA   ÚitemsÚsortedrN   rP   Úinstall_requiresrR   )r,   ÚmonkeypatchÚtmp_pathÚsetupcfg_exampleÚpyproject_exampleÚsetupcfg_textÚtoml_configÚ	dist_tomlÚdist_cfgÚpkg_info_tomlÚpkg_info_cfgÚkÚvÚep_tomlÚep_cfgÚpkg_data_tomlÚpkg_data_cfgÚdata_files_tomlÚdata_files_cfgÚextra_req_tomlÚextra_req_cfgs                        r   Ú+test_apply_pyproject_equivalent_to_setupcfgrs   1   s‘  € ð ×Ñœ ¬T¸wÔ-GÔHØ×ÑÜÐ(¬$Ô;PÔ*Qôô % SÓ)ÐÜ˜XÐ'7Ó8ÐØ$×.Ñ.¸Ð.Ó@€MÜ Ó"×,Ñ,¨]¸KÓH€KØ× Ñ  °wÐ Ô?ä×1Ñ1´(¸8Ó2DÐFWÓX€IÜ×+Ñ+¬H°XÓ,>Ð@PÓQ€Hä! )Ó,€MÜ  Ó*€LØ˜LÒ(Ð(Ð(ä
Ñ
L°yÀ(Ð6KÔ
LÔLÜ�9×*Ñ*Ó+¬s°8×3IÑ3IÓ/JÒJÐJÐJä
Ñ
K°iÀÐ5JÔ
KÔKÜˆh×#Ñ#Ô$ð "×.Ñ.×4Ñ4Ó6÷
á��1ð Ð7”Ñ6°AÔ6Ó6Ó7ð
ˆñ 
ð !×-Ñ-×3Ñ3Ó5÷
á��1ð Ð7”Ñ6°AÔ6Ó6Ó7ð
ˆñ 
ð ˜&Ò Ð Ð ä
Ñ
K°iÀÐ5JÔ
KÔKØ5>×5KÑ5K×5QÑ5QÓ5S×T©T¨Q°˜!˜œf Q›i›ÐTˆÑTØ4<×4IÑ4I×4OÑ4OÓ4Q×R©D¨A¨q˜˜œV A›Y›ÐRˆÑRØ Ò,Ð,Ð,ä
Ñ
I°I¸xÐ3HÔ
IÔIØ7@×7KÑ7K×L©t¨q°!˜A˜?¤ q£	›?ÐLˆÑLØ6>×6IÑ6I×J©d¨a°˜1˜/œv a›y›/ÐJˆÑJØ .Ò0Ð0Ð0äˆy×)Ñ)Ó*¬c°(×2KÑ2KÓ.LÒLÐLÐLÜ
Ñ
M¸	À8Ð7LÔ
MÔMØ6?×6NÑ6N×6TÑ6TÓ6V×W©d¨a°˜1˜/œv a›y›/ÐWˆÑWØ5=×5LÑ5L×5RÑ5RÓ5T×U©T¨Q°˜!˜œf Q›i›ÐUˆÑUØ Ò.Ð.Ñ.ð Nùó+
ùó
ùó UùÛRùó MùÛJùó
 XùÛUs0   Å? N#Æ? N)ÈN/ÉN5ÊN;ËOÍOÍ>Ou¤  [project]
name = "spam"
version = "2020.0.0"
description = "Lovely Spam! Wonderful Spam!"
readme = "README.rst"
requires-python = ">=3.8"
license-files = ["LICENSE.txt"]  # Updated to be PEP 639 compliant
keywords = ["egg", "bacon", "sausage", "tomatoes", "Lobster Thermidor"]
authors = [
  {email = "hi@pradyunsg.me"},
  {name = "Tzu-Ping Chung"}
]
maintainers = [
  {name = "Brett Cannon", email = "brett@python.org"},
  {name = "John X. ÃƒÃ¸rÃ§eÄ�", email = "john@utf8.org"},
  {name = "Î“Î±Î¼Î± ï­‡ æ�±", email = "gama@utf8.org"},
]
classifiers = [
  "Development Status :: 4 - Beta",
  "Programming Language :: Python"
]

dependencies = [
  "httpx",
  "gidgethub[httpx]>4.0.0",
  "django>2.1; os_name != 'nt'",
  "django>2.0; os_name == 'nt'"
]

[project.optional-dependencies]
test = [
  "pytest < 5.0.0",
  "pytest-cov[all]"
]

[project.urls]
homepage = "http://example.com"
documentation = "http://readthedocs.org"
repository = "http://github.com"
changelog = "http://github.com/me/spam/blob/master/CHANGELOG.md"

[project.scripts]
spam-cli = "spam:main_cli"

[project.gui-scripts]
spam-gui = "spam:main_gui"

[project.entry-points."spam.magical"]
tomatoes = "spam:main_tomatoes"
uÖ   [project]
name = "spam"
version = "2020.0.0"
authors = [
  {email = "hi@pradyunsg.me"},
  {name = "Tzu-Ping Chung"}
]
maintainers = [
  {name = "à¤…à¤‚à¤•à¤¿à¤¤ à¤…à¤¹à¤²à¤¾à¤µà¤¤", email = "ankit@example.com"},
]
zE
def main_cli(): pass
def main_gui(): pass
def main_tomatoes(): pass
z�[project]
name = "spam"
version = "2020.0.0"
authors = [
  {email = "hi@pradyunsg.me"},
  {name = "Tzu-Ping Chung"}
]
license = {text = "MIT"}
a#  [project]
name = "spam"
version = "2020.0.0"
authors = [
  {email = "hi@pradyunsg.me"},
  {name = "Tzu-Ping Chung"}
]
license = "mit or apache-2.0"  # should be normalized in metadata
classifiers = [
    "Development Status :: 5 - Production/Stable",
    "Programming Language :: Python",
]
z
README.rstc                ó*  — | dz  }|}dd|› d�i}|j                  «       D ]  \  }}|j                  ||«      }Œ |j                  |d¬«       | |z  j                  dd¬«       | dz  j                  d	d¬«       | d
z  j                  t        d¬«       |S )Nr3   zreadme = "README.rst"z
readme = "ú"r4   r5   zhello worldúLICENSE.txtú--- LICENSE stub ---zspam.py)r\   rG   rV   ÚPEP621_EXAMPLE_SCRIPT)r`   ÚreadmeÚpyproject_textÚ	pyprojectÚtextÚreplacementsÚorigÚsubsts           r   Ú_pep621_example_projectr€   È   s¶   € ð
 Ð+Ñ+€IØ€DØ+¨z¸&¸ÀÐ-CÐD€LØ#×)Ñ)Ó+ò )‰ˆˆeØ�|‰|˜D %Ó(‰ð)à×Ñ˜¨ÐÔ0à�Ñ×"Ñ" =¸7Ð"ÔCØ�Ñ×)Ñ)Ð*@È7Ð)ÔSØ�	Ñ×%Ñ%Ô&;ÀgÐ%ÔNØÐr   c                ó¢   — t        | «      }t        j                  t        | «      |«      }t	        |j
                  j                  «      dhk(  sJ ‚y)z&Make sure the example in PEP 621 worksrv   N)r€   r   rW   r   rZ   Úmetadatar8   ©r`   r{   Údists      r   Útest_pep621_exampler…   Ú   sB   € ä'¨Ó1€IÜ×,Ñ,¬X°hÓ-?ÀÓK€DÜˆt�}‰}×*Ñ*Ó+°¨Ò>Ð>Ñ>r   )ry   Úctype))z
Readme.txtz
text/plain)z	readme.mdztext/markdown)ztext.rstz
text/x-rstc                ó�   — t        | |«      }t        j                  t        | «      |«      }|j                  j
                  |k(  sJ ‚y ©N©r€   r   rW   r   r‚   Úlong_description_content_type)r`   ry   r†   r{   r„   s        r   Útest_readme_content_typer‹   á   s?   € ô (¨°&Ó9€IÜ×,Ñ,¬X°hÓ-?ÀÓK€DØ�=‰=×6Ñ6¸%Ò?Ð?Ñ?r   c                óº   — t        | d«      }t        j                  t        d¬«      5  t	        j
                  t        | «      |«       d d d «       y # 1 sw Y   y xY w)Nz
README.texz%Undefined content type for README.tex©Úmatch)r€   ÚpytestÚraisesÚ
ValueErrorr   rW   r   )r`   r{   s     r   Útest_undefined_content_typer’   ï   sK   € Ü'¨°,Ó?€IÜ	�‰”zÐ)PÔ	Qñ IÜ×)Ñ)¬(°8Ó*<¸iÔH÷I÷ Iñ Iús   ¨ AÁAc                óŠ   — t        | d«      }t        j                  t        | «      |«      }|j                  j
                  �J ‚y )NÚREADMEr‰   rƒ   s      r   Ú3test_no_explicit_content_type_for_missing_extensionr•   õ   s;   € Ü'¨°(Ó;€IÜ×,Ñ,¬X°hÓ-?ÀÓK€DØ�=‰=×6Ñ6Ð>Ð>Ñ>r   )rz   Úexpected_maintainers_meta_valueug   Brett Cannon <brett@python.org>, "John X. ÃƒÃ¸rÃ§eÄ�" <john@utf8.org>, Î“Î±Î¼Î± ï­‡ æ�± <gama@utf8.org>znon-international-emails)Úidu?   Ankit Ahlawat <à¤…à¤‚à¤•à¤¿à¤¤@à¤‰à¤¦à¤¾à¤¹à¤°à¤£.à¤­à¤¾à¤°à¤¤>zlCPython's `email.headerregistry.Address` only supports RFC 5322, as of Oct 20, 2025 and latest Python 3.13.0T)ÚreasonÚstrictzinternational-email)Úmarksr—   c                óP  — t        |d|¬«      }t        j                  t        |«      |«      }|j                  j
                  | k(  sJ ‚|dz  }t        |dd¬«      5 }|j                  j                  |«       d d d «       |j                  d¬«      }d| › �|v sJ ‚y # 1 sw Y   Œ%xY w)Nr”   ©rz   úPKG-FILEÚwr4   r5   zMaintainer-email: )	r€   r   rW   r   r‚   Úmaintainer_emailÚopenÚwrite_pkg_filerT   )r–   rz   r`   r{   r„   Úpkg_fileÚfhÚcontents           r   Ú test_utf8_maintainer_in_metadatar¥   û   s²   € ô8 (ØØØ%ô€Iô
 ×,Ñ,¬X°hÓ-?ÀÓK€DØ�=‰=×)Ñ)Ð-LÒLÐLÐLØ˜*Ñ$€HÜ	ˆh˜ gÔ	.ð )°"Ø�‰×$Ñ$ RÔ(÷)à× Ñ ¨'Ð Ó2€GØÐ ?Ð@ÐAÀWÑLÐLÑL÷)ð )ús   ÁBÂB%)rz   ÚlicenseÚlicense_expressionÚcontent_strÚnot_content_strÚMITzLicense: MITzLicense-Expression: zlicense-textz6ignore:.project.license. as a TOML table is deprecated)r—   rš   zMIT OR Apache-2.0z%License-Expression: MIT OR Apache-2.0z	License: zlicense-expressionc                ó˜  — t        |d|¬«      }t        j                  t        |«      |«      }|j                  j
                  | k(  sJ ‚|j                  j                  |k(  sJ ‚|dz  }t        |dd¬«      5 }	|j                  j                  |	«       d d d «       |j                  d¬«      }
d|
v sJ ‚||
v sJ ‚||
vsJ ‚y # 1 sw Y   Œ.xY w)Nr”   rœ   r�   rž   r4   r5   zMetadata-Version: 2.4)
r€   r   rW   r   r‚   r¦   r§   r    r¡   rT   )r¦   r§   r¨   r©   rz   r`   r{   r„   r¢   r£   r¤   s              r   Útest_license_in_metadatar¬   %  sÞ   € ôP (ØØØ%ô€Iô
 ×,Ñ,¬X°hÓ-?ÀÓK€DØ�=‰=× Ñ  GÒ+Ð+Ð+Ø�=‰=×+Ñ+Ð/AÒAÐAÐAØ˜*Ñ$€HÜ	ˆh˜ gÔ	.ð )°"Ø�‰×$Ñ$ RÔ(÷)à× Ñ ¨'Ð Ó2€GØ" gÑ-Ð-Ð-Ø˜'Ñ!Ð!Ð!Ø 'Ñ)Ð)Ñ)÷)ð )ús   Á7C Ã C	c                ó*  — t         j                  dd«      d   }t        | d|› d�«      }d}t        j                  t
        |¬«      5 }t        j                  t        | «      |«       d d d «       dt        j                  «      v sJ ‚y # 1 sw Y   Œ#xY w)	Nú
é   r   r”   z/
    "License :: OSI Approved :: MIT License"
]z?License classifiers have been superseded by license expressionsr�   ú&License :: OSI Approved :: MIT License)ÚPEP639_LICENSE_EXPRESSIONÚrsplitr€   r�   r�   r   r   rW   r   ÚstrÚvalue)r`   r|   r{   ÚmsgÚexcs        r   Ú/test_license_classifier_with_license_expressionr·   ^  s“   € Ü$×+Ñ+¨D°!Ó4°QÑ7€DÜ'ØØØˆ&ÐCÐDó€Ið
 L€CÜ	�‰Ô)°Ô	5ð I¸Ü×)Ñ)¬(°8Ó*<¸iÔH÷Ið 4´s¸3¿9¹9³~ÑEÐEÑE÷Ið Iús   Á B	Â	Bc                óh  — d}t        | d|«      }d}d}t        j                  t        |¬«      5  t        j                  t        |¬«      5  t	        j
                  t        | «      |«      }d d d «       d d d «       j                  j                  «       dgk(  sJ ‚y # 1 sw Y   Œ2xY w# 1 sw Y   Œ6xY w)Nz¥    [project]
    name = "spam"
    version = "2020.0.0"
    license = {text = "mit or apache-2.0"}
    classifiers = ["License :: OSI Approved :: MIT License"]
    r”   z5License classifiers are deprecated(?:.|
)*MIT Licenseú/.project.license. as a TOML table is deprecatedr�   r°   )	r€   r�   Úwarnsr   r   rW   r   r‚   Úget_classifiers)r`   r|   r{   Úmsg1Úmsg2r„   s         r   Ú2test_license_classifier_without_license_expressionr¾   l  s­   € ð€Dô (¨°(¸DÓA€IàC€DØ<€Dä�‰Ô1¸Ô>ñPä�‰Ô1¸Ô>ñPô ×0Ñ0´¸(Ó1CÀYÓOˆ÷	P÷ Pð �=‰=×(Ñ(Ó*Ð/WÐ.XÒXÐXÑX÷Pð Pú÷ Pð Pús#   ¯B(Á BÁ+B(ÂB%	Â!B(Â(B1c                  óD   — e Zd Z	 	 d
d„Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)ÚTestLicenseFilesc                ó    — t         }d|v sJ ‚d|vsJ ‚d|vsJ ‚t        j                  d||d¬«      }||v sJ ‚|› d|› d�}t        |d|¬	«      }|S )
Nzlicense = "mit or apache-2.0"zlicense-filesz[tool.setuptools]z(license = .*)\nr   )Úcountr®   r”   rœ   )r±   r$   r%   r€   )Úselfr`   Úadditional_textÚlicense_tomlr|   r{   s         r   Úbase_pyprojectzTestLicenseFiles.base_pyprojectƒ  s†   € ô )ˆð /°$Ñ6Ð6Ð6Ø dÑ*Ð*Ð*Ø"¨$Ñ.Ð.Ð.ä�v‰vØØØØô	
ˆð ˜tÑ#Ð#Ð#Ø��r˜/Ð*¨"Ð-ˆÜ+¨H°hÈtÔTˆ	ØÐr   c                ó*   — | j                  ||d¬«      S )Nz>license = "licenseref-Proprietary"
license-files = ["_FILE*"]
)rÄ   rÅ   )rÆ   )rÃ   r`   rÄ   s      r   Úbase_pyproject_license_pep639z.TestLicenseFiles.base_pyproject_license_pep639›  s%   € Ø×"Ñ"ØØ+ð-ð #ó 
ð 	
r   c                ó0  — d}| j                  ||«      }|dz  j                  «        |dz  j                  «        |dz  }|j                  dd¬«       d}d	}t        j                  t
        |¬
«      5  t        j                  t
        |¬
«      5  t        j                  t        |«      |«      }d d d «       d d d «       t        j                  j                  «      ddhk(  sJ ‚|j                  j                  dk(  sJ ‚y # 1 sw Y   ŒSxY w# 1 sw Y   ŒWxY w)Nú,[tool.setuptools]
license-files = ["_FILE*"]ú	_FILE.txtú	_FILE.rstrv   zLicenseRef-Proprietary
r4   r5   zQ'tool.setuptools.license-files' is deprecated in favor of 'project.license-files'r¹   r�   )rÆ   ÚtouchrV   r�   rº   r   r   rW   r   rZ   r‚   r8   r¦   )rÃ   r`   Úsetuptools_configr{   r¦   r¼   r½   r„   s           r   Ú+test_both_license_and_license_files_definedz<TestLicenseFiles.test_both_license_and_license_files_defined£  s  € ØKÐØ×'Ñ'¨Ð2CÓDˆ	à	�KÑ	×&Ñ&Ô(Ø	�KÑ	×&Ñ&Ô(ð ˜]Ñ*ˆØ×ÑÐ5ÀÐÔHàbˆØ@ˆä�L‰LÔ5¸TÔBñ	Tä�L‰LÔ5¸TÔBñ	Tô !×4Ñ4´X¸hÓ5GÈÓSˆD÷		T÷ 	Tô
 �4—=‘=×.Ñ.Ó/°KÀÐ3MÒMÐMÐMØ�}‰}×$Ñ$Ð(BÒBÐBÑB÷	Tð 	Tú÷ 	Tð 	Tús$   Á2DÂ D Â.DÄ D		ÄDÄDc                óÆ  — | j                  |«      }|dz  j                  «        |dz  j                  «        d}t        j                  t        |¬«      5  t        j                  t        |«      |«      }d d d «       t        j                  j                  «      ddhk(  sJ ‚|j                  j                  �J ‚|j                  j                  dk(  sJ ‚y # 1 sw Y   ŒcxY w)NrË   rÌ   zNormalizing.*LicenseRefr�   zLicenseRef-Proprietary)rÈ   rÍ   r�   rº   r   r   rW   r   rZ   r‚   r8   r¦   r§   )rÃ   r`   r{   rµ   r„   s        r   Ú2test_both_license_and_license_files_defined_pep639zCTestLicenseFiles.test_both_license_and_license_files_defined_pep639¹  sÊ   € à×6Ñ6°xÓ@ˆ	à	�KÑ	×&Ñ&Ô(Ø	�KÑ	×&Ñ&Ô(à'ˆÜ�\‰\œ/°Ô5ñ 	TÜ ×4Ñ4´X¸hÓ5GÈÓSˆD÷	Tô �4—=‘=×.Ñ.Ó/°KÀÐ3MÒMÐMÐMØ�}‰}×$Ñ$Ð,Ð,Ð,Ø�}‰}×/Ñ/Ð3KÒKÐKÑK÷	Tð 	Tús   Á CÃC c                óÎ   — d}| j                  ||«      }d}t        j                  t        |¬«      5  t	        j
                  t        |«      |«       d d d «       y # 1 sw Y   y xY w)NrÊ   zR'project.license-files' is defined already. Remove 'tool.setuptools.license-files'r�   )rÈ   r�   r�   r   r   rW   r   )rÃ   r`   rÎ   r{   rµ   s        r   Ú test_license_files_defined_twicez1TestLicenseFiles.test_license_files_defined_twiceÈ  s]   € àKÐØ×6Ñ6°xÐARÓSˆ	àbˆÜ�]‰]Ô-°SÔ9ñ 	MÜ×-Ñ-¬h°xÓ.@À)ÔL÷	M÷ 	Mñ 	Mús   ² AÁA$c                óH  — d}| j                  ||d¬«      }dj                  «       }|D ]  }||z  j                  |› d�d¬«       Œ t        j                  t        |«      |«      }|dz  j                  «       sJ ‚t        |j                  j                  «      h |£d’k(  sJ ‚y )	Nz"[tool.setuptools]
zip-safe = falser!   )rÅ   z5LICENCE-a.html COPYING-abc.txt AUTHORS-xyz NOTICE,defr®   r4   r5   rv   )
rÆ   ÚsplitrV   r   rW   r   ÚexistsrZ   r‚   r8   )rÃ   r`   rÎ   r{   r8   Úfnamer„   s          r   Útest_default_patternsz&TestLicenseFiles.test_default_patternsÑ  s¶   € ØAÐà×'Ñ'¨Ð2CÐRTÐ'ÓUˆ	àO×UÑUÓWˆà"ò 	JˆEØ˜Ñ×)Ñ)¨U¨G°2¨,ÀÐ)ÕIð	Jô ×0Ñ0´¸(Ó1CÀYÓOˆà˜=Ñ(×0Ñ0Ô2Ð2Ð2Ü�4—=‘=×.Ñ.Ó/Ð3R°]Ð3RÀMÐ3RÒRÐRÑRr   c                ój  — | j                  |«      }t        |j                  d«      «      g k(  sJ ‚d}d}t        j                  t
        |¬«      5  t        j                  t        |¬«      5  t        j                  t        |«      |«       d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w)Nz_FILE*z-Cannot find any files for the given pattern.*z@Normalizing 'licenseref-Proprietary' to 'LicenseRef-Proprietary'r�   )
rÈ   ÚlistÚglobr�   rº   r   r   r   rW   r   )rÃ   r`   r{   r¼   r½   s        r   Útest_missing_patternsz&TestLicenseFiles.test_missing_patternsà  sž   € Ø×6Ñ6°xÓ@ˆ	Ü�H—M‘M (Ó+Ó,°Ò2Ð2Ð2à>ˆØQˆä�L‰LÔ5¸TÔBñ	Mä�L‰Lœ°Ô5ñ	Mô ×-Ñ-¬h°xÓ.@À)ÔL÷		M÷ 	M÷ 	Mñ 	Mú÷ 	Mð 	Mús$   ÁB)Á, BÂB)ÂB&	Â"B)Â)B2c                ó€  — dt         v sJ ‚t         j                  dd«      }t        ||¬«      }d}t        j                  t
        |¬«      5  t        j                  t        |«      |«      }ddd«       j                  j                  dk(  sJ ‚t        |j                  j                  «      dhk(  sJ ‚y# 1 sw Y   ŒJxY w)	z?Make sure the old example with ``license = {text = ...}`` workszlicense-files = ["LICENSE.txt"]z license = {file = "LICENSE.txt"}rœ   r¹   r�   Nrw   rv   )ÚPEP621_EXAMPLErG   r€   r�   rº   r   r   rW   r   r‚   r¦   rZ   r8   )rÃ   r`   r|   r{   rµ   r„   s         r   Ú$test_deprecated_file_expands_to_textz5TestLicenseFiles.test_deprecated_file_expands_to_textì  s´   € ð 1´NÑBÐBÐBÜ×%Ñ%Ø-Ø.ó
ˆô ,¨HÀTÔJˆ	à?ˆÜ�\‰\Ô6¸cÔBñ 	TÜ ×4Ñ4´X¸hÓ5GÈÓSˆD÷	Tð �}‰}×$Ñ$Ð(>Ò>Ð>Ð>Ü�4—=‘=×.Ñ.Ó/°M°?ÒBÐBÑB÷		Tð 	Tús   Á B4Â4B=N)r!   z!license = {file = "LICENSE.txt"}
©r!   )Ú__name__Ú
__module__Ú__qualname__rÆ   rÈ   rÏ   rÑ   rÓ   rØ   rÜ   rß   © r   r   rÀ   rÀ   ‚  s8   „ ð Ø9ó	ó0
òCò,LòMòSò
MóCr   rÀ   c                  ó¢   — e Zd Zd„ Zej
                  j                  dddg«      d„ «       Zej
                  j                  dg d¢«      d„ «       Zy)	ÚTestPyModulesc                óš   — d|›d�}t        d«      }|j                  t        |«      d¬«       t        j                  t        i «      |«      S )Nzr
        [project]
        name = "test"
        version = "42.0"
        [tool.setuptools]
        py-modules = [z
]
        r3   r4   r5   )r   rV   r   r   rW   r   )rÃ   Únamerd   r{   s       r   r„   zTestPyModules.dist  sW   € ðð
 �hð 	ðˆô Ð)Ó*ˆ	Ø×ÑœX kÓ2¸WÐÔEÜ×0Ñ0´¸bÓ1AÀ9ÓMÐMr   Úmodulezpip-runu   abc-d.Î»-xyz-ec                ód   — |j                  |«       || j                  |«      j                  v sJ ‚y rˆ   )Úchdirr„   Ú
py_modules©rÃ   r`   r_   ré   s       r   Útest_valid_module_namez$TestPyModules.test_valid_module_name  s-   € à×Ñ˜(Ô#Ø˜Ÿ™ 6Ó*×5Ñ5Ñ5Ð5Ñ5r   )zpip runz-pip-runzpip-run-stubsc                ó¼   — |j                  |«       t        j                  t        d¬«      5  | j	                  |«      j
                   d d d «       y # 1 sw Y   y xY w)Nz
py-modulesr�   )rë   r�   r�   r‘   r„   rì   rí   s       r   Útest_invalid_module_namez&TestPyModules.test_invalid_module_name  sE   € à×Ñ˜(Ô#Ü�]‰]œ:¨\Ô:ñ 	)Ø�I‰I�fÓ×(Ò(÷	)÷ 	)ñ 	)ús   ­AÁAN)	rá   râ   rã   r„   r�   ÚmarkÚparametrizerî   rð   rä   r   r   ræ   ræ   þ  s[   „ ò
Nð ‡[�[×Ñ˜X¨	Ð3CÐ'DÓEñ6ó Fð6ð ‡[�[×Ñ˜XÒ'OÓPñ)ó Qñ)r   ræ   c                  ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚTestExtModulesc                ó   — t        d«      }|j                  t        |«      d¬«       t        j                  t
        j                  «      5  t        j                  t        i «      |«      cd d d «       S # 1 sw Y   y xY w)Nr3   r4   r5   )	r   rV   r   r�   rº   r   Ú_ExperimentalConfigurationrW   r   )rÃ   rd   r{   s      r   Ú	make_distzTestExtModules.make_dist  se   € ÜÐ)Ó*ˆ	Ø×ÑœX kÓ2¸WÐÔEÜ�\‰\œ-×BÑBÓCñ 	RÜ ×4Ñ4´\À"Ó5EÀyÓQ÷	R÷ 	Rò 	Rús   ÁA4Á4A=c                ó  — |j                  |«       d}| j                  |«      }t        |j                  «      dk(  sJ ‚|j                  d   j                  dk(  sJ ‚t        |j                  d   j                  «      ddhk(  sJ ‚y )NzÄ
        [project]
        name = "test"
        version = "42.0"
        [tool.setuptools]
        ext-modules = [
          {name = "my.ext", sources = ["hello.c", "world.c"]}
        ]
        r   r   zmy.extzhello.czworld.c)rë   r÷   ÚlenÚext_modulesrè   rZ   Úsources©rÃ   r`   r_   rd   r„   s        r   Útest_pyproject_sets_attributez,TestExtModules.test_pyproject_sets_attribute   sˆ   € Ø×Ñ˜(Ô#ðˆð �~‰~˜kÓ*ˆÜ�4×#Ñ#Ó$¨Ò)Ð)Ð)Ø×Ñ Ñ"×'Ñ'¨8Ò3Ð3Ð3Ü�4×#Ñ# AÑ&×.Ñ.Ó/°I¸yÐ3IÒIÐIÑIr   c                ó(  — |j                  |«       d}| j                  |«      }t        |j                  d   j                  d   t
        «      sJ ‚|j                  d   j                  d   dk(  sJ ‚|j                  d   j                  d   dk(  sJ ‚y )Nzó
        [project]
        name = "test"
        version = "42.0"
        [[tool.setuptools.ext-modules]]
        name = "my.ext"
        sources = ["hello.c", "world.c"]
        define-macros = [["FIRST_SINGLE"], ["SECOND_TWO", "1"]]
        r   )ÚFIRST_SINGLEr   )Ú
SECOND_TWOÚ1)rë   r÷   Ú
isinstancerú   Údefine_macrosÚtuplerü   s        r   Ú&test_pyproject_define_macros_as_tuplesz5TestExtModules.test_pyproject_define_macros_as_tuples0  s—   € à×Ñ˜(Ô#ðˆð �~‰~˜kÓ*ˆÜ˜$×*Ñ*¨1Ñ-×;Ñ;¸AÑ>ÄÔFÐFÐFØ×Ñ Ñ"×0Ñ0°Ñ3Ð7HÒHÐHÐHØ×Ñ Ñ"×0Ñ0°Ñ3Ð7JÒJÐJÑJr   N)rá   râ   rã   r÷   rý   r  rä   r   r   rô   rô     s   „ òRòJó Kr   rô   c                  ó   — e Zd Zd„ Zy)ÚTestDeprecatedFieldsc                óè   — |dz  }d}|j                  t        |«      d¬«       t        j                  t        d¬«      5  t        j                  t        |«      |«       d d d «       y # 1 sw Y   y xY w)Nr3   z�
        [project]
        name = "myproj"
        version = "42"
        [tool.setuptools]
        namespace-packages = ["myproj.pkg"]
        r4   r5   znamespace-packagesr�   )rV   r   r�   r�   r   r   rW   r   )rÃ   r`   r{   Úconfigs       r   Útest_namespace_packagesz,TestDeprecatedFields.test_namespace_packagesC  sl   € ØÐ/Ñ/ˆ	ðˆð 	×ÑœX fÓ-¸ÐÔ@Ü�]‰]Ô-Ð5IÔJñ 	MÜ×-Ñ-¬h°xÓ.@À)ÔL÷	M÷ 	Mñ 	Mús   ¿ A(Á(A1N)rá   râ   rã   r
  rä   r   r   r  r  B  s   „ óMr   r  c                  ó4  — e Zd Zd!d„Zej
                  j                  dd ej                  ddej
                  j                  d«      giŽdddgfd	d
ddgifd	dddgif ej                  dddgfdej
                  j                  d«      giŽg«      d„ «       Z	ej
                  j                  ddddg fddi fdddgfdddgfg«      d„ «       Z
d„ Zd„ Zd„ Zej
                  j                  dddg«      ej
                  j                  d«      d„ «       «       Zy )"ÚTestPresetFieldc                óZ   — d|›d�}d|vr|dz  }|dz  }|j                  ||z   d¬«       |S )Nz"[project]
name = 'proj'
dynamic = r®   Úversionzversion = '42'
r3   r4   r5   )rV   )rÃ   r`   ÚdynamicÚextra_contentr¤   Úfiles         r   r{   zTestPresetField.pyprojectR  sH   € Ø8¸¸À2ÐFˆØ˜GÑ#ØÐ)Ñ)ˆGØÐ*Ñ*ˆØ�‰˜ -Ñ/¸'ˆÔBØˆr   )ÚattrÚfieldr´   )r§   r¦   rª   )r¦   r¦   zNot SPDXrš   zignore:.*license. overwrittenÚclassifierszPrivate :: ClassifierrA   ÚscriptsÚconsole_scriptsúfoobar=foobar:mainúgui-scriptsÚgui_scriptszbazquux=bazquux:mainr^   ÚdependenciesÚsixz&ignore:.*install_requires. overwrittenc                óP  — | j                  |g «      }t        |fi ||i¤Ž}t        j                  d|› �t        j                  «      }t        j                  t        |¬«      5  t        j                  ||«      }ddd«        t        d|› �|«      |«      }|rJ ‚y# 1 sw Y   Œ#xY w)z:Setuptools cannot set a field if not listed in ``dynamic``z&defined outside of `pyproject.toml`:.*r�   Nú	metadata.)r{   r   r$   ÚcompileÚDOTALLr�   rº   r   r   rW   r   )	rÃ   r`   r  r  r´   r{   r„   rµ   Ú
dist_values	            r   Útest_not_listed_in_dynamicz*TestPresetField.test_not_listed_in_dynamicZ  s¤   € ð* —N‘N 8¨RÓ0ˆ	Ü˜Ñ2 T¨5 MÑ2ˆÜ�j‰jÐAÀ%ÀÐIÌ2Ï9É9ÓUˆÜ�\‰\œ/°Ô5ñ 	FÜ ×4Ñ4°T¸9ÓEˆD÷	Fð @Ô%¨	°$°Ð&8¸$Ó?ÀÓEˆ
ÙÐˆ~�:÷		Fð 	Fús   Á#BÂB%rR   zoptional-dependenciesc                óª   — | j                  ||g«      }t        |fi ||i¤Ž}t        j                  ||«      } t	        d|› �|«      |«      }||k(  sJ ‚y )Nr  )r{   r   r   rW   r   )rÃ   r`   r  r  r´   r{   r„   r   s           r   Útest_listed_in_dynamicz&TestPresetField.test_listed_in_dynamicx  sd   € ð —N‘N 8¨e¨WÓ5ˆ	Ü˜Ñ2 T¨5 MÑ2ˆÜ×0Ñ0°°yÓAˆØ?Ô%¨	°$°Ð&8¸$Ó?ÀÓEˆ
Ø˜UÒ"Ð"Ñ"r   c                óö   — |j                  |«       | j                  |g «      }t        |dg¬«      }|dz  j                  dd¬«       t	        j
                  ||«      }|j                  j                  dgk(  sJ ‚y)ap  
        license-file is currently not considered in the context of dynamic.
        As per 2025-02-19, https://packaging.python.org/en/latest/specifications/pyproject-toml/#license-files
        allows setuptools to fill-in `license-files` the way it sees fit:

        > If the license-files key is not defined, tools can decide how to handle license files.
        > For example they can choose not to include any files or use their own
        > logic to discover the appropriate files in the distribution.

        Using license_files from setup.py to fill-in the value is in accordance
        with this rule.
        zLIC*)r8   ÚLIC1Ú42r4   r5   N)rë   r{   r   rV   r   rW   r‚   r8   )rÃ   r_   r`   r{   r„   s        r   Ú&test_license_files_exempt_from_dynamicz6TestPresetField.test_license_files_exempt_from_dynamic‰  st   € ð 	×Ñ˜(Ô#Ø—N‘N 8¨RÓ0ˆ	Ü˜°°Ô9ˆØ	�FÑ	×&Ñ& t°gÐ&Ô>Ü×0Ñ0°°yÓAˆØ�}‰}×*Ñ*¨v¨hÒ6Ð6Ñ6r   c                óö   — d}|dz  }|j                  |d¬«       t        |dg¬«      }t        j                  d¬«      5  t	        j
                  ||«      }d d d «       d|j                  vsJ ‚y # 1 sw Y   ŒxY w)	Nz:[project]
name='pkg'
version='0.1'
dependencies=['click']
r3   r4   r5   Úwheel©r^   z`install_requires` overwrittenr�   )rV   r   r�   rº   r   rW   r^   )rÃ   r`   Úsrcr{   r„   s        r   Ú%test_warning_overwritten_dependenciesz5TestPresetField.test_warning_overwritten_dependencies�  s   € ØNˆØÐ/Ñ/ˆ	Ø×Ñ˜S¨7ÐÔ3Ü˜°G°9Ô=ˆÜ�\‰\Ð @ÔAñ 	FÜ ×4Ñ4°T¸9ÓEˆD÷	Fà˜d×3Ñ3Ñ3Ð3Ñ3÷	Fð 	Fús   ¿A/Á/A8c                ó,  — d}| j                  |dg|«      }dg}t        ||¬«      }t        j                  ||«      }d|j                  v sJ ‚|j                  d«      }t        |||dz  «       |dz  j                  d¬	«      }d
|v sJ ‚d|v sJ ‚d|v sJ ‚y)a#  
        Internally setuptools converts dependencies with markers to "extras".
        If ``install_requires`` is given by ``setup.py``, we have to ensure that
        applying ``optional-dependencies`` does not overwrite the mandatory
        dependencies with markers (see #3204).
        z1
[project.optional-dependencies]
foo = ['bar>1']
r  z6importlib-resources (>=3.0.0) ; python_version < "3.7"r*  ÚfooÚegg_infozrequires.txtr4   r5   zimportlib-resourcesÚbarz:python_version < "3.7"N)r{   r   r   rW   rR   Úget_command_objr
   rT   )rÃ   r`   Úextrar{   Úinstall_reqr„   r/  Úreqss           r   Ú2test_optional_dependencies_dont_remove_env_markerszBTestPresetField.test_optional_dependencies_dont_remove_env_markers¦  sº   € ð GˆØ—N‘N 8¨nÐ-=¸uÓEˆ	ØOÐPˆÜ˜°;Ô?ˆÜ×0Ñ0°°yÓAˆØ˜×+Ñ+Ñ+Ð+Ð+Ø×'Ñ'¨
Ó3ˆÜ˜8 X¨x¸.Ñ/HÔIØ˜>Ñ)×4Ñ4¸gÐ4ÓFˆØ$¨Ñ,Ð,Ð,Ø˜‰}Ðˆ}Ø(¨DÑ0Ð0Ñ0r   )r  Úgroup)r  r  )r  r  Úerrorc                ó–   — | j                  ||g«      }t        ||dgi¬«      }t        j                  ||«      }||j                  v sJ ‚y )Nr  )rA   )r{   r   r   rW   rA   )rÃ   r`   r  r6  r{   r„   s         r   Ú.test_scripts_dont_require_dynamic_entry_pointsz>TestPresetField.test_scripts_dont_require_dynamic_entry_points¼  sQ   € ð —N‘N 8¨e¨WÓ5ˆ	Ü˜°Ð8LÐ7MÐ/NÔOˆÜ×0Ñ0°°yÓAˆØ˜×)Ñ)Ñ)Ð)Ñ)r   Nrà   )rá   râ   rã   r{   r�   rñ   rò   ÚparamÚfilterwarningsr!  r#  r'  r,  r5  r9  rä   r   r   r  r  Q  s…  „ óð ‡[�[×ÑØ"à4ØˆF�L‰LØ3ðà—{‘{×1Ñ1Ð2QÓRÐSñð ˜MÐ,CÐ+DÐEØ˜YÐ):Ð=QÐ<RÐ(SÐTØ˜]¨]Ð=SÐ<TÐ,UÐVØˆF�L‰LØ$ n°u°gÐ>ðð —K‘K×.Ñ.Ð/WÓXðñð	
óñ&	ó'ð&	ð ‡[�[×ÑØ"à4Ø °Ð4ØÐ6¸Ð;Ø °%°Ð9Ø˜MÐ,CÐ+DÐEð	
ó	ñ#ó	ð#ò7ò(4ò1ð, ‡[�[×ÑØØ	'Ð)GÐHóð ‡[�[×Ñ Ó(ñ*ó )ó	ñ
*r   r  c                  ó   — e Zd Zd„ Zy)ÚTestMetac                óž   — t        j                  |«      5 }t        d„ |j                  «       D «       «      sJ ‚	 ddd«       y# 1 sw Y   yxY w)z,Meta test to ensure tests can run from sdistc              3  óF   K  — | ]  }|j                  t        «      –— Œ y ­wrˆ   )ÚendswithÚEXAMPLES_FILE)r<   rè   s     r   r>   z6TestMeta.test_example_file_in_sdist.<locals>.<genexpr>Í  s   è ø€ ÒO¸�t—}‘}¤]×3ÑOùs   ‚!N)Útarfiler    rY   Úgetnames)rÃ   Úsetuptools_sdistÚtars      r   Útest_example_file_in_sdistz#TestMeta.test_example_file_in_sdistÊ  sD   € ä�\‰\Ð*Ó+ð 	P¨sÜÑOÀÇÁÃÔOÔOÐOÑO÷	P÷ 	Pñ 	Pús   –#AÁAN)rá   râ   rã   rF  rä   r   r   r=  r=  É  s   „ óPr   r=  c                  ó   — e Zd Zd„ Zy)ÚTestInteropCommandLineParsingc                ó"  — |j                  |«       d}t        |d«      }|j                  t        |«      d¬«       ddgi}t	        j
                  t        |«      |«      }|j                  «        |j                  «       }d|j                  v sJ ‚y )NzJ
        [project]
        name = "test"
        version = "42.0"
        r3   r4   r5   Úscript_argsz	--versionz42.0)
rë   r   rV   r   r   rW   r   Úparse_command_lineÚ
readouterrÚout)	rÃ   r`   r_   Úcapsysrd   r{   Úoptsr„   Úcaptureds	            r   Útest_versionz*TestInteropCommandLineParsing.test_versionÑ  s�   € ð 	×Ñ˜(Ô#ðˆô
 ˜Ð#3Ó4ˆ	Ø×ÑœX kÓ2¸WÐÔEØ ˜}Ð-ˆÜ×0Ñ0´¸dÓ1CÀYÓOˆØ×ÑÔ!Ø×$Ñ$Ó&ˆØ˜Ÿ™Ñ%Ð%Ñ%r   N)rá   râ   rã   rQ  rä   r   r   rH  rH  Ð  s   „ ó&r   rH  c                  ó   — e Zd Zd„ Zy)ÚTestStaticConfigc                ó0  — |j                  |«       d}t        |d«      }|j                  t        |«      d¬«       t	        j
                  t        i «      |«      }t        |j                  «      sJ ‚t        |j                  j                  «      sJ ‚t        |j                  j                  «      sJ ‚t        |j                  j                  «      sJ ‚t        |j                  j                  «      sJ ‚t        |j                  j                  «      sJ ‚y )Na)  
        [project]
        name = "test"
        version = "42.0"
        dependencies = ["hello"]
        keywords = ["world"]
        classifiers = ["private :: hello world"]
        [tool.setuptools]
        obsoletes = ["abcd"]
        provides = ["abcd"]
        platforms = ["abcd"]
        r3   r4   r5   )rë   r   rV   r   r   rW   r   r	   r^   r‚   Úkeywordsr  Ú	obsoletesÚprovidesÚ	platforms)rÃ   r`   r_   rd   r{   r„   s         r   Útest_mark_static_fieldsz(TestStaticConfig.test_mark_static_fieldsä  sá   € Ø×Ñ˜(Ô#ðˆô ˜Ð#3Ó4ˆ	Ø×ÑœX kÓ2¸WÐÔEÜ×0Ñ0´¸bÓ1AÀ9ÓMˆÜ˜×.Ñ.Ô/Ð/Ð/Ü˜Ÿ™×/Ñ/Ô0Ð0Ð0Ü˜Ÿ™×2Ñ2Ô3Ð3Ð3Ü˜Ÿ™×0Ñ0Ô1Ð1Ð1Ü˜Ÿ™×/Ñ/Ô0Ð0Ð0Ü˜Ÿ™×0Ñ0Ô1Ð1Ñ1r   N)rá   râ   rã   rY  rä   r   r   rS  rS  ã  s   „ ó2r   rS  c                óÔ  — t        j                  «       5 }| j                  j                  |«       |j	                  «       }d d d «       t        j                  d¬«       d}t        «       }|dz  }|dz  }|dz  }|j                  d«       g }|j                  «       D ],  }|j                  |«      s||v rŒ|j                  |dz   «       Œ. dj                  |«      S # 1 sw Y   ŒžxY w)	NT)Úvalidaterä   )zAuthor:zAuthor-email:zMaintainer:zMaintainer-email:)zProject-URL: Homepage,z
Home-page:)zDescription-Content-Type:r!   r®   )ÚioÚStringIOr‚   r¡   Úgetvaluer   Ú
from_emailrZ   ÚaddÚ
splitlinesÚ
startswithÚappendÚjoin)r„   ÚbufferÚpkg_file_txtÚskip_prefixesÚ
skip_linesÚresultÚlines          r   rX   rX      sà   € Ü	�‰‹ð )˜&Ø�‰×$Ñ$ VÔ,Ø—‘Ó(ˆ÷)ô
 ×Ñ˜¨tÕ4à%'€MÜ“€Jð ÐUÑU€MàÐ=Ñ=€MàÐ3Ñ3€Mà‡N�N�2Ôà€FØ×'Ñ'Ó)ò #ˆØ�?‰?˜=Ô)¨T°ZÑ-?ØØ�‰�d˜T‘kÕ"ð#ð
 �7‰7�6‹?Ð÷3)ð )ús   •,CÃC')Úreturnr³   )LÚ__doc__Ú
__future__r   r\  r$   rB  Úinspectr   Úpathlibr   Úunittest.mockr   r�   Úini2toml.apir   Úpackaging.metadatar   Ú
setuptoolsÚsetuptools._staticr	   Úsetuptools.command.egg_infor
   Úsetuptools.configr   r   r   Ú&setuptools.config._apply_pyprojecttomlr   r   Úsetuptools.distr   Úsetuptools.errorsr   r   Úsetuptools.warningsr   r   Ú	downloadsr   r   Ú__file__ÚparentÚHERErA  r   r+   rñ   rò   r;  Úuses_networkrs   rÞ   Ú"PEP621_INTERNATIONAL_EMAIL_EXAMPLErx   ÚPEP639_LICENSE_TEXTr±   r€   r…   r‹   r’   r•   r:  Úxfailr¥   r¬   r·   r¾   rÀ   ræ   rô   r  r  r=  rH  rS  rX   rä   r   r   ú<module>rƒ     s³  ðñõ #ã 	Û 	Û Ý Ý Ý ã Ý 'Ý 'ã Ý (Ý :ß =Ñ =ß TÝ (ß Dß Mç 4áˆHƒ~×Ñ€Ø'€ò5òð ‡�×Ñ˜¡¨t°mÑ/CÓ DÓEØ‡�×Ñ˜HÓ%Ø‡�×Ññ//ó ó &ó Fð//ðd2€ðh&Ð "ðÐ ð	Ð ðÐ ð$ Ø!óò$?ð ‡�×ÑØòóñ@óð@òIò?ð ‡�×ÑØ9àˆ�‰Øð3ð *ô	
ð 	ˆ�‰Ø.ØMØ—+‘+×#Ñ#ðHàð $ó ð
 %ô		
ðóñ.Mó/ð.Mð& ‡�×Ñðð 	ˆ�‰ØØØØØ"Øà—‘×*Ñ*ØLóðô	
ð 	ˆ�‰Ø%ØØØ3ØØ#ô	
ðóñ@*óAð@*ò2FòY÷,yCñ yC÷x)ñ )÷6&Kñ &K÷RMñ M÷u*ñ u*÷pPñ P÷&ñ &÷&2ñ 2ô:r   