
    ϶vgv0              
          d dl Z d dlm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Zd dlmZmZmZmZmZ d dlmZ d dlmZ d dlZdZd	 Zd
 Zd Zej                            ddi fdi fdddddgiiifg          d             ZddiddiddidZ G d d          Z  G d d          Z!ej                            dd           d!             Z"ej                            d"d#g          d$             Z#ej                            d%d&          d'             Z$ej                            d%d(          d)             Z%d* Z&d+ Z'dS ),    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                     t           dddid}dddddd	i}|sJ |d
k    ri ||}ni |ddddiii||<   t          j                            ||            d S )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       g/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/setuptools/tests/config/test_pyprojecttoml.pycreate_exampler!   U   s    !"
 E 	/17	
 
H OOO3%5%H% QXPwM2;N0OPPh
KeD)))))    c                    |dz  }|                     t          j        |           d           t          | |          }|d         }t	          |d          |k    sJ |d         dk    sJ |d	         d
         dk    sJ d|d         d         v sJ |dk    r)t          |d         d         d                   dhk    sJ n)t          |d         d         d                   h dk    sJ |d         d         d         du sJ d|d         d         d         v sJ d|d         d         d         vsJ |d         d         d         ddgfgk    sJ d S )Nr   utf-8encodingprojectTexpandversionz3.10readmetextr   r   tool
setuptoolsr   r   >   other.nestedr   r   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   s   ''Iv..AAA#FD11H	*i555AAAAI&&0000H%f->>>>&),7777738F#L1*=>>5'IIIII8F#L1*=>> C
 C
 C
 
 
 
 

 FL)*@ATIIII&!,/?????hv&|4^DDDDDFL),7	#$%<      r"   c                     t          | d           | dz  }t          |d          }|d                             d          J |d                             d          J t          || d           d S )Nsrcr   Fr(   r'   r*   r+   )r!   r	   getr;   )tmp_pathr8   r7   s      r    test_read_configurationr@      s    8U###++I	%888F)  ++333)  **22268U+++++r"   )r   optsr   r=   libr   findwherec                    t          | |           | dz  }t          |d          }|d                             d          J |d                             d          J |d         d                             d	d            |d         d                             d
d            |d         d                             |           t          || |           d S )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     8X&&&++I	%888F)  ++333)  **222
6N< $$Z666
6N< $$]D999
6N< ''---68X.....r"   a
mod.a:funcb
mod.b:funccmod.c:func [extra])console_scriptsgui_scriptsr   c                   j    e Zd Zd ZddZd Zej                            dd          d             Z	dS )	TestEntryPointsc                     t                      }|                    t                     t          |dz  dd          5 }|                    |           d d d            d S # 1 swxY w Y   d S )Nentry-points.txtwr$   r%   )r   	read_dictENTRY_POINTSopenwrite)selfr?   entry_pointsfs       r    write_entry_pointsz"TestEntryPoints.write_entry_points   s    #~~|,,,(//wGGG 	"1q!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   A!!A%(A%Nc                 0    d|pg di}ddddiii}|d|idS )Ndynamic)scriptsgui-scriptsentry-pointsrb   filerT   r.   )r'   r-    )rZ   r_   r'   r-   s       r    r8   zTestEntryPoints.pyproject   s@    gS)S)S)STNV5G,HIJ"\4,@AAAr"   c                    |                      |           t          |                                 |          }|d         }t          |d                   dk    sJ |d         d         dk    sJ t          |d                   dk    sJ |d         d         dk    sJ t          |d	                   dk    sJ |d	         d
         d         dk    sJ d S )Nr'   r`      rI   rJ   ra   rK   rL   rb   r   rM   rN   )r]   r   r8   len)rZ   r?   r9   r:   s       r    test_all_listed_in_dynamicz*TestEntryPoints.test_all_listed_in_dynamic   s    )))'(8(8(CC#I.#I.//14444	*3/<????#M233q8888.s3|CCCC#N3449999/8=AUUUUUUUr"   missing_dynamic)r`   ra   c                 2   |                      |           h d|hz
  }d| }t          j        t          t	          j        |t          j                            5  t          |                     |          |           d d d            d S # 1 swxY w Y   d S )N>   r`   ra   rb   z&defined outside of `pyproject.toml`:.*match)	r]   pytestraisesr   recompileSr   r8   )rZ   r?   ri   r_   msgs        r    "test_scripts_not_listed_in_dynamicz2TestEntryPoints.test_scripts_not_listed_in_dynamic   s    )))<<<?PPHHH];bjbd.C.CDDD 	D 	D !8!8(CCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	Ds   $BBB)N)
__name__
__module____qualname__r]   r8   rh   rm   markparametrizers   rd   r"   r    rR   rR      s        " " "B B B B
	V 	V 	V [.0JKKD D LKD D Dr"   rR   c                   &    e Zd Zd Zd Zd Zd ZdS )TestClassifiersc                    t          |d           t          d          }|dz                      |d           |dz  }t          |d          }|d	         d
         }t	          h |d          |d	         d
<   |d         d         d
         }ddi|d<   t          ||           t          ||          }t          |d	         d                   ddhk    sJ d S )Nr=   zX
            Framework :: Flask
            Programming Language :: Haskell
            zclassifiers.txtr$   r%   r   Fr(   r'   r_   classifiersr-   r.   rc   zFramework :: FlaskzProgramming Language :: Haskell)r!   r   r3   r	   listr
   r   r6   )rZ   r?   r|   r8   r7   r_   dynamic_configr9   s           r    test_dynamiczTestClassifiers.test_dynamic   s    	x'''
 
 
%	%11+1PPP//	#Ie<<<#I.'+,Eg,E},E'F'Fy)$5i@)/1B(C}% 	###'998I&}566 -;
 
 
 
 
 
 
r"   c                     d}|dz  }|                     t          |          d           t          j        t          d          5  t          |           d d d            d S # 1 swxY w Y   d S )Nzl
        [project]
        name = "myproj"
        version = '42'
        dynamic = ["classifiers"]
        r   r$   r%   z!No configuration .* .classifiers.rk   )r3   r   rm   rn   r   r	   )rZ   r?   r7   r8   s       r    test_dynamic_without_configz+TestClassifiers.test_dynamic_without_config   s     //	Xf--@@@];.QRRR 	* 	*y)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s   A$$A(+A(c                     d}|dz  }|                     t          |          d           t          ddi          }t          ||          }|j        j        dk    sJ d S )Nzg
        [project]
        name = "myproj"
        version = '42'
        dynamic = ["readme"]
        r   r$   r%   long_description42)attrs)r3   r   r   r   metadatar   )rZ   r?   r7   r8   dists        r    *test_dynamic_readme_from_setup_script_argsz:TestClassifiers.test_dynamic_readme_from_setup_script_args  sx     //	Xf--@@@#5t"<==="433}-555555r"   c                     d}|dz  }|                     t          |          d           t          j        t          d          5  t          |          }d d d            n# 1 swxY w Y   d|d         vsJ d S )	Nz
        [project]
        name = "myproj"
        version = '42'
        dynamic = ["classifiers"]

        [tool.setuptools.dynamic]
        classifiers = {file = ["classifiers.txt"]}
        r   r$   r%   z'File .*classifiers.txt. cannot be foundrk   r|   r'   )r3   r   rm   warnsUserWarningr	   )rZ   r?   r7   r8   r9   s        r    test_dynamic_without_filez)TestClassifiers.test_dynamic_without_file  s     //	Xf--@@@\+-VWWW 	5 	5))44H	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5HY$7777777s   A##A'*A'N)rt   ru   rv   r   r   r   r   rd   r"   r    rz   rz      sP        
 
 
:* * *6 6 68 8 8 8 8r"   rz   example)z
        [project]
        name = "myproj"
        version = "1.2"

        [my-tool.that-disrespect.pep518]
        value = 42
        c                 z    | dz  }|                     t          |          d           t          |          J d S Nr   r$   r%   )r3   r   r	   )r?   r   r8   s      r    test_ignore_unrelated_configr   !  sL     ++I'**W=== i((44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                 >   | dz  }|                     t          |          d           t          j        d| dt          j        t          j        z            }t          j        t          |          5  t          |           d d d            d S # 1 swxY w Y   d S )Nr   r$   r%   zinvalid pyproject.toml.*z.*rk   )
r3   r   ro   rp   Mrq   rm   rn   
ValueErrorr	   )r?   r   r   r8   patterns        r    test_invalid_exampler   6  s     ++I'**W===jAIAAA24"$;OOG	z	1	1	1 & &9%%%& & & & & & & & & & & & & & & & & &s   5BBBr7   )r   z[tool.something]
value = 42c                 h    | dz  }|                     |d           t          |          i k    sJ d S r   r3   r	   r?   r7   r8   s      r    
test_emptyr   M  sG    ++I'222 i((B......r"   )'[project]
name = 'myproj'
version='42'
c                     | dz  }|                     |d           t          |          }|d         d         d         du sJ dS )	zaBuilds 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  s[    
 ++I'222	**F&>,'(>?4GGGGGGr"   c                 b   ddd}t           j                            ||            t          |           5  t          j                            di d          }ddd           n# 1 swxY w Y   |                                d	k    sJ |                                d
k    sJ |j	        du sJ dS )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 KeH---	h M M~''
B8'LLM M M M M M M M M M M M M M M ==??h&&&&%%%%$------s   #A%%A),A)c                     d}| dz  }|                     t          |          d           t          j        t                    5  t          |           ddd           dS # 1 swxY w Y   dS )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   rm   r   r   r	   r   s      r    test_warn_tools_typor   v  s    
F ++I&))G<<<	*	+	+ & &9%%%& & & & & & & & & & & & & & & & & &s   A""A&)A&)(ro   configparserr   inspectr   jaraco.pathr   rm   r4   r   r   r.   setuptools.config.pyprojecttomlr   r   r   r	   r
   setuptools.distr   setuptools.errorsr   distutils.corer   r   r!   r;   r@   rw   rx   rH   rW   rR   rz   r   r   r   r   r   r   rd   r"   r    <module>r      s   				 % % % % % %                                    ) ( ( ( ( ( ) ) ) ) ) )    ;|* * *:  4, , , 	b			fw&89:; / / /  \*&'( D D D D D D D DBH8 H8 H8 H8 H8 H8 H8 H8V 	 5 5 5 	

 & & & #GHH/ / IH/ #RSSH H TSH. . .(& & & & &r"   