
    ϶vg4X                        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          Z! G d d          Z" G d d          Z# G d d          Z$ G d d          Z% G d d          Z&d Z'd Z(d Z)d Z*d Z+d Z,d  Z-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                       e Zd Zd Zd ZdS )TestFindParentPackagec                     |dz                       dd           |dz                                   |dz                                   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packagess      c/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/setuptools/tests/test_config_discovery.pytest_single_packagez)TestFindParentPackage.test_single_package   s    	.	.55tT5RRR	:	:AACCC	3	3::<<<III"8b%[(CCVVVVVV    c                     g d}|D ]:}|d| z                       dd           |d| dz                                   ;t          |ddi|          J d S )N)pkgpkg1pkg2src/Tr   z/__init__.pyr   r   r   )r   r    multiplenames       r"   test_multiple_toplevelz,TestFindParentPackage.test_multiple_toplevel!   s     +** 	; 	;Dt%,,dD,III1t111188::::"8b%[(CCKKKKKr$   N)__name__
__module____qualname__r#   r,    r$   r"   r   r      s:        W W WL L L L Lr$   r   c                   (   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 Zej        	                    de
                                          d             Zej        	                    de
                                          d             Z ed           ed           ed           ed          dZej        	                    d eg d dd	ge
                                                    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d,gdhfd-gdhfg          d.             Zej        	                    d/d0gd1gg          d2             Zd3 Zd4 Zd5 Zd6S )7 TestDiscoverPackagesAndPyModuleszMake sure discovered values for ``packages`` and ``py_modules`` work
    similarly to explicit configuration for the simple scenarios.
    r   r   r&   )package_dirr!   r3   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   r4   flatsingle_moduler   c                 p    |                     d          \  }}}| j        |         }| j        |         }||fS )N-)	partitionFILESOPTIONS)r   circumstance_layoutfilesoptionss         r"   	_get_infoz*TestDiscoverPackagesAndPyModules._get_infoF   s=    #--c221f
6",|,g~r$   r@   c                     |                      |          \  }}t          |||           t          ||          \  }}d |j        j        D             }|D ]t          fd|D                       sJ  d S )Nc                 N    g | ]"}|                     t          j        d           #S )/)replaceossep.0fs     r"   
<listcomp>zHTestDiscoverPackagesAndPyModules.test_sdist_filelist.<locals>.<listcomp>S   s(    GGGqAIIbfc**GGGr$   c              3   B   K   | ]}|                               V  d S N)endswith)rM   rN   files     r"   	<genexpr>zGTestDiscoverPackagesAndPyModules.test_sdist_filelist.<locals>.<genexpr>U   s/      ::Aqzz$''::::::r$   )rE   _populate_project_dir_run_sdist_programaticallyfilelistrC   any)	r   r    r@   rC   rD   rA   cmdmanifestrS   s	           @r"   test_sdist_filelistz4TestDiscoverPackagesAndPyModules.test_sdist_filelistL   s    55whw777+Hg>>3GGCL4FGGG 	; 	;D:::::::::::::	; 	;r$   c                    |                      |          \  }}t          |||           |dz                                   |dz                                   |dz                                   |dz                                   |dz                                   |dz                                   |dz                                   |dz                                   t	          |           t          t          |                    d	                              }t          d
           t          d	                    |                     |t          |          k    sJ t          t          |                    d                              }t          d           t          d	                    |                     d |D             }||k    sJ |D ]}d|vsJ d|vsJ 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                 b    h | ],}|                     d d                               dd          -S r)   r   zlib/rI   rL   s     r"   	<setcomp>z@TestDiscoverPackagesAndPyModules.test_project.<locals>.<setcomp>p   s6    OOOAaii++33FB??OOOr$   )rE   rU   r   r   
