
    n&php                       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rSSKJr  SSKJr  SSKrSS	KJr  SS
KJr  SSKJrJr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#J$r$  SSK%J&r&J'r'  \	" \(5      RR                  r*Sr+S r,S r-\R\                  R_                  S\'" \*\+-  5      5      \R\                  Ra                  S5      \R\                  Rb                  S 5       5       5       r2Sr3Sr4Sr5Sr6Sr7S\34S jr8S r9\R\                  R_                  S / S!Q5      S" 5       r:S# r;S$ r<\R\                  R_                  S%\Rz                  " \3S&S'S(9\Rz                  " \4S)\R\                  R}                  S*S+S,9S-S.945      S/ 5       r?\R\                  R_                  S0\Rz                  " \6S1SS2S3S4\R\                  Ra                  S55      /S69\Rz                  " \7SS7S8S9S:S(945      S; 5       r@S< rAS= rB " S> S?5      rC " S@ SA5      rD " SB SC5      rE " SD SE5      rF " SF SG5      rG " SH SI5      rH " SJ SK5      rI " SL SM5      rJSOSN jrKg)PzMake 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                     [        SU 0UE5      $ )Nsrc_rootr   )pathattrss     c/var/www/html/venv/lib/python3.13/site-packages/setuptools/tests/config/test_apply_pyprojecttoml.pymakedistr   #   s    T3U344    c           
         U  Vs/ s H1  n[         R                  " SSU[         R                  S9=(       d    SPM3     sn$ s  snf )zx
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I)patterns___ps       r   _mock_expand_patternsr+   '   s9    
 IQQ1BFF<Qbdd3>w>QQQs   8A urlignorec           	        UR                  [        S[        SS95        UR                  [        S[        [        S95        [        U 5      n[        US5      nUR                  SS9n[        5       R                  US	5      nUR                  USS9  [        R                  " [        U5      U5      n[        R                  " [        U5      U5      n[        U5      n	[        U5      n
X:X  d   e[!        S
 Xx4 5       5      (       a.  [#        UR$                  5      [#        UR$                  5      :X  d   e[!        S Xx4 5       5      (       a  ['        UR(                  5        UR(                  R+                  5        VVs1 s H  u  pU/[-        S U 5       5      Q7iM     nnnUR(                  R+                  5        VVs1 s H  u  pU/[-        S U 5       5      Q7iM     nnnX:X  d   e[!        S Xx4 5       5      (       a~  UR.                  R+                  5        VVs1 s H  u  pU/[-        U5      Q7iM     nnnUR.                  R+                  5        VVs1 s H  u  pU/[-        U5      Q7iM     nnnUU:X  d   e[!        S Xx4 5       5      (       ab  UR0                   VVs1 s H  u  pU/[-        U5      Q7iM     nnnUR0                   VVs1 s H  u  pU/[-        U5      Q7iM     nnnUU:X  d   e[#        UR2                  5      [#        UR2                  5      :X  d   e[!        S Xx4 5       5      (       a  UR4                  R+                  5        VVs1 s H  u  pU/[-        U5      Q7iM     nnnUR4                  R+                  5        VVs1 s H  u  pU/[-        U5      Q7iM     nnnUU:X  d   eg g s  snnf s  snnf s  snnf s  snnf s  snnf s  snnf s  snnf s  snnf )N	read_attrz0.0.1)return_value_expand_patterns)side_effectpyproject.tomlutf-8encodingz	setup.cfgc              3  <   #    U  H  n[        US S5      v   M     g7f)license_filesNgetattr.0ds     r   	<genexpr>>test_apply_pyproject_equivalent_to_setupcfg.<locals>.<genexpr>D   s     
L6K71ot,,6K   c              3  <   #    U  H  n[        US S5      v   M     g7f)entry_pointsNr9   r;   s     r   r>   r?   G        
K5J71nd++5Jr@   c              3  D   #    U  H  oR                  S S5      v   M     g7f r!   Nreplacer<   is     r   r>   r?   J        6Aq		#r**A    c              3  D   #    U  H  oR                  S S5      v   M     g7frE   rG   rI   s     r   r>   r?   N   rK   rL   c              3  <   #    U  H  n[        US S5      v   M     g7f)package_dataNr9   r;   s     r   r>   r?   S   rC   r@   c              3  <   #    U  H  n[        US S5      v   M     g7f)
data_filesNr9   r;   s     r   r>   r?   X   s     
I3Ha71lD))3Hr@   c              3  <   #    U  H  n[        US S5      v   M     g7f)extras_requireNr9   r;   s     r   r>   r?   ^   s     
M7L!71&--7Lr@   )setattrr   r   r   r+   r   r   	read_textr   	translate
write_textr   apply_configurationr   r   core_metadataanysetr8   printrB   itemssortedrO   rQ   install_requiresrS   )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_setupcfgrt   /   s    Tw-GH($;P*Q %S)X'78$...@M ",,]KHK  w ?11(82DFWXI++HX,>@PQH!),M *L(((

Ly6K
LLL9**+s83I3I/JJJJ

Ki5J
KKKh##$ "..446
6 76A6676 	 
 !--335
5 76A6675 	 
    

Ki5J
KKK5>5K5K5Q5Q5ST5STQ!fQi5ST4<4I4I4O4O4QR4QDAVAY4QR,,,

II3H
III7@7K7KL7KtqA?q	?7KL6>6I6IJ6Ida1/vay/6IJ.000y))*c(2K2K.LLLL

M	7L
MMM6?6N6N6T6T6VW6Vda1/vay/6VW5=5L5L5R5R5TU5TTQ!fQi5TU... N+

 UR MJ
 XUs0   >"O "O!OO)O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 = "криївка@оун-упа.укр"},
]
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                   U S-  nUnSSU S30nUR                  5        H  u  pgUR                  Xg5      nM     UR                  USS9  X-  R                  SSS9  U S-  R                  S	SS9  U S
-  R                  [        SS9  U$ )Nr3   zreadme = "README.rst"z
readme = ""r4   r5   zhello worldLICENSE.txt--- LICENSE stub ---zspam.py)r]   rH   rW   PEP621_EXAMPLE_SCRIPT)ra   readmepyproject_text	pyprojecttextreplacementsorigsubsts           r   _pep621_example_projectr      s    
 ++ID+z&-CDL#))+||D( ,0""=7"C))*@7)S	%%&;g%Nr   c                    [        U 5      n[        R                  " [        U 5      U5      n[	        UR
                  R                  5      S1:X  d   eg)z&Make sure the example in PEP 621 worksrw   N)r   r   rX   r   r[   metadatar8   ra   r|   dists      r   test_pep621_exampler      sB    '1I,,Xh-?KDt}}**+>>>r   )rz   ctype))z
Readme.txtz
text/plain)z	readme.mdztext/markdown)ztext.rstz
text/x-rstc                    [        X5      n[        R                  " [        U 5      U5      nUR                  R
                  U:X  d   eg Nr   r   rX   r   r   long_description_content_type)ra   rz   r   r|   r   s        r   test_readme_content_typer      s=     (9I,,Xh-?KD==66%???r   c                    [        U S5      n[        R                  " [        SS9   [        R
                  " [        U 5      U5        S S S 5        g ! , (       d  f       g = f)Nz
README.texz%Undefined content type for README.texmatch)r   pytestraises
ValueErrorr   rX   r   )ra   r|   s     r   test_undefined_content_typer      s?    ',?I	z)P	Q))(8*<iH 
R	Q	Qs   !A
Ac                    [        U S5      n[        R                  " [        U 5      U5      nUR                  R
                  b   eg )NREADMEr   r   s      r   3test_no_explicit_content_type_for_missing_extensionr      s;    '(;I,,Xh-?KD==66>>>r   )r{   expected_maintainers_meta_valueug   Brett Cannon <brett@python.org>, "John X. Ãørçeč" <john@utf8.org>, Γαμα קּ 東 <gama@utf8.org>znon-international-emails)iduA   Степан Бандера <криївка@оун-упа.укр>zlCPython's `email.headerregistry.Address` only supports RFC 5322, as of Nov 10, 2022 and latest Python 3.11.0T)reasonstrictzinternational-email)marksr   c                P   [        USUS9n[        R                  " [        U5      U5      nUR                  R
                  U :X  d   eUS-  n[        USSS9 nUR                  R                  U5        S S S 5        UR                  SS9nSU  3U;   d   eg ! , (       d  f       N)= f)Nr   r{   PKG-FILEwr4   r5   zMaintainer-email: )	r   r   rX   r   r   maintainer_emailopenwrite_pkg_filerU   )r   r{   ra   r|   r   pkg_filefhcontents           r    test_utf8_maintainer_in_metadatar      s    8 (%I
 ,,Xh-?KD==))-LLLL*$H	hg	."$$R( 
/  ' 2G ?@AWLLL 
/	.s   B
B%)r{   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                   [        USUS9n[        R                  " [        U5      U5      nUR                  R
                  U :X  d   eUR                  R                  U:X  d   eUS-  n[        USSS9 n	UR                  R                  U	5        S S S 5        UR                  SS9n
SU
;   d   eX*;   d   eX:;  d   eg ! , (       d  f       N4= f)Nr   r   r   r   r4   r5   zMetadata-Version: 2.4)
r   r   rX   r   r   r   r   r   r   rU   )r   r   r   r   r{   ra   r|   r   r   r   r   s              r   test_license_in_metadatar   #  s    P (%I
 ,,Xh-?KD==  G+++==++/AAAA*$H	hg	."$$R( 
/  ' 2G"g---!!!))) 
/	.s   4B>>
Cc                6   [         R                  SS5      S   n[        U SU S35      nSn[        R                  " [
        US9 n[        R                  " [        U 5      U5        S S S 5        S[        WR                  5      ;   d   eg ! , (       d  f       N*= f)	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   rX   r   strvalue)ra   r}   r|   msgexcs        r   /test_license_classifier_with_license_expressionr   \  s    $++D!4Q7D'&CDI
 LC	)	5))(8*<iH 
6 4s399~EEE 
6	5s   !B


Bc                x   Sn[        U SU5      nSnSn[        R                  " [        US9   [        R                  " [        US9   [        R
                  " [        U 5      U5      nS S S 5        S S S 5        WR                  R                  5       S/:X  d   eg ! , (       d  f       N8= f! , (       d  f       NA= f)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   rX   r   r   get_classifiers)ra   r}   r|   msg1msg2r   s         r   2test_license_classifier_without_license_expressionr   j  s    D ((DAICD<D1>1>00(1CYO 	? 	? ==((*/W.XXXX 	?> 	?>s#   B+!B(B+
B(	$B++
B9c                  P    \ rS rSr  SS jrSS jrS rS rS rS r	S r
S	 rS
rg)TestLicenseFilesi  c                    [         nSU;   d   eSU;  d   eSU;  d   e[        R                  " SUUSS9nX4;   d   eU SU S3n[        USUS	9nU$ )
Nzlicense = "mit or apache-2.0"zlicense-filesz[tool.setuptools]z(license = .*)\nr   )countr   r   r   )r   r$   r%   r   )selfra   additional_textlicense_tomlr}   r|   s         r   base_pyprojectTestLicenseFiles.base_pyproject  s     ) /$666d***"$...vv	
 ###r/*"-+HhtT	r   c                $    U R                  UUSS9$ )Nz>license = "licenseref-Proprietary"
license-files = ["_FILE*"]
)r   r   )r   )r   ra   r   s      r   base_pyproject_license_pep639.TestLicenseFiles.base_pyproject_license_pep639  s%    ""+- # 
 	
r   c                :   SnU R                  X5      nUS-  R                  5         US-  R                  5         US-  nUR                  SSS9  SnS	n[        R                  " [
        US
9   [        R                  " [
        US
9   [        R                  " [        U5      U5      nS S S 5        S S S 5        [        WR                  R                  5      SS1:X  d   eUR                  R                  S:X  d   eg ! , (       d  f       NZ= f! , (       d  f       Nc= f)N,[tool.setuptools]
license-files = ["_FILE*"]	_FILE.txt	_FILE.rstrw   zLicenseRef-Proprietary
r4   r5   zQ'tool.setuptools.license-files' is deprecated in favor of 'project.license-files'r   r   )r   touchrW   r   r   r   r   rX   r   r[   r   r8   r   )r   ra   setuptools_configr|   r   r   r   r   s           r   +test_both_license_and_license_files_defined<TestLicenseFiles.test_both_license_and_license_files_defined  s    K''D		K	&&(	K	&&( ]*5Hb@LL5TBLL5TB 44Xh5GSD C C 4==../K3MMMM}}$$(BBBB	 CB CBs$   ,D!C;'D;
D		D
Dc                   U R                  U5      nUS-  R                  5         US-  R                  5         Sn[        R                  " [        US9   [
        R                  " [        U5      U5      nS S S 5        [        WR                  R                  5      SS1:X  d   eUR                  R                  b   eUR                  R                  S:X  d   eg ! , (       d  f       Nk= f)Nr   r   zNormalizing.*LicenseRefr   zLicenseRef-Proprietary)r   r   r   r   r   r   rX   r   r[   r   r8   r   r   )r   ra   r|   r   r   s        r   2test_both_license_and_license_files_defined_pep639CTestLicenseFiles.test_both_license_and_license_files_defined_pep639  s    66x@		K	&&(	K	&&('\\/5 44Xh5GSD 6 4==../K3MMMM}}$$,,,}}//3KKKK 65s   !C
C'c                    SnU R                  X5      nSn[        R                  " [        US9   [        R
                  " [        U5      U5        S S S 5        g ! , (       d  f       g = f)Nr   zR'project.license-files' is defined already. Remove 'tool.setuptools.license-files'r   )r   r   r   r   r   rX   r   )r   ra   r   r|   r   s        r    test_license_files_defined_twice1TestLicenseFiles.test_license_files_defined_twice  sM    K66xS	b]]-S9--hx.@)L :99s   !A
A'c                J   SnU R                  XSS9nSR                  5       nU H  nX-  R                  U S3SS9  M     [        R                  " [        U5      U5      nUS-  R                  5       (       d   e[        UR                  R                  5      1 UkSi:X  d   eg )	Nz"[tool.setuptools]
zip-safe = falser!   )r   z5LICENCE-a.html COPYING-abc.txt AUTHORS-xyz NOTICE,defr   r4   r5   rw   )
r   splitrW   r   rX   r   existsr[   r   r8   )r   ra   r   r|   r8   fnamer   s          r   test_default_patterns&TestLicenseFiles.test_default_patterns  s    A''RT'U	OUUW"E))UG2,)I # 00(1CYO=(0022224==../3R]3RM3RRRRr   c                z   U R                  U5      n[        UR                  S5      5      / :X  d   eSnSn[        R                  " [
        US9   [        R                  " [        US9   [        R                  " [        U5      U5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)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   rX   r   )r   ra   r|   r   r   s        r   test_missing_patterns&TestLicenseFiles.test_missing_patterns  s    66x@	HMM(+,222>QLL5TBLL5--hx.@)L 6 CB55 CBs$   B,)!B
B,
B)	%B,,
B:c                   S[         ;   d   e[         R                  SS5      n[        XS9nSn[        R                  " [
        US9   [        R                  " [        U5      U5      nSSS5        WR                  R                  S:X  d   e[        UR                  R                  5      S1:X  d   eg! , (       d  f       NQ= f)	z?Make sure the old example with ``license = {text = ...}`` workszlicense-files = ["LICENSE.txt"]z license = {file = "LICENSE.txt"}r   r   r   Nrx   rw   )PEP621_EXAMPLErH   r   r   r   r   r   rX   r   r   r   r[   r8   )r   ra   r}   r|   r   r   s         r   $test_deprecated_file_expands_to_text5TestLicenseFiles.test_deprecated_file_expands_to_text  s     1NBBB%%-.
 ,HJ	?\\6cB 44Xh5GSD C }}$$(>>>>4==../M?BBB	 CBs   !B33
C N)r!   z!license = {file = "LICENSE.txt"}
r!   )__name__
__module____qualname____firstlineno__r   r   r   r   r   r   r   r   __static_attributes__r   r   r   r   r     s8     9	0
C,LMS
MCr   r   c                      \ rS rSrS r\R                  R                  SSS/5      S 5       r\R                  R                  S/ SQ5      S 5       r	S	r
g
)TestPyModulesi  c                    SU< S3n[        S5      nUR                  [        U5      SS9  [        R                  " [        0 5      U5      $ )Nzr
        [project]
        name = "test"
        version = "42.0"
        [tool.setuptools]
        py-modules = [z
]
        r3   r4   r5   )r   rW   r   r   rX   r   )r   namere   r|   s       r   r   TestPyModules.dist  sW    
 h 	 )*	Xk2WE00b1A9MMr   modulezpip-runu   abc-d.λ-xyz-ec                f    UR                  U5        X0R                  U5      R                  ;   d   eg r   )chdirr   
py_modulesr   ra   r`   r   s       r   test_valid_module_name$TestPyModules.test_valid_module_name  s+    (#6*55555r   )zpip runz-pip-runzpip-run-stubsc                    UR                  U5        [        R                  " [        SS9   U R	                  U5      R
                    S S S 5        g ! , (       d  f       g = f)Nz
py-modulesr   )r   r   r   r   r   r   r   s       r   test_invalid_module_name&TestPyModules.test_invalid_module_name  s<    (#]]:\:IIf(( ;::s   A
Ar   N)r   r   r   r   r   r   markparametrizer   r   r   r   r   r   r   r     s[    
N [[X	3C'DE6 F6 [[X'OP) Q)r   r   c                      \ rS rSrS rSrg)TestExtModulesi  c                   UR                  U5        [        S5      nSnUR                  [        U5      SS9  [        R
                  " [        R                  5         [        R                  " [        0 5      U5      nS S S 5        [        WR                  5      S:X  d   eUR                  S   R                  S:X  d   e[        UR                  S   R                  5      SS	1:X  d   eg ! , (       d  f       Ns= f)
Nr3   z
        [project]
        name = "test"
        version = "42.0"
        [tool.setuptools]
        ext-modules = [
          {name = "my.ext", sources = ["hello.c", "world.c"]}
        ]
        r4   r5   r   r   zmy.extzhello.czworld.c)r   r   rW   r   r   r   r   _ExperimentalConfigurationrX   r   lenext_modulesr   r[   sources)r   ra   r`   r|   re   r   s         r   test_pyproject_sets_attribute,TestExtModules.test_pyproject_sets_attribute  s    (#)*	 	Xk2WE\\-BBC 44\"5EyQD D4##$)))"''83334##A&../Iy3IIII	 DCs   !C**
C8r   N)r   r   r   r   r  r   r   r   r   r  r    s    Jr   r  c                      \ rS rSrS rSrg)TestDeprecatedFieldsi,  c                    US-  nSnUR                  [        U5      SS9  [        R                  " [        SS9   [
        R                  " [        U5      U5        S S S 5        g ! , (       d  f       g = f)Nr3   z
        [project]
        name = "myproj"
        version = "42"
        [tool.setuptools]
        namespace-packages = ["myproj.pkg"]
        r4   r5   znamespace-packagesr   )rW   r   r   r   r   r   rX   r   )r   ra   r|   configs       r   test_namespace_packages,TestDeprecatedFields.test_namespace_packages-  s`    //	 	Xf-@]]-5IJ--hx.@)L KJJs   !A$$
A2r   N)r   r   r   r   r  r   r   r   r   r  r  ,  s    Mr   r  c                  >   \ rS rSrS#S jr\R                  R                  SS\R                  " SS\R                  R                  S5      /06SSS	/4S
SSS/04S
SSS/04\R                  " SSS/4S\R                  R                  S5      /06/5      S 5       r
\R                  R                  SSSS/ 4SS0 4SSS/4SSS	/4/5      S 5       rS rS rS r\R                  R                  SSS/5      \R                  R                  S5      S  5       5       rS!rg")$TestPresetFieldi;  c                X    SU< S3nSU;  a  US-  nUS-  nUR                  XC-   SS9  U$ )Nz"[project]
name = 'proj'
dynamic = r   versionzversion = '42'
r3   r4   r5   )rW   )r   ra   dynamicextra_contentr   files         r   r|   TestPresetField.pyproject<  sF    82FG#))G**/'Br   )attrfieldr   )r   r   r   )r   r   zNot SPDXr   zignore:.*license. overwrittenclassifierszPrivate :: ClassifierrB   scriptsconsole_scriptsfoobar=foobar:maingui-scriptsgui_scriptszbazquux=bazquux:mainr_   dependenciessixz&ignore:.*install_requires. overwrittenc                `   U R                  U/ 5      n[        U40 X$0D6n[        R                  " SU 3[        R                  5      n[
        R                  " [        US9   [        R                  " Xe5      nSSS5        [        SU 3U5      " U5      nU(       a   eg! , (       d  f       N-= f)z:Setuptools cannot set a field if not listed in ``dynamic``z&defined outside of `pyproject.toml`:.*r   N	metadata.)r|   r   r$   compileSr   r   r   r   rX   r   )	r   ra   r  r  r   r|   r   r   
dist_values	            r   test_not_listed_in_dynamic*TestPresetField.test_not_listed_in_dynamicD  s    * NN8R0	2TM2jjA%I244P\\/5 44TED 6 &	$&8$?E
~:	 65s   !B
B-rS   zoptional-dependenciesc                    U R                  X/5      n[        U40 X$0D6n[        R                  " Xe5      n[	        SU 3U5      " U5      nXt:X  d   eg )Nr#  )r|   r   r   rX   r   )r   ra   r  r  r   r|   r   r&  s           r   test_listed_in_dynamic&TestPresetField.test_listed_in_dynamicb  sY     NN8W5	2TM200A%	$&8$?E
"""r   c                    UR                  U5        U R                  U/ 5      n[        US/S9nUS-  R                  SSS9  [        R
                  " XC5      nUR                  R                  S/:X  d   eg)a(  
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   rW   r   rX   r   r8   )r   r`   ra   r|   r   s        r   &test_license_files_exempt_from_dynamic6TestPresetField.test_license_files_exempt_from_dynamics  sr     	(#NN8R0	9	F	&&tg&>00A}}**vh666r   c                    SnUS-  nUR                  USS9  [        US/S9n[        R                  " SS9   [        R
                  " XC5      nS S S 5        SUR                  ;  d   eg ! , (       d  f       N!= f)	Nz:[project]
name='pkg'
version='0.1'
dependencies=['click']
r3   r4   r5   wheelr_   z`install_requires` overwrittenr   )rW   r   r   r   r   rX   r_   )r   ra   srcr|   r   s        r   %test_warning_overwritten_dependencies5TestPresetField.test_warning_overwritten_dependencies  st    N//	S73G9=\\ @A 44TED Bd33333 BAs   A))
A7c                ,   SnU R                  US/U5      nS/n[        XS9n[        R                  " XS5      nSUR                  ;   d   eUR                  S5      n[        XaUS-  5        US-  R                  SS	9nS
U;   d   eSU;   d   eSU;   d   eg)z
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"r3  fooegg_infozrequires.txtr4   r5   zimportlib-resourcesbarz:python_version < "3.7"N)r|   r   r   rX   rS   get_command_objr
   rU   )r   ra   extrar|   install_reqr   r9  reqss           r   2test_optional_dependencies_dont_remove_env_markersBTestPresetField.test_optional_dependencies_dont_remove_env_markers  s     GNN8n-=uE	OP?00A+++++''
38x./HI>)44g4F$,,,}}(D000r   )r  group)r  r  )r  r  errorc                    U R                  X/5      n[        XS/0S9n[        R                  " XT5      nX5R                  ;   d   eg )Nr  )rB   )r|   r   r   rX   rB   )r   ra   r  rA  r|   r   s         r   .test_scripts_dont_require_dynamic_entry_points>TestPresetField.test_scripts_dont_require_dynamic_entry_points  sI     NN8W5	8L7M/NO00A)))))r   r   Nr   )r   r   r   r   r|   r   r   r   paramfilterwarningsr'  r*  r/  r5  r?  rD  r   r   r   r   r  r  ;  s    [["4LL3{{112QRS M,C+DEY):=Q<R(ST]]=S<T,UVLL$nug> KK../WX	
&	'&	 [["446;%9M,C+DE	
	#	#7(41, [[	')GH [[(* )	
*r   r  c                      \ rS rSrS rSrg)TestMetai  c                    [         R                  " U5       n[        S UR                  5        5       5      (       d   e SSS5        g! , (       d  f       g= f)z,Meta test to ensure tests can run from sdistc              3  J   #    U  H  oR                  [        5      v   M     g 7fr   )endswithEXAMPLES_FILE)r<   r   s     r   r>   6TestMeta.test_example_file_in_sdist.<locals>.<genexpr>  s     O}}]33s   !#N)tarfiler   rZ   getnames)r   setuptools_sdisttars      r   test_example_file_in_sdist#TestMeta.test_example_file_in_sdist  s:    \\*+sOOOOOO ,++s   (A		
Ar   N)r   r   r   r   rS  r   r   r   r   rI  rI    s    Pr   rI  c                      \ rS rSrS rSrg)TestInteropCommandLineParsingi  c                "   UR                  U5        Sn[        US5      nUR                  [        U5      SS9  SS/0n[        R
                  " [        U5      U5      nUR                  5         UR                  5       nSUR                  ;   d   eg )NzJ
        [project]
        name = "test"
        version = "42.0"
        r3   r4   r5   script_argsz	--versionz42.0)
r   r   rW   r   r   rX   r   parse_command_line
readouterrout)	r   ra   r`   capsysre   r|   optsr   captureds	            r   test_version*TestInteropCommandLineParsing.test_version  s     	(#
 #34	Xk2WE}-00d1CYO!$$&%%%r   r   N)r   r   r   r   r_  r   r   r   r   rV  rV    s    &r   rV  c                      \ rS rSrS rSrg)TestStaticConfigi  c                h   UR                  U5        Sn[        US5      nUR                  [        U5      SS9  [        R
                  " [        0 5      U5      n[        UR                  5      (       d   e[        UR                  R                  5      (       d   e[        UR                  R                  5      (       d   e[        UR                  R                  5      (       d   e[        UR                  R                  5      (       d   e[        UR                  R                  5      (       d   eg )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   rW   r   r   rX   r   r	   r_   r   keywordsr  	obsoletesprovides	platforms)r   ra   r`   re   r|   r   s         r   test_mark_static_fields(TestStaticConfig.test_mark_static_fields  s    (# #34	Xk2WE00b1A9M..//////0000223333001111//0000001111r   r   N)r   r   r   r   rh  r   r   r   r   rb  rb    s    2r   rb  c                   [         R                  " 5        nU R                  R                  U5        UR	                  5       nS S S 5        [
        R                  " WSS9  Sn[        5       nUS-  nUS-  nUS-  nUR                  S5        / nUR                  5        H4  nUR                  U5      (       d  Xd;   a  M   UR                  US-   5        M6     SR                  U5      $ ! , (       d  f       N= f)	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_emailr[   add
splitlines
startswithappendjoin)r   bufferpkg_file_txtskip_prefixes
skip_linesresultlines          r   rY   rY     s    	&$$V,( 

 t4%'MJ UUM==M33MNN2F'')??=))T-?dTk" *
 776?3 
s   ,C&&
C4)returnr   )L__doc__
__future__r   rl  r$   rO  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HERErM  r   r+   r   r   rG  uses_networkrt   r   "PEP621_INTERNATIONAL_EMAIL_EXAMPLEry   PEP639_LICENSE_TEXTr   r   r   r   r   r   rF  xfailr   r   r   r   r   r   r  r  r  rI  rV  rb  rY   r   r   r   <module>r     s   # 	 	      ' '  ( : = = T ( D M 4H~'5R tm/C DEH%//  & F//d2h& " 	  $ !$? @@I? 93 *	
 	.O++##H $ 
 %		
.M/.M&  	"**L	
 	%3#	
@*A@*2FY,yC yCx) )6J J*M Mu* u*pP P& &&2 2:r   