
    ,hv0              
       d   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j8                  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j8                  j;                  dd       d!        Z"ej8                  j;                  d"d#g      d$        Z#ej8                  j;                  d%d&      d'        Z$ej8                  j;                  d%d(      d)        Z%d* Z&d+ Z'y),    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                  j                  ||        y )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       l/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/setuptools/tests/config/test_pyprojecttoml.pycreate_exampler!   U   s    !"
E 	/17	
H O3%5%H% QXPwM2;N0OPh
KKeD)    c                    |dz  }|j                  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 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 y )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#FD1H	*i5AAI&&00H%f->>&),77738F#L1*=>5'II8F#L1*=> C
 
 	

 FL)*@ATII&!,/???hv&|4^DDDFL),7	#$%<   r"   c                     t        | d       | dz  }t        |d      }|d   j                  d      J |d   j                  d      J t        || d       y )Nsrcr   Fr(   r'   r*   r+   )r!   r	   getr;   )tmp_pathr8   r7   s      r    test_read_configurationr@      sa    8U#++I	%8F)  +33)  *2268U+r"   )r   optsr   r=   libr   findwherec                 @   t        | |       | dz  }t        |d      }|d   j                  d      J |d   j                  d      J |d   d   j                  d	d        |d   d   j                  d
d        |d   d   j	                  |       t        || |       y )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	%8F)  +33)  *22
6N< $$Z6
6N< $$]D9
6N< ''-68X.r"   a
mod.a:funcb
mod.b:funccmod.c:func [extra])console_scriptsgui_scriptsr   c                   d    e Zd Zd ZddZd Zej                  j                  dd      d        Z	y)	TestEntryPointsc                     t               }|j                  t               t        |dz  dd      5 }|j	                  |       d d d        y # 1 sw Y   y xY w)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   sN    #~|,(//wG 	"1q!	" 	" 	"s   AANc                 4    d|xs 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   s7    gS)STNV5G,HIJ"\4,@AAr"   c                 *   | j                  |       t        | j                         |      }|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 y )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(C#I.#I./144	*3/<??#M23q88.s3|CC#N3499/8=AUUUUr"   missing_dynamic)r`   ra   c                    | j                  |       h d|hz
  }d| }t        j                  t        t	        j
                  |t        j                              5  t        | j                  |      |       d d d        y # 1 sw Y   y xY w)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   ss    )<?PP66GH]];bjjbdd.CD 	D !8(C	D 	D 	Ds   BB
)N)
__name__
__module____qualname__r]   r8   rh   rm   markparametrizers   rd   r"   r    rR   rR      s=    "B
	V [[.0JKD LDr"   rR   c                   $    e Zd Zd Zd Zd Zd Zy)TestClassifiersc                 @   t        |d       t        d      }|dz  j                  |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 y )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//	#Ie<#I.'+,Eg,E},E'Fy)$5i@)/1B(C}% 	#'98I&}56 -;
 
 	
 
r"   c                     d}|dz  }|j                  t        |      d       t        j                  t        d      5  t        |       d d d        y # 1 sw Y   y xY w)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   sZ     //	Xf-@]];.QR 	*y)	* 	* 	*s   AAc                     d}|dz  }|j                  t        |      d       t        ddi      }t        ||      }|j                  j
                  dk(  sJ y )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  sb     //	Xf-@#5t"<="43}}--555r"   c                     d}|dz  }|j                  t        |      d       t        j                  t        d      5  t        |      }d d d        dd   vsJ y # 1 sw Y   xY w)	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  so     //	Xf-@\\+-VW 	5))4H	5HY$7777	5 	5s   AA&N)rt   ru   rv   r   r   r   r   rd   r"   r    rz   rz      s    
:*68r"   rz   example)z
        [project]
        name = "myproj"
        version = "1.2"

        [my-tool.that-disrespect.pep518]
        value = 42
        c                 `    | dz  }|j                  t        |      d       t        |      J y 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                 .   | dz  }|j                  t        |      d       t        j                  d| dt        j                  t        j
                  z        }t        j                  t        |      5  t        |       d d d        y # 1 sw Y   y xY w)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  sx     ++I'*W=jj3I;bA244"$$;OG	z	1 &9%& & &s   6BBr7   )r   z[tool.something]
value = 42c                 T    | dz  }|j                  |d       t        |      i k(  sJ y r   r3   r	   r?   r7   r8   s      r    
test_emptyr   M  s5    ++I'2 i(B...r"   )'[project]
name = 'myproj'
version='42'
c                 h    | dz  }|j                  |d       t        |      }|d   d   d   du sJ y)	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  sI    
 ++I'2	*F&>,'(>?4GGGr"   c                 H   ddd}t         j                  j                  ||        t        |       5  t        j
                  j                  di d      }ddd       j                         d	k(  sJ |j                         d
k(  sJ |j                  du sJ y# 1 sw Y   DxY w)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eH-	h M~~''
B8'LM ==?h&&%%$$---M Ms   #BB!c                     d}| dz  }|j                  t        |      d       t        j                  t              5  t        |       ddd       y# 1 sw Y   yxY w)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  sX    
F ++I&)G<	*	+ &9%& & &s   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BH8 H8V 	55 	

&& #GH/ I/ #RSH TH.(&r"   