_run_buildr   nextglobprintjoinsetr   )	r   r    r@   rC   rD   sdist_fileswheel_files
orig_filesrS   s	            r"   test_projectz-TestDiscoverPackagesAndPyModules.test_projectW   s   55whw777 
G	""$$$	K	&&(((	.	.55777	6	6==???	+	+22444	'	'..000	F	!!###	N	"))+++8'X]]?-K-K(L(LMM)***dii$$%%%c%jj(((('X]]<-H-H(I(IJJ)***dii$$%%%OOOOO
j((((   	' 	'D%''''&&&&&	' 	'r$   z
            [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paramr@   )rr   rs   rt   c                    | j         |         g dz   }t          ||i            |dk    r|                    dd          }n)| j        d         }|dz                      |d           |}| j        |                             |          }||z                      |d           t          |i           }	t          |	|          g k    sJ d	d
d|         }
t          |	|
          J d S )N)zmod.pyzother.pyr7   rt   rA   r<   ru   utf-8encoding)rw   r!   r5   )r5   r!   )r>   rU   rI   PURPOSEFULLY_EMPY
write_textformat	_get_distgetattr)r   r    rv   rw   r@   rC   template_param	pyprojectconfigr^   others              r"   test_purposefully_emptyz8TestDiscoverPackagesAndPyModules.test_purposefully_empty   s    
<(+X+X+XXhr222***"]]344NN ./HII((44Y4QQQ"N'4;;.;QQ	K	++FW+EEE2&& tU##r)))))|DDUKtU##+++++r$   )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                     | j         d         |z   }t          ||i            t          |i           }t          |j                  |k    sJ d S )Nr9   )r>   rU   r   rm   r!   )r   r    r   r   rC   r^   s         r"   !test_flat_layout_with_extra_fileszBTestDiscoverPackagesAndPyModules.test_flat_layout_with_extra_files   sW    * 
6"[0hr2222&&4=!!T))))))r$   r   zother/__init__.pyzother/finalize.pyc                     | j         d         |z   }t          ||i            t          j        t          d          5  t          |i            d d d            d S # 1 swxY w Y   d S )Nr9   multiple (packages|modules)matchr>   rU   pytestraisesr   r   )r   r    r   rC   s       r"   +test_flat_layout_with_dangerous_extra_fileszLTestDiscoverPackagesAndPyModules.test_flat_layout_with_dangerous_extra_files   s     
6"[0hr222]08UVVV 	$ 	$h###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   AA"Ac                     | j         d         dgz   }t          ||i            t          |i           }t          |j                  dhk    sJ d S )Nr:   zinvalid-module-name.pyr&   )r>   rU   r   rm   r5   )r   r    rC   r^   s       r"   #test_flat_layout_with_single_modulezDTestDiscoverPackagesAndPyModules.test_flat_layout_with_single_module   s[    
?+/G.HHhr2222&&4?##w......r$   c                     | j         d         dgz   }t          ||i            t          j        t          d          5  t          |i            d d d            d S # 1 swxY w Y   d S )Nr:   zvalid_module_name.pyr   r   r   )r   r    rC   s      r"   &test_flat_layout_with_multiple_moduleszGTestDiscoverPackagesAndPyModules.test_flat_layout_with_multiple_modules   s    
?+/E.FFhr222]08UVVV 	$ 	$h###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   AA #A c                    ddl m} d}|dz                      t          |          d           |dz                                   t
          j                                                            |          5  |	                    d           d	d	d	           n# 1 swxY w Y   t          t          |                    d
                              }d|v sJ d	S )zRegression for issue 3692r   )
build_metaz%[project]
name = "test"
version = "1"rt   ry   rz   zfoo.py.Nz*.whl)
setuptoolsr   r}   r   r   jaracopathDirectoryStackcontextbuild_wheelr   ri   rj   )r   r    r   r   ro   s        r"   %test_py_modules_when_wheel_dir_is_cwdzFTestDiscoverPackagesAndPyModules.test_py_modules_when_wheel_dir_is_cwd   s   ))))))=		$	$00i70SSS	H	##%%%[''))11(;; 	( 	(""3'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( (X]]7-C-C(D(DEE;&&&&&&s   8BB!BN)r-   r.   r/   __doc__r?   r>   rE   r   markparametrizekeysr[   rq   r   r|   r   r   r   r   r   r   r   r0   r$   r"   r2   r2   +   s         *,U%IIB;
 %ug.#/%"9)D(+;<#%! G &'89%'89"M2"*+ E   [^W\\^^<<; ; =<; [^W\\^^<<' ' =<'B T	
 	
 D
 
 $
 
 $(4$
 $
E) )V [0777&JJLL	
 	
 , , ,, [&'%1&'%)=>()E=+AB 44AAA ::)*
   5'* !E7+	
 (* *) (* [ ! !	
 $ $ $/ / /$ $ $' ' ' ' 'r$   r2   c                       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             Z	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                     t          || j        |         i            t          |i           }|                                |k    sJ d S rQ   )rU   EXAMPLESr   get_name)r   r    r   r^   s       r"   test_discover_namezTestNoConfig.test_discover_name  sI    hg(>CCC2&&}}'))))))r$   c                     dg}t          ||i            t          |d           |d| j         dz  }|                                sJ d S )Nzsrc/ns/nested/pkg/__init__.py--sdistzdist/ns_nested_pkg-z.tar.gz)rU   rh   DEFAULT_VERSIONis_file)r   r    rC   	dist_files       r"   test_build_with_discovered_namez,TestNoConfig.test_build_with_discovered_name  sc    01hr2228Y'''RT5IRRRR	  """""""r$   N)r-   r.   r/   r   r   r   r   r   r   r   r   r0   r$   r"   r   r     s        O '(')EF#%=>;<78 H [Y88* * 98*
# # # # #r$   r   c                   r    e Zd Zej                            ddi fddddidfg          d             Zd Zd	S )
TestWithAttrDirective)folderoptsr   r4   zfind:where)r!   packages.findc                 l   | ddg}t          |||           |dz                      d          }|dddiidd|z   i}t          j                            ||	           t          |i           }|                                dk    sJ |                                d
k    sJ |j        sJ t          d|j        |          }t          j                            |          sJ |t          |                                          v sJ t          |d           |dz  }	|	                                sJ d S )Nz/pkg/__init__.pyrr   ry   rz   r&   __init__.pyversion = 42z'[metadata]
version = attr: pkg.version
prefix42r   zdist/pkg-42.tar.gz)rU   	read_textr   r   r]   r   r   get_versionr3   r   rJ   existsr   partsrh   r   )
r   r    r   r   rC   r   	overwriter^   package_pathr   s
             r"   test_setupcfg_metadataz,TestWithAttrDirective.test_setupcfg_metadata  sb    ,,,k:ht444[(33W3EEU]N;<DvM
	 	)H5552&&}}%''''!!T))))(0@(KKw~~l+++++l++113333338Y'''33	  """""""r$   c                     t          |dgi            dddiidd}t          j                            ||           t	          |i           }|                                dk    sJ |j        d	d
ik    sJ d S )Nr7   r&   r   r   zh[project]
name = 'pkg'
dynamic = ['version']
[tool.setuptools.dynamic]
version = {attr = 'pkg.version'}
r   rt   r   r   r   r   )rU   r   r   r]   r   r   r3   )r   r    r   r^   s       r"   test_pyproject_metadataz-TestWithAttrDirective.test_pyproject_metadata<  s    h)>(?DDD M>:;P
 
	 	)H5552&&!!T))))B;......r$   N)r-   r.   r/   r   r   r   r   r   r0   r$   r"   r   r     su        [BKGU;KLLM	
 # # #./ / / / /r$   r   c                        e Zd Zd Zd Zd ZdS )TestWithCExtensionc                     g d}t          ||i            d}|dz                      t          |          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)
        rs   ry   rz   rU   r}   r   )r   r    rC   setup_scripts       r"    _simulate_package_with_extensionz3TestWithCExtension._simulate_package_with_extensionN  s\    
 
 
 	hr222 
J	**4+=+=*PPPPPr$   c                    |                      |           d}|dz                      t          |          d           d}|dz                      t          |          d           t          |i           }|                                dk    sJ |                                dk    sJ |j        J |j        J t          |j	                  d
k    sJ |j	        d         j
        dk    sJ d	S )zEnsure 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'
        rt   ry   rz   zQ
            [metadata]
            name = proj
            version = 42
        rr   projr   Nr   r   )r   r}   r   r   r   r   r5   r!   lenext_modulesr+   )r   r    r   setupcfgr^   s        r"   *test_skip_discovery_with_setupcfg_metadataz=TestWithCExtension.test_skip_discovery_with_setupcfg_metadatao  s    	--h777	
 
$	$00i70SSS
 
K	++DNNW+MMM2&&}}&((((!!T))))&&&}$$$4#$$))))"'6111111r$   c                 
   |                      |           d}|dz                      t          |          d           t          j        t
          d          5  t          |i            ddd           dS # 1 swxY 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'
        rt   ry   rz   r   r   N)r   r}   r   r   r   r   r   )r   r    r   s      r"   0test_dont_skip_discovery_with_pyproject_metadatazCTestWithCExtension.test_dont_skip_discovery_with_pyproject_metadata  s     	--h777	
 
$	$00i70SSS]08UVVV 	$ 	$h###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   A88A<?A<N)r-   r.   r/   r   r   r   r0   r$   r"   r   r   M  sE        Q Q QB2 2 28$ $ $ $ $r$   r   c                   @   e Zd Z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
          z   ifd	d e
e           e
d          z   ifg          d             ZdS )TestWithPackageDatac                     | d| d| dg}t          ||i            d}|dz                      t          |          d           d S )Nz/proj/__init__.py/proj/file1.txt/proj/nested/file2.txtz/
            global-include *.py *.txt
        zMANIFEST.inry   rz   r   )r   r    src_rootrC   rZ   s        r"   !_simulate_package_with_data_filesz5TestWithPackageData._simulate_package_with_data_files  st    ***(((///

 	hr222 
M	!--d8nnw-OOOOOr$   zd
    [metadata]
    name = proj
    version = 42

    [options]
    include_package_data = True
    z8
    [project]
    name = "proj"
    version = "42"
    z:
    [tool.setuptools]
    package-dir = {"" = "src"}
    )r   rC   r   rr   rt   r   z
                        packages = find:
                        package_dir =
                            =src

                        [options.packages.find]
                        where = src
                        zv
                        [tool.setuptools]
                        package-dir = {"" = "src"}
                        c                 d   t           j                            |t          |                     |                     ||           t
          j                            | d                              t
          j        d          t
          j                            | d                              t
          j        d          h}t          |           t          t          |                    d                              }t          d           t          d                    |                     ||k    sJ t          t          |                    d                              }t          d	           t          d                    |                     d
 |D             }||k    sJ dS )zq
        Make sure auto-discovery does not affect package include_package_data.
        See issue #3196.
        r   r   rH   r   r_   r`   ra   rb   rc   c                 b    h | ],}|                     d d                               dd          -S re   rf   rL   s     r"   rg   z@TestWithPackageData.test_include_package_data.<locals>.<setcomp>  s6    RRRAaii++33FB??RRRr$   N)r   r   r]   strr   rJ   normpathrI   rK   rh   r   ri   rj   rk   rl   r   )r   r    r   rC   expectedrn   ro   rp   s           r"   test_include_package_dataz-TestWithPackageData.test_include_package_data  s   T 	%H666..xBBB G999::BB263OOG@@@AAII"&RUVV

 	8'X]]?-K-K(L(LMM)***dii$$%%%h&&&&'X]]<-H-H(I(IJJ)***dii$$%%%RRRRR
j((((((r$   N)r-   r.   r/   r   EXAMPLE_SETUPCFGEXAMPLE_PYPROJECTPYPROJECT_PACKAGE_DIRr   r   r   r   r   r0   r$   r"   r   r     sI       P P P
 [;%5 6 678#TT*;%<%<=>[$$'7"8"89:%tt,='>'>?@&6!7!7d	 	
"" $dd+<&=&=d '+!	
$ $J) )K$ $J) ) )r$   r   c                     g d}t          | |i            t          i           }t                      |_        |                                 |j        J |j        J d S )N)zdir1/__init__.pyzdir2/__init__.pyzfile.py)rU   r
   objectconfigurationset_defaultsr5   r!   )r    rC   r^   s      r"   (test_compatible_with_numpy_configurationr      st      E
 (E2...DD?"""=     r$   c                     t           j                            ddi           t          i           }dg|_        |                                 |                                 |                                dk    sJ d S )Nr8   r   z--namer&   )r   r   r]   r
   script_argsr   parse_command_liner   )
tmpdir_cwdr^   s     r"   $test_name_discovery_doesnt_break_clir     sv    
Kxn%%%D zD==??e######r$   c                    dddiit          d          d}t          j                            |           t	          i           j        j        fd}|                    j        d|                                            	                                dk    sJ 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                  P                                                    dk    sJ d S )Nmyproj)r   )r^   orig_analyse_names   r"   spy_analyse_namezJtest_preserve_explicit_name_with_dynamic_version.<locals>.spy_analyse_name/  s3     	}}(******r$   analyse_namer   N)r   r   r   r]   r
   r   r   setattrparse_config_filesr   rm   r!   )r   monkeypatchrC   r   r^   r   s       @@r"   0test_preserve_explicit_name_with_dynamic_versionr     s     M#78
 
 
	 E KeD)6+ + + + + + )>;KLLL%%%%t}%((((((r$   c                      dddd}t           j                            |            t           |            fd|D             }|D ]2}|j                            dd           |                                 3d S )	Nz$import setuptools
setuptools.setup()z# Example PackagezCopyright (c) 2018)rs   z	README.mdLICENSEr   c              3   "   K   | ]	}|z  V  
d S rQ   r0   )rM   rN   roots     r"   rT   z(_populate_project_dir.<locals>.<genexpr>F  s'      %%!TAX%%%%%%r$   Tr   )r   r   r]   _write_setupcfgparentr   r   )r   rC   rD   basicpathsr   s   `     r"   rU   rU   ;  s    
 <(' E
 KeD)))D'"""%%%%u%%%E  4666

 r$   c                 P   |st          d           d S t                      }|                    d           |                                D ]\  }}|dk    r7|                    d|            |d|                              |           Bt          |t                    rd                    |          |d         |<   vt          |t                    r@d                    d |                                D                       }d|z   |d         |<   t          |          |d         |<   t          | dz  d	d
          5 }|                    |           d d d            n# 1 swxY w Y   t          d           t          | dz                      d
                     d S )Nz~~~~~ **NO** setup.cfg ~~~~~rD   r   zoptions.z, ra   c              3   ,   K   | ]\  }}d | d| V  dS )	z = Nr0   )rM   kvs      r"   rT   z"_write_setupcfg.<locals>.<genexpr>Y  s2      !K!KTQ.q..Q..!K!K!K!K!K!Kr$   rr   wry   rz   z~~~~~ setup.cfg ~~~~~)rk   r   add_sectionitemsupdate
isinstancelistrl   dictr   openwriter   )r   rD   r   keyvalue	str_valuerN   s          r"   r  r  L  s    ,---~~H###mmoo 
2 
2
U/!!  !1C!1!1222%%%&--e4444t$$ 	2'+yy'7'7HY$$t$$ 	2		!K!KU[[]]!K!K!KKKI'+i'7HY$$'*5zzHY$$	d[ #	8	8	8 Aq              	
!"""	4+
(
('
(
:
:;;;;;s   E&&E*-E*c                 j    t           j        dddg|t          |           }t          |ddi          S )Nz-mr]   z--no-isolationDISTUTILS_DEBUGr   )env)sys
executabler   r   )r   flagsrY   s      r"   rh   rh   c  s<    >4*:
NU
NCII
NCs*B/0000r$   c           	      .   d                     t          j                            |                     }| dz  }|                                r]t          |           5  t          t          t          j	        
                    di d                    }d d d            n# 1 swxY w Y   nt          |          }||_        d|_        t          |           5  |                                 d d d            n# 1 swxY w Y   |                                 |S )NrH   rs   init)
stop_after)rl   rJ   r   splitr   r   r   r
   	distutilscore	run_setupr   script_namer   r   )	dist_pathattrsr   scriptr^   s        r"   r   r   h  ss   88BGMM),,--D#F}} #)__ 	 	((RF(KK D	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 E""DM!D	i " "!!!" " " " " " " " " " " " " " " 	Ks$   6BB!$B!C66C:=C:c                 f   t          | |          }t          |          }|                                 |j        j        s|j        j        sJ t                      5  t          |           5  |                                 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   ||fS rQ   )	r   r   ensure_finalizeddistributionr!   r5   r   r   r   )r$  r%  r^   rY   s       r"   rV   rV   ~  s#   Y&&D
++C$C(8(CCCC	  $y//  			                              9s6   B$,BB$B	B$B	B$$B(+B()/rJ   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   r2   r   r   r   r   r   r   r   rU   r  rh   r   rV   r0   r$   r"   <module>r6     s   				 



 % % % % % %                            * * * * * * G G G G G G G G ( ( ( ( ( ( 3 3 3 3 3 3       J J J J J J J J J J          L L L L L L L L&T' T' T' T' T' T' T' T'n# # # # # # # #6-/ -/ -/ -/ -/ -/ -/ -/`O$ O$ O$ O$ O$ O$ O$ O$d^) ^) ^) ^) ^) ^) ^) ^)B! ! !$ $ $!) !) !)H  "< < <.1 1 1
  ,	 	 	 	 	r$   