
    ,hp                       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)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                     t        d| i|      S )Nsrc_rootr   )pathattrss     r/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/setuptools/tests/config/test_apply_pyprojecttoml.pymakedistr   #   s    T3U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I)patterns___ps       r   _mock_expand_patternsr+   '   s5    
 IQQ1BFF<Qbdd3>w>QQQs   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              rt'        |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>D   s     
L71ot,
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>G        
K71nd+
Kr?   c              3  @   K   | ]  }|j                  d d        yw r!   Nreplacer<   is     r   r>   z>test_apply_pyproject_equivalent_to_setupcfg.<locals>.<genexpr>J        6q		#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>N   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>S   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>X   s     
Ia71lD)
Ir?   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!71&-
Mr?   )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   /   s    Tw-GH($;P*Q %S)X'78$...@M ",,]KHK  w ?11(82DFWXI++HX,>@PQH!),M *LL((

Ly(6K
LL9**+s83I3I/JJJ

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

Ki5J
KK5>5K5K5Q5Q5STTQ!fQiTT4<4I4I4O4O4QRDAqVAYRR,,

IIx3H
II7@7K7KLtq!A?q	?LL6>6I6IJda1/vay/JJ.00y))*c(2K2K.LLL

M	87L
MM6?6N6N6T6T6VWda1/vay/WW5=5L5L5R5R5TUTQ!fQi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 = "криївка@оун-упа.укр"},
]
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DL#))+ )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    '1I,,Xh-?KD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?     (&9I,,Xh-?KD==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,,Xh-?KD==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)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   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
 ,,Xh-?KD==))-LLL*$H	hg	. )"$$R()  ' 2G ?@AW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
 ,,Xh-?KD==  G++==++/AAA*$H	hg	. )"$$R()  ' 2G"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!4Q7D'&CDI
 LC	)	5 I))(8*<iHI 4s399~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   j  s    D ((DAICD<D1>P1>P 00(1CY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  sz     ) /$66d**"$..vv	
 t##r/*"-+Hht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@LL5TB	TLL5TB	T !44Xh5GSD		T 	T
 4==../K3M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6x@		K	&&(	K	&&('\\/5 	T 44Xh5GSD	T 4==../K3M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6xARS	b]]-S9 	M--hx.@)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''2CRT'U	OUUW" 	JE))UG2,)I	J 00(1CYO=(00224==../3R]3RM3R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6x@	HMM(+,22>QLL5TB	MLL5	M --hx.@)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     1NBB%%-.
 ,HTJ	?\\6cB 	T 44Xh5GSD	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 	 )*	Xk2WE00b1A9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    (#]]:\: 	)IIf((	) 	) 	)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y)TestExtModulesc                   |j                  |       t        d      }d}|j                  t        |      d       t	        j
                  t        j                        5  t        j                  t        i       |      }d d d        t        j                        dk(  sJ |j                  d   j                  dk(  sJ t        |j                  d   j                        dd	hk(  sJ y # 1 sw Y   kxY w)
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   rV   r   r   r   r   _ExperimentalConfigurationrW   r   lenext_modulesr   rZ   sources)r   r`   r_   r{   rd   r   s         r   test_pyproject_sets_attributez,TestExtModules.test_pyproject_sets_attribute  s    (#)*	 	Xk2WE\\-BBC 	R 44\"5EyQD	R4##$))"''8334##A&../Iy3IIII		R 	Rs    C((C1N)r   r   r   r   r   r   r   r   r     s    J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_packages-  sl    //	 	Xf-@]]-5IJ 	M--hx.@)L	M 	M 	Ms    A((A1N)r   r   r   r   r   r   r   r   r   ,  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.pyproject<  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Sr   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_dynamicD  s    * NN8R0	2T5M2jjA%I244P\\/5 	F 44T9ED	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_dynamicb  sd     NN8eW5	2T5M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_dynamics  st     	(#NN8R0	9	F	&&tg&>00yA}}**vh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//	S73G9=\\ @A 	F 44T9ED	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NN8n-=uE	OP;?00yA++++''
38Xx./HI>)44g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  r+  r{   r   s         r   .test_scripts_dont_require_dynamic_entry_pointsz>TestPresetField.test_scripts_dont_require_dynamic_entry_points  sQ     NN8eW5	8L7M/NO00yA)))))r   Nr   )r   r   r   r{   r   r   r   paramfilterwarningsr  r  r  r!  r*  r.  r   r   r   r  r  ;  s    [["4FLL3{{112QRS M,C+DEY):=Q<R(ST]]=S<T,UVFLL$nug> KK../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Os   !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   r;  r   r   r   r2  r2    s    Pr   r2  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	Xk2WE}-00d1CYO!$$&%%%r   N)r   r   r   rF  r   r   r   r=  r=    s    &r   r=  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	Xk2WE00b1A9M..////0022330011//0000111r   N)r   r   r   rN  r   r   r   rH  rH    s    2r   rH  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UM==M33MNN2F'') #??=)TZ-?dTk"#
 776?3) )s   ,CC')returnr   )L__doc__
__future__r   rQ  r$   r7  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HEREr6  r   r+   r   r   r0  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  r2  r=  rH  rX   r   r   r   <module>rx     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   