o
    5‘ði4X  ã                   @   sX  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
Z
d dlmZ d dlZd dlmZ d dlmZmZ d dlm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 d dlZ G dd„ dƒZ!G dd„ dƒZ"G dd„ dƒZ#G dd„ dƒZ$G dd„ dƒZ%G dd„ dƒZ&dd„ Z'dd„ Z(dd„ Z)d d!„ Z*d"d#„ Z+d$d%„ Z,d&d'„ Z-d(d)„ Z.dS )*é    N)ÚConfigParser)Úproduct)Úcast)ÚPath)Úsdist)Úfind_package_pathÚfind_parent_package)ÚDistribution)ÚPackageDiscoveryErroré   )Úquiet)Úget_sdist_membersÚget_wheel_membersÚrun)ÚDALSc                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestFindParentPackagec                 C   sN   |d j ddd� |d  ¡  |d  ¡  g d¢}t|ddi|ƒd	ks%J ‚d S )
Nzsrc/namespace/pkg/nestedT©Úexist_okÚparentsz$src/namespace/pkg/nested/__init__.pyzsrc/namespace/pkg/__init__.py)Ú	namespaceúnamespace.pkgznamespace.pkg.nestedÚ Úsrcr   ©ÚmkdirÚtouchr   )ÚselfÚtmp_pathÚpackages© r   úe/root/parts/websockify/install/lib/python3.10/site-packages/setuptools/tests/test_config_discovery.pyÚtest_single_package   s
   z)TestFindParentPackage.test_single_packagec                 C   sZ   g d¢}|D ]}|d|› � j ddd� |d|› d�  ¡  qt|ddi|ƒd u s+J ‚d S )N)ÚpkgÚpkg1Úpkg2úsrc/Tr   z/__init__.pyr   r   r   )r   r   ÚmultipleÚnamer   r   r    Útest_multiple_toplevel!   s
   z,TestFindParentPackage.test_multiple_toplevelN)Ú__name__Ú
__module__Ú__qualname__r!   r(   r   r   r   r    r      s    r   c                   @   sŽ  e Zd ZdZddidgdœdddiiddgid	dgidd
dgii i i i dœ	ZddgddgddgdgdgdœZdd„ Zej 	de 
¡ ¡dd„ ƒZej 	de 
¡ ¡dd„ ƒZedƒedƒedƒed ƒd!œZej 	d"eg d#¢dd	ge 
¡ ƒ¡d$d%„ ƒZej 	d&d'gdhfd(gdd)hfd*gdd+hfd,gh d-£fd.gdd/hfd0gdhfd1gdhfg¡d2d3„ ƒZej 	d4d5gd6gg¡d7d8„ ƒZd9d:„ Zd;d<„ Zd=d>„ Zd?S )@Ú TestDiscoverPackagesAndPyModulesz‹Make sure discovered values for ``packages`` and ``py_modules`` work
    similarly to explicit configuration for the simple scenarios.
    r   r   r"   )Úpackage_dirr   r-   Úlibr   Ú
py_modulesÚnszns.pkg)	zexplicit-srczvariation-libzexplicit-flatzexplicit-single_modulezexplicit-namespacezautomatic-srczautomatic-flatzautomatic-single_modulezautomatic-namespaceúsrc/pkg/__init__.pyzsrc/pkg/main.pyzlib/pkg/__init__.pyzlib/pkg/main.pyzpkg/__init__.pyzpkg/main.pyúpkg.pyzns/pkg/__init__.py)r   r.   ÚflatÚsingle_moduler   c                 C   s,   |  d¡\}}}| j| }| j| }||fS )Nú-)Ú	partitionÚFILESÚOPTIONS)r   ÚcircumstanceÚ_ÚlayoutÚfilesÚoptionsr   r   r    Ú	_get_infoF   s   

z*TestDiscoverPackagesAndPyModules._get_infor9   c                    sb   |   |¡\}}t|||ƒ t||ƒ\}}dd„ |jjD ƒ}|D ]‰ t‡ fdd„|D ƒƒs.J ‚qd S )Nc                 S   s   g | ]	}|  tjd ¡‘qS )ú/)ÚreplaceÚosÚsep©Ú.0Úfr   r   r    Ú
<listcomp>S   s    zHTestDiscoverPackagesAndPyModules.test_sdist_filelist.<locals>.<listcomp>c                 3   s   � | ]}|  ˆ ¡V  qd S ©N)ÚendswithrC   ©Úfiler   r    Ú	<genexpr>U   s   € zGTestDiscoverPackagesAndPyModules.test_sdist_filelist.<locals>.<genexpr>)r>   Ú_populate_project_dirÚ_run_sdist_programaticallyÚfilelistr<   Úany)r   r   r9   r<   r=   r:   ÚcmdÚmanifestr   rI   r    Útest_sdist_filelistL   s   ÿz4TestDiscoverPackagesAndPyModules.test_sdist_filelistc           	      C   s"  |   |¡\}}t|||ƒ |d  ¡  |d  ¡  |d  ¡  |d  ¡  |d  ¡  |d  ¡  |d  ¡  |d  ¡  t|ƒ tt| d	¡ƒƒ}td
ƒ td 	|¡ƒ |t
|ƒks]J ‚tt| d¡ƒƒ}tdƒ td 	|¡ƒ dd„ |D ƒ}||ks~J ‚|D ]}d|vsˆJ ‚d|vsŽJ ‚q€d S )NÚbuildz	build/libzbuild/bdist.linux-x86_64z build/bdist.linux-x86_64/file.pyzbuild/lib/__init__.pyzbuild/lib/file.pyÚdistzdist/file.pyúdist/*.tar.gzú~~~~~ sdist_members ~~~~~Ú
ú
dist/*.whlú~~~~~ wheel_members ~~~~~c                 S   ó    h | ]}|  d d¡  dd¡’qS ©r%   r   zlib/©r@   rC   r   r   r    Ú	<setcomp>p   ó     z@TestDiscoverPackagesAndPyModules.test_project.<locals>.<setcomp>)r>   rL   r   r   Ú
_run_buildr   ÚnextÚglobÚprintÚjoinÚsetr   )	r   r   r9   r<   r=   Úsdist_filesÚwheel_filesÚ
orig_filesrJ   r   r   r    Útest_projectW   s0   þz-TestDiscoverPackagesAndPyModules.test_projectz‡
            [metadata]
            name = myproj
            version = 0.0.0

            [options]
            {param} =
            z¢
            __import__('setuptools').setup(
                name="myproj",
                version="0.0.0",
                {param}=[]
            )
            zÿ
            [build-system]
            requires = []
            build-backend = 'setuptools.build_meta'

            [project]
            name = "myproj"
            version = "0.0.0"

            [tool.setuptools]
            {param} = []
            zv
            [build-system]
            requires = []
            build-backend = 'setuptools.build_meta'
            )ú	setup.cfgúsetup.pyúpyproject.tomlútemplate-pyproject.toml)Úconfig_fileÚparamr9   )ri   rj   rk   c                 C   s¸   | j | g d¢ }t||i ƒ |dkr| dd¡}n| jd }|d j|dd� |}| j| j|d�}|| j|dd� t|i ƒ}	t|	|ƒg ksJJ ‚d	d
dœ| }
t|	|
ƒd u sZJ ‚d S )N)zmod.pyzother.pyr1   rk   r:   r5   rl   úutf-8©Úencoding)rn   r   r/   )r/   r   )r7   rL   r@   ÚPURPOSEFULLY_EMPYÚ
write_textÚformatÚ	_get_distÚgetattr)r   r   rm   rn   r9   r<   Útemplate_paramÚ	pyprojectÚconfigrT   Úotherr   r   r    Útest_purposefully_empty£   s   	

z8TestDiscoverPackagesAndPyModules.test_purposefully_empty)Úextra_filesÚpkgszvenv/bin/simulate_venvzpkg-stubs/__init__.pyiz	pkg-stubszother-stubs/__init__.pyizother-stubsz namespace-stubs/pkg/__init__.pyi>   únamespace-stubs.pkgr"   únamespace-stubsz&namespace-stubs/pkg-stubs/__init__.pyir   z_hidden/file.pyznews/finalize.pyc                 C   s:   | j d | }t||i ƒ t|i ƒ}t|jƒ|ksJ ‚d S )Nr3   )r7   rL   ru   rd   r   )r   r   r|   r}   r<   rT   r   r   r    Ú!test_flat_layout_with_extra_filesÁ   s   
zBTestDiscoverPackagesAndPyModules.test_flat_layout_with_extra_filesr|   zother/__init__.pyzother/finalize.pyc                 C   sX   | j d | }t||i ƒ tjtdd�� t|i ƒ W d   ƒ d S 1 s%w   Y  d S )Nr3   úmultiple (packages|modules)©Úmatch©r7   rL   ÚpytestÚraisesr
   ru   )r   r   r|   r<   r   r   r    Ú+test_flat_layout_with_dangerous_extra_filesÛ   s
   "ÿzLTestDiscoverPackagesAndPyModules.test_flat_layout_with_dangerous_extra_filesc                 C   s>   | j d dg }t||i ƒ t|i ƒ}t|jƒdhksJ ‚d S )Nr4   zinvalid-module-name.pyr"   )r7   rL   ru   rd   r/   )r   r   r<   rT   r   r   r    Ú#test_flat_layout_with_single_moduleè   s   
zDTestDiscoverPackagesAndPyModules.test_flat_layout_with_single_modulec                 C   sZ   | j d dg }t||i ƒ tjtdd�� t|i ƒ W d   ƒ d S 1 s&w   Y  d S )Nr4   zvalid_module_name.pyr�   r‚   r„   )r   r   r<   r   r   r    Ú&test_flat_layout_with_multiple_modulesî   s
   "ÿzGTestDiscoverPackagesAndPyModules.test_flat_layout_with_multiple_modulesc                 C   sŽ   ddl m} d}|d jt|ƒdd� |d  ¡  tj ¡  |¡� | 	d¡ W d	  ƒ n1 s1w   Y  t
t| d
¡ƒƒ}d|v sEJ ‚d	S )zRegression for issue 3692r   )Ú
build_metaz%[project]
name = "test"
version = "1"rk   ro   rp   zfoo.pyÚ.Nz*.whl)Ú
setuptoolsrŠ   rs   r   r   ÚjaracoÚpathÚDirectoryStackÚcontextÚbuild_wheelr   r`   ra   )r   r   rŠ   rx   rf   r   r   r    Ú%test_py_modules_when_wheel_dir_is_cwdô   s   ÿzFTestDiscoverPackagesAndPyModules.test_py_modules_when_wheel_dir_is_cwdN)r)   r*   r+   Ú__doc__r8   r7   r>   r…   ÚmarkÚparametrizeÚkeysrR   rh   r   rr   r   r{   r€   r‡   rˆ   r‰   r’   r   r   r   r    r,   +   s�    ÿ
ôû


!ÿ
ÿ	ÿÿÞ+ýþ

ýý

ñþ
þþ
r,   c                   @   sT   e Zd ZdZdgdgddgddgdgd	gd
œZej de ¡ ¡dd„ ƒZ	dd„ Z
dS )ÚTestNoConfigz0.0.0zsrc/pkg1.pyzsrc/pkg2/__init__.pyzsrc/pkg3/__init__.pyzsrc/pkg3-stubs/__init__.pyzpkg4/__init__.pyzpkg4-stubs/__init__.pyzsrc/ns/nested/pkg1/__init__.pyzns/nested/pkg2/__init__.py)r#   r$   Úpkg3Úpkg4zns.nested.pkg1zns.nested.pkg2Úexamplec                 C   s0   t || j| i ƒ t|i ƒ}| ¡ |ksJ ‚d S rG   )rL   ÚEXAMPLESru   Úget_name)r   r   rš   rT   r   r   r    Útest_discover_name  s   
zTestNoConfig.test_discover_namec                 C   s>   dg}t ||i ƒ t|dƒ |d| j› d� }| ¡ sJ ‚d S )Nzsrc/ns/nested/pkg/__init__.pyú--sdistzdist/ns_nested_pkg-z.tar.gz)rL   r_   ÚDEFAULT_VERSIONÚis_file)r   r   r<   Ú	dist_filer   r   r    Útest_build_with_discovered_name  s
   
z,TestNoConfig.test_build_with_discovered_nameN)r)   r*   r+   rŸ   r›   r…   r”   r•   r–   r�   r¢   r   r   r   r    r—     s    ú	
r—   c                   @   s@   e Zd Zej ddi fddddidœfg¡dd„ ƒZd	d
„ ZdS )ÚTestWithAttrDirective)ÚfolderÚoptsr   r.   zfind:Úwhere)r   úpackages.findc           
      C   sÚ   |› d�dg}t |||ƒ |d jdd�}|dddiidd| i}tjj||d	� t|i ƒ}| ¡ dks6J ‚| ¡ d
ks>J ‚|jsCJ ‚t	d|j|ƒ}t
j |¡sRJ ‚|t|ƒ ¡ v s\J ‚t|dƒ |d }	|	 ¡ skJ ‚d S )Nz/pkg/__init__.pyri   ro   rp   r"   ú__init__.pyúversion = 42z'[metadata]
version = attr: pkg.version
©ÚprefixÚ42rž   zdist/pkg-42.tar.gz)rL   Ú	read_textr�   rŽ   rS   ru   rœ   Úget_versionr-   r   rA   Úexistsr   Úpartsr_   r    )
r   r   r¤   r¥   r<   ry   Ú	overwriterT   Úpackage_pathr¡   r   r   r    Útest_setupcfg_metadata  s"   þ


z,TestWithAttrDirective.test_setupcfg_metadatac                 C   s`   t |dgi ƒ dddiiddœ}tjj||d� t|i ƒ}| ¡ dks%J ‚|jd	d
iks.J ‚d S )Nr1   r"   r¨   r©   zh[project]
name = 'pkg'
dynamic = ['version']
[tool.setuptools.dynamic]
version = {attr = 'pkg.version'}
©r   rk   rª   r¬   r   r   )rL   r�   rŽ   rS   ru   r®   r-   )r   r   r±   rT   r   r   r    Útest_pyproject_metadata<  s   
ý
z-TestWithAttrDirective.test_pyproject_metadataN)r)   r*   r+   r…   r”   r•   r³   rµ   r   r   r   r    r£     s    þþ
r£   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestWithCExtensionc                 C   s2   g d¢}t ||i ƒ d}|d jt|ƒdd� d S )N)zbenchmarks/file.pyzdocs/Makefilezdocs/requirements.txtzdocs/source/conf.pyzproj/header.hzproj/file.pyzpy/proj.cppzpy/other.cppz
py/file.pyzpy/py.typedzpy/tests/test_proj.pyz
README.rsta^  
            from setuptools import Extension, setup

            ext_modules = [
                Extension(
                    "proj",
                    ["py/proj.cpp", "py/other.cpp"],
                    include_dirs=["."],
                    language="c++",
                ),
            ]
            setup(ext_modules=ext_modules)
        rj   ro   rp   ©rL   rs   r   )r   r   r<   Úsetup_scriptr   r   r    Ú _simulate_package_with_extensionN  s   z3TestWithCExtension._simulate_package_with_extensionc                 C   s®   |   |¡ d}|d jt|ƒdd� d}|d jt|ƒdd� t|i ƒ}| ¡ dks,J ‚| ¡ dks4J ‚|jd	u s;J ‚|jd	u sBJ ‚t|j	ƒd
ksKJ ‚|j	d j
dksUJ ‚d	S )zˆEnsure that auto-discovery is not triggered when the project is based on
        C-extensions only, for backward compatibility.
        zr
            [build-system]
            requires = []
            build-backend = 'setuptools.build_meta'
        rk   ro   rp   zQ
            [metadata]
            name = proj
            version = 42
        ri   Úprojr¬   Nr   r   )r¹   rs   r   ru   rœ   r®   r/   r   ÚlenÚext_modulesr'   )r   r   rx   ÚsetupcfgrT   r   r   r    Ú*test_skip_discovery_with_setupcfg_metadatao  s   

z=TestWithCExtension.test_skip_discovery_with_setupcfg_metadatac                 C   sb   |   |¡ d}|d jt|ƒdd� tjtdd�� t|i ƒ W d  ƒ dS 1 s*w   Y  dS )aŽ  When opting-in to pyproject.toml metadata, auto-discovery will be active if
        the package lists C-extensions, but does not configure py-modules or packages.

        This way we ensure users with complex package layouts that would lead to the
        discovery of multiple top-level modules/packages see errors and are forced to
        explicitly set ``packages`` or ``py-modules``.
        zT
            [project]
            name = 'proj'
            version = '42'
        rk   ro   rp   r�   r‚   N)r¹   rs   r   r…   r†   r
   ru   )r   r   rx   r   r   r    Ú0test_dont_skip_discovery_with_pyproject_metadata‹  s   
"ÿzCTestWithCExtension.test_dont_skip_discovery_with_pyproject_metadataN)r)   r*   r+   r¹   r¾   r¿   r   r   r   r    r¶   M  s    !r¶   c                   @   sš   e Zd Zdd„ ZdZdZdZej 	ddde
eƒifdd	e
eƒifd
de
eƒifd
d	e
eƒifd
de
eƒe
dƒ ifd
d	e
eƒe
dƒ ifg¡dd„ ƒZdS )ÚTestWithPackageDatac                 C   sF   |› d�|› d�|› d�g}t ||i ƒ d}|d jt|ƒdd� d S )Nz/proj/__init__.pyú/proj/file1.txtú/proj/nested/file2.txtz/
            global-include *.py *.txt
        zMANIFEST.inro   rp   r·   )r   r   Úsrc_rootr<   rQ   r   r   r    Ú!_simulate_package_with_data_files   s   ýz5TestWithPackageData._simulate_package_with_data_fileszd
    [metadata]
    name = proj
    version = 42

    [options]
    include_package_data = True
    z8
    [project]
    name = "proj"
    version = "42"
    z:
    [tool.setuptools]
    package-dir = {"" = "src"}
    )rÃ   r<   r‹   ri   rk   r   zÞ
                        packages = find:
                        package_dir =
                            =src

                        [options.packages.find]
                        where = src
                        zv
                        [tool.setuptools]
                        package-dir = {"" = "src"}
                        c                 C   sÚ   t jj|t|ƒd� |  ||¡ tj |› d�¡ tjd¡tj |› d�¡ tjd¡h}t	|ƒ t
t| d¡ƒƒ}tdƒ td |¡ƒ ||ksJJ ‚tt| d¡ƒƒ}td	ƒ td |¡ƒ d
d„ |D ƒ}||kskJ ‚dS )zq
        Make sure auto-discovery does not affect package include_package_data.
        See issue #3196.
        rª   rÁ   r?   rÂ   rU   rV   rW   rX   rY   c                 S   rZ   r[   r\   rC   r   r   r    r]   ü  r^   z@TestWithPackageData.test_include_package_data.<locals>.<setcomp>N)r�   rŽ   rS   ÚstrrÄ   rA   Únormpathr@   rB   r_   r   r`   ra   rb   rc   r   )r   r   rÃ   r<   Úexpectedre   rf   rg   r   r   r    Útest_include_package_dataÀ  s   *þz-TestWithPackageData.test_include_package_dataN)r)   r*   r+   rÄ   ÚEXAMPLE_SETUPCFGÚEXAMPLE_PYPROJECTÚPYPROJECT_PACKAGE_DIRr…   r”   r•   r   rÈ   r   r   r   r    rÀ   Ÿ  s<    ÿÿÿþÿÿÿþëþ%rÀ   c                 C   sL   g d¢}t | |i ƒ ti ƒ}tƒ |_| ¡  |jd u sJ ‚|jd u s$J ‚d S )N)zdir1/__init__.pyzdir2/__init__.pyzfile.py)rL   r	   ÚobjectÚconfigurationÚset_defaultsr/   r   )r   r<   rT   r   r   r    Ú(test_compatible_with_numpy_configuration   s   rÏ   c                 C   sD   t j ddi¡ ti ƒ}dg|_| ¡  | ¡  | ¡ dks J ‚d S )Nr2   r   z--namer"   )r�   rŽ   rS   r	   Úscript_argsrÎ   Úparse_command_linerœ   )Ú
tmpdir_cwdrT   r   r   r    Ú$test_name_discovery_doesnt_break_cli  s   rÓ   c                    s€   dddiit dƒdœ}tj |¡ ti ƒ‰ ˆ jj‰‡ ‡fdd„}| ˆ jd|¡ ˆ  ¡  ˆ  	¡ d	ks4J ‚t
ˆ jƒdhks>J ‚d
S )a
  According to #3545 it seems that ``name`` discovery is running,
    even when the project already explicitly sets it.
    This seems to be related to parsing of dynamic versions (via ``attr`` directive),
    which requires the auto-discovery of ``package_dir``.
    r"   r¨   z__version__ = 42
zæ
            [project]
            name = "myproj"  # purposefully different from package name
            dynamic = ["version"]
            [tool.setuptools.dynamic]
            version = {"attr" = "pkg.__version__"}
            r´   c                      s   ˆƒ  ˆ   ¡ dksJ ‚d S )NÚmyproj)rœ   r   ©rT   Úorig_analyse_namer   r    Úspy_analyse_name/  s   zJtest_preserve_explicit_name_with_dynamic_version.<locals>.spy_analyse_nameÚanalyse_namer¬   N)r   r�   rŽ   rS   r	   rÎ   rØ   ÚsetattrÚparse_config_filesr®   rd   r   )rÒ   Úmonkeypatchr<   r×   r   rÕ   r    Ú0test_preserve_explicit_name_with_dynamic_version  s   ÿÿürÜ   c                    s^   ddddœ}t jj|ˆ d� tˆ |ƒ ‡ fdd„|D ƒ}|D ]}|jjddd	� | ¡  qd S )
Nz$import setuptools
setuptools.setup()z# Example PackagezCopyright (c) 2018)rj   z	README.mdÚLICENSErª   c                 3   s   � | ]}ˆ | V  qd S rG   r   rC   ©Úrootr   r    rK   F  s   € z(_populate_project_dir.<locals>.<genexpr>Tr   )r�   rŽ   rS   Ú_write_setupcfgÚparentr   r   )rß   r<   r=   ÚbasicÚpathsrŽ   r   rÞ   r    rL   ;  s   ý

þrL   c                 C   s  |st dƒ d S tƒ }| d¡ | ¡ D ]L\}}|dkr/| d|› �¡ |d|› �  |¡ qt|tƒr>d |¡|d |< qt|tƒrXd dd„ | ¡ D ƒ¡}d| |d |< qt	|ƒ|d |< qt
| d	 d
dd��}| |¡ W d   ƒ n1 szw   Y  t dƒ t | d	 jdd�ƒ d S )Nz~~~~~ **NO** setup.cfg ~~~~~r=   r§   zoptions.z, rW   c                 s   s$   � | ]\}}d |› d|› �V  qdS )ú	z = Nr   )rD   ÚkÚvr   r   r    rK   Y  s   €" z"_write_setupcfg.<locals>.<genexpr>ri   Úwro   rp   z~~~~~ setup.cfg ~~~~~)rb   r   Úadd_sectionÚitemsÚupdateÚ
isinstanceÚlistrc   ÚdictrÅ   ÚopenÚwriter­   )rß   r=   r½   ÚkeyÚvalueÚ	str_valuerE   r   r   r    rà   L  s(   


ÿrà   c                 G   s*   t jdddg|¢t| ƒ‘}t|ddid�S )Nz-mrS   z--no-isolationÚDISTUTILS_DEBUGr   )Úenv)ÚsysÚ
executablerÅ   r   )rŽ   ÚflagsrP   r   r   r    r_   c  s   r_   c                 C   s´   d  tj | ¡¡}| d }| ¡ r2t| ƒ� tttj	j
di dd�ƒ}W d   ƒ n1 s,w   Y  nt|ƒ}||_d|_t| ƒ� | ¡  W d   ƒ n1 sOw   Y  | ¡  |S )Nr?   rj   Úinit)Ú
stop_after)rc   rA   rŽ   Úsplitr¯   r   r   r	   Ú	distutilsÚcoreÚ	run_setuprÃ   Úscript_namerÚ   rÎ   )Ú	dist_pathÚattrsrß   ÚscriptrT   r   r   r    ru   h  s$   
þÿ€

ÿru   c              	   C   s¦   t | |ƒ}t|ƒ}| ¡  |jjs|jjsJ ‚tƒ �- t| ƒ� | ¡  W d   ƒ n1 s.w   Y  W d   ƒ ||fS W d   ƒ ||fS 1 sJw   Y  ||fS rG   )	ru   r   Úensure_finalizedÚdistributionr   r/   r   r   r   )rÿ   r   rT   rP   r   r   r    rM   ~  s   

(ÿýýrM   )/rA   rõ   Úconfigparserr   Ú	itertoolsr   Útypingr   Újaraco.pathr�   r…   rŽ   r   rŒ   Úsetuptools.command.sdistr   Úsetuptools.discoveryr   r   Úsetuptools.distr	   Úsetuptools.errorsr
   Úcontextsr   Úintegration.helpersr   r   r   Útextwrapr   Údistutils.corerû   r   r,   r—   r£   r¶   rÀ   rÏ   rÓ   rÜ   rL   rà   r_   ru   rM   r   r   r   r    Ú<module>   s@     X0Ra	$