
    vKgv0              
       d   S SK r S SKJ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rS SKJrJrJrJrJr  S SKJr  S SKJr  S SKrSrS	 rS
 rS r\R8                  R;                  SS0 4S0 4SSSSS/0004/5      S 5       rSS0SS0SS0S.r " S S5      r  " S S5      r!\R8                  R;                  SS 5      S! 5       r"\R8                  R;                  S"S#/5      S$ 5       r#\R8                  R;                  S%S&5      S' 5       r$\R8                  R;                  S%S(5      S) 5       r%S* r&S+ r'g),    N)ConfigParser)cleandoc)Path)_ToolsTypoInMetadataapply_configurationexpand_configurationread_configurationvalidate)Distribution)OptionErrora  
[project]
name = "myproj"
keywords = ["some", "key", "words"]
dynamic = ["version", "readme"]
requires-python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
dependencies = [
    'importlib-metadata>=0.12;python_version<"3.8"',
    'importlib-resources>=1.0;python_version<"3.7"',
    'pathlib2>=2.3.3,<3;python_version < "3.4" and sys.platform != "win32"',
]

[project.optional-dependencies]
docs = [
    "sphinx>=3",
    "sphinx-argparse>=0.2.5",
    "sphinx-rtd-theme>=0.4.3",
]
testing = [
    "pytest>=1",
    "coverage>=3,<5",
]

[project.scripts]
exec = "pkg.__main__:exec"

[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"

[tool.setuptools]
package-dir = {"" = "src"}
zip-safe = true
platforms = ["any"]

[tool.setuptools.packages.find]
where = ["src"]

[tool.setuptools.cmdclass]
sdist = "pkg.mod.CustomSdist"

[tool.setuptools.dynamic.version]
attr = "pkg.__version__.VERSION"

[tool.setuptools.dynamic.readme]
file = ["README.md"]
content-type = "text/markdown"

[tool.setuptools.package-data]
"*" = ["*.txt"]

[tool.setuptools.data-files]
"data" = ["_files/*.txt"]

[tool.distutils.sdist]
formats = "gztar"

[tool.distutils.bdist_wheel]
universal = true
c                     [         SSS0S.nSSSSSS	.0nU(       d   eUS
:X  a  0 UEUEnO0 UESSSS000EX!'   [        R                  R                  X S9  g )Nhello worldzfile.txt )pyproject.tomlz	README.md_filespkgzclass CustomSdist: passzVERSION = (3, 10)zdef exec(): print('hello'))__init__.pyzmod.pyz__version__.pyz__main__.py.othernestedr   prefix)EXAMPLEjaracopathbuild)r   pkg_rootfilespackagess       j/var/www/highfloat_scraper/venv/lib/python3.13/site-packages/setuptools/tests/config/test_pyprojecttoml.pycreate_exampler!   U   s    !"
E 	/17	
H O83%5%H% QXPwM2;N0OP
KKe)    c                    US-  nUR                  [        R                  " U 5      SS9  [        X5      nUS   n[	        USS9U:X  d   eUS   S:X  d   eUS	   S
   S:X  d   eSUS   S   ;   d   eUS:X  a  [        US   S   S   5      S1:X  d   eO[        US   S   S   5      1 Sk:X  d   eUS   S   S   SL d   eSUS   S   S   ;   d   eSUS   S   S   ;  d   eUS   S   S   SS/4/:X  d   eg )Nr   utf-8encodingprojectTexpandversionz3.10readmetextr   r   tool
setuptoolsr   r   >   r   r   other.nestedinclude-package-datar   zpackage-data*z
data-filesdataz_files/file.txt)
write_texttomli_wdumpsr   r	   set)configr   r   	pyprojectexpandedexpanded_projects         r    verify_exampler;   r   sy   ''Iv.A#F1H	*i5AAAI&&000H%f->>>&),777738F#L1*=>5'III8F#L1*=> C
 
 	
 

 FL)*@ATIII&!,/????hv&|4^DDDDFL),7	#$%<   r"   c                     [        U S5        U S-  n[        USS9nUS   R                  S5      b   eUS   R                  S5      b   e[        X S5        g )Nsrcr   Fr(   r'   r*   r+   )r!   r	   getr;   )tmp_pathr8   r7   s      r    test_read_configurationr@      se    8U#++I	%8F)  +333)  *2226U+r"   )r   optsr   r=   libr   findwherec                 :   [        X5        U S-  n[        USS9nUS   R                  S5      b   eUS   R                  S5      b   eUS   S   R                  S	S 5        US   S   R                  S
S 5        US   S   R	                  U5        [        X@U5        g )Nr   Fr(   r'   r*   r+   r-   r.   r   zpackage-dir)r!   r	   r>   popupdater;   )r?   r   rA   r8   r7   s        r    9test_discovered_package_dir_with_attr_directive_in_configrH      s     8&++I	%8F)  +333)  *222
6N< $$Z6
6N< $$]D9
6N< ''-6X.r"   a
mod.a:funcb
mod.b:funccmod.c:func [extra])console_scriptsgui_scriptsr   c                   n    \ rS rSrS rS
S jrS r\R                  R                  SS5      S 5       r
S	rg)TestEntryPoints   c                     [        5       nUR                  [        5        [        US-  SSS9 nUR	                  U5        S S S 5        g ! , (       d  f       g = f)Nentry-points.txtwr$   r%   )r   	read_dictENTRY_POINTSopenwrite)selfr?   entry_pointsfs       r    write_entry_points"TestEntryPoints.write_entry_points   sF    #~|,(//wG1q! HGGs   A		
ANc                 >    SU=(       d    / SQ0nSSSS000nUSU0S.$ )Ndynamic)scriptsgui-scriptsentry-pointsrd   filerU   r.   )r'   r-    )r[   ra   r'   r-   s       r    r8   TestEntryPoints.pyproject   s7    gS)STNV5G,HIJ"\4,@AAr"   c                 6   U R                  U5        [        U R                  5       U5      nUS   n[        US   5      S:X  d   eUS   S   S:X  d   e[        US   5      S:X  d   eUS   S   S:X  d   e[        US	   5      S:X  d   eUS	   S
   S   S:X  d   eg )Nr'   rb      rI   rJ   rc   rK   rL   rd   r   rM   rN   )r^   r   r8   len)r[   r?   r9   r:   s       r    test_all_listed_in_dynamic*TestEntryPoints.test_all_listed_in_dynamic   s    )'(8(C#I.#I./1444	*3/<???#M23q888.s3|CCC#N34999/8=AUUUUr"   missing_dynamic)rb   rc   c                 "   U R                  U5        1 SkU1-
  nSU 3n[        R                  " [        [        R
                  " U[        R                  5      S9   [        U R                  U5      U5        S S S 5        g ! , (       d  f       g = f)N>   rb   rc   rd   z&defined outside of `pyproject.toml`:.*match)	r^   pytestraisesr   recompileSr   r8   )r[   r?   rm   ra   msgs        r    "test_scripts_not_listed_in_dynamic2TestEntryPoints.test_scripts_not_listed_in_dynamic   sg    )<?PP66GH]];bjjbdd.CD !8(C EDDs   B  
Brf   )N)__name__
__module____qualname____firstlineno__r^   r8   rk   rq   markparametrizerw   __static_attributes__rf   r"   r    rR   rR      s=    "B
	V [[.0JKD LDr"   rR   c                   ,    \ rS rSrS rS rS rS rSrg)TestClassifiers   c                 2   [        US5        [        S5      nUS-  R                  USS9  US-  n[        USS9nUS	   S
   n[	        1 UkSi5      US	   S
'   US   S   S
   nSS0US'   [        XC5        [        XA5      n[        US	   S   5      SS1:X  d   eg )Nr=   zX
            Framework :: Flask
            Programming Language :: Haskell
            zclassifiers.txtr$   r%   r   Fr(   r'   ra   classifiersr-   r.   re   zFramework :: FlaskzProgramming Language :: Haskell)r!   r   r3   r	   listr
   r   r6   )r[   r?   r   r8   r7   ra   dynamic_configr9   s           r    test_dynamicTestClassifiers.test_dynamic   s     	x'
 
%	%11+1P//	#Ie<#I.'+,Eg,E},E'Fy)$5i@)/1B(C}% 	#'98I&}56 -;
 
 	
 
r"   c                     SnUS-  nUR                  [        U5      SS9  [        R                  " [        SS9   [        U5        S S S 5        g ! , (       d  f       g = f)Nzl
        [project]
        name = "myproj"
        version = '42'
        dynamic = ["classifiers"]
        r   r$   r%   z!No configuration .* .classifiers.ro   )r3   r   rq   rr   r   r	   )r[   r?   r7   r8   s       r    test_dynamic_without_config+TestClassifiers.test_dynamic_without_config   sR     //	Xf-@]];.QRy) SRRs   A
Ac                     SnUS-  nUR                  [        U5      SS9  [        SS0S9n[        XC5      nUR                  R
                  S:X  d   eg )Nzg
        [project]
        name = "myproj"
        version = '42'
        dynamic = ["readme"]
        r   r$   r%   long_description42)attrs)r3   r   r   r   metadatar   )r[   r?   r7   r8   dists        r    *test_dynamic_readme_from_setup_script_args:TestClassifiers.test_dynamic_readme_from_setup_script_args  s`     //	Xf-@#5t"<="43}}--555r"   c                     SnUS-  nUR                  [        U5      SS9  [        R                  " [        SS9   [        U5      nS S S 5        SWS   ;  d   eg ! , (       d  f       N= f)	Nz
        [project]
        name = "myproj"
        version = '42'
        dynamic = ["classifiers"]

        [tool.setuptools.dynamic]
        classifiers = {file = ["classifiers.txt"]}
        r   r$   r%   z'File .*classifiers.txt. cannot be foundro   r   r'   )r3   r   rq   warnsUserWarningr	   )r[   r?   r7   r8   r9   s        r    test_dynamic_without_file)TestClassifiers.test_dynamic_without_file  sj     //	Xf-@\\+-VW))4H XHY$7777 XWs   A
A(rf   N)	ry   rz   r{   r|   r   r   r   r   r   rf   r"   r    r   r      s    
:*68r"   r   example)z
        [project]
        name = "myproj"
        version = "1.2"

        [my-tool.that-disrespect.pep518]
        value = 42
        c                 \    U S-  nUR                  [        U5      SS9  [        U5      c   eg Nr   r$   r%   )r3   r   r	   )r?   r   r8   s      r    test_ignore_unrelated_configr   !  s:     ++I'*W= i(444r"   )r   	error_msg)z
            [project]
            name = "myproj"
            version = "1.2"
            requires = ['pywin32; platform_system=="Windows"' ]
            zGconfiguration error: .project. must not contain ..requires.. propertiesc                 0   U S-  nUR                  [        U5      SS9  [        R                  " SU S3[        R                  [        R
                  -  5      n[        R                  " [        US9   [        U5        S S S 5        g ! , (       d  f       g = f)Nr   r$   r%   zinvalid pyproject.toml.*z.*ro   )
r3   r   rs   rt   Mru   rq   rr   
ValueErrorr	   )r?   r   r   r8   patterns        r    test_invalid_exampler   6  so     ++I'*W=jj3I;bA244"$$;OG	z	19% 
2	1	1s   2B
Br7   )r   z[tool.something]
value = 42c                 P    U S-  nUR                  USS9  [        U5      0 :X  d   eg r   r3   r	   r?   r7   r8   s      r    
test_emptyr   M  s5    ++I'2 i(B...r"   )'[project]
name = 'myproj'
version='42'
c                 d    U S-  nUR                  USS9  [        U5      nUS   S   S   SL d   eg)	zYBuilds with ``pyproject.toml`` should consider ``include-package-data=True`` as
default.
r   r$   r%   r-   r.   r0   TNr   r   s      r    $test_include_package_data_by_defaultr   V  sI    
 ++I'2	*F&>,'(>?4GGGr"   c                 J   SSS.n[         R                  R                  XS9  [        U 5         [        R
                  R                  S0 SS9nSSS5        WR                  5       S	:X  d   eUR                  5       S
:X  d   eUR                  SL d   eg! , (       d  f       NL= f)zBuilds with ``pyproject.toml`` should consider ``include_package_data`` set in
``setup.py``.

See https://github.com/pypa/setuptools/issues/3197#issuecomment-1079023889
r   z:__import__('setuptools').setup(include_package_data=False))r   setup.pyr   r   r7   )
stop_afterNmyprojr   F)
r   r   r   r   	distutilscore	run_setupget_nameget_versioninclude_package_data)r?   r   r   s      r    $test_include_package_data_in_setuppyr   b  s     GPE KKe-	h~~''
B8'L 
 ==?h&&&%%%$$--- 
s    B
B"c                     SnU S-  nUR                  [        U5      SS9  [        R                  " [        5         [        U5        SSS5        g! , (       d  f       g= f)zTest that the common ``tools.setuptools`` typo in ``pyproject.toml`` issues a warning

See https://github.com/pypa/setuptools/issues/4150
z
    [build-system]
    requires = ["setuptools"]
    build-backend = "setuptools.build_meta"

    [project]
    name = "myproj"
    version = '42'

    [tools.setuptools]
    packages = ["package"]
    r   r$   r%   N)r3   r   rq   r   r   r	   r   s      r    test_warn_tools_typor   v  sO    
F ++I&)G<	*	+9% 
,	+	+s   A
A)(rs   configparserr   inspectr   jaraco.pathr   rq   r4   r   r   r.   setuptools.config.pyprojecttomlr   r   r   r	   r
   setuptools.distr   setuptools.errorsr   distutils.corer   r   r!   r;   r@   r}   r~   rH   rX   rR   r   r   r   r   r   r   r   rf   r"   r    <module>r      s   	 %        ) ) ;|*:4, 	b			fw&89:;//  \*&'(D DBH8 H8V 	55 	

&& #GH/ I/ #RSH TH.(&r"   