
    7fW                        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m	Z	 d dl
mZmZ d dlmZ d dlZd dlZd dlZd dl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  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)sdist)Distribution)find_package_pathfind_parent_package)PackageDiscoveryError)Path   )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      d/home/feoh/.local/pipx/shared/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    r2   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   r3   flatsingle_moduler   c                 p    |                     d          \  }}}| j        |         }| j        |         }||fS )N-)	partitionFILESOPTIONS)r   circumstance_layoutfilesoptionss         r!   	_get_infoz*TestDiscoverPackagesAndPyModules._get_infoE   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>R   s(    GGGqAIIbfc**GGGr#   c              3   B   K   | ]}|                               V  d S N)endswith)rL   rM   files     r!   	<genexpr>zGTestDiscoverPackagesAndPyModules.test_sdist_filelist.<locals>.<genexpr>T   s/      ::Aqzz$''::::::r#   )rD   _populate_project_dir_run_sdist_programaticallyfilelistrB   any)	r   r   r?   rB   rC   r@   cmdmanifestrR   s	           @r!   test_sdist_filelistz4TestDiscoverPackagesAndPyModules.test_sdist_filelistK   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/rH   rK   s     r!   	<setcomp>z@TestDiscoverPackagesAndPyModules.test_project.<locals>.<setcomp>o   s6    OOOAaii++33FB??OOOr#   )rD   rT   r   r   
_run_buildr   nextglobprintjoinsetr   )	r   r   r?   rB   rC   sdist_fileswheel_files
orig_filesrR   s	            r!   test_projectz-TestDiscoverPackagesAndPyModules.test_projectV   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.tomlz config_file, param, circumstance)rq   rr   rs   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.pyr6   rs   r@   r;   rt   utf-8encoding)paramr    r4   )r4   r    )r=   rT   rH   PURPOSEFULLY_EMPY
write_textformat	_get_distgetattr)r   r   config_filery   r?   rB   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#   z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 )Nr8   )r=   rT   r}   rl   r    )r   r   extra_filespkgsrB   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 )Nr8   multiple (packages|modules)matchr=   rT   pytestraisesr	   r}   )r   r   r   rB   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 )Nr9   zinvalid-module-name.pyr%   )r=   rT   r}   rl   r4   )r   r   rB   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 )Nr9   zvalid_module_name.pyr   r   r   )r   r   rB   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"rs   rv   rw   zfoo.py.Nz*.whl)
setuptoolsr   r{   r   r   jaracopathDirectoryStackcontextbuild_wheelr   rh   ri   )r   r   r   r   rn   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=   rD   r   markparametrizekeysrZ   rp   r   rz   r   r   r   r   r   r   r   r/   r#   r!   r1   r1   *   s         *,U%IIB;
 %ug.#/%"9)D(+;<#%! G &'89%'89"M2"*+ E   [^W\\^^<<; ; =<; [^W\\^^<<' ' =<'B T	
 	
 D
 
 $
 
 $(4$
 $
E) )V [*777&JJLL	
 	
 , , ,, [&'%1&'%)=>()E=+AB 44AAA ::)*
   5'* !E7+	
 (* *) (* [ ! !	
 $ $ $/ / /$ $ $' ' ' ' 'r#   r1   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 rP   )rT   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)rT   rg   DEFAULT_VERSIONis_file)r   r   rB   	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   r/   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 )
TestWithAttrDirectivezfolder, optsr   r3   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__.pyrq   rv   rw   r%   __init__.pyversion = 42z'[metadata]
version = attr: pkg.version
prefix42r   zdist/pkg-42.tar.gz)rT   	read_textr   r   r\   r}   r   get_versionr2   r   rI   existsr
   partsrg   r   )
r   r   folderoptsrB   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 )Nr6   r%   r   r   zh[project]
name = 'pkg'
dynamic = ['version']
[tool.setuptools.dynamic]
version = {attr = 'pkg.version'}
r   rs   r   r   r   r   )rT   r   r   r\   r}   r   r2   )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   r/   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)
        rr   rv   rw   rT   r{   r   )r   r   rB   setup_scripts       r!    _simulate_package_with_extensionz3TestWithCExtension._simulate_package_with_extensionM  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'
        rs   rv   rw   zQ
            [metadata]
            name = proj
            version = 42
        rq   projr   Nr   r   )r   r{   r   r}   r   r   r4   r    lenext_modulesr*   )r   r   r   setupcfgr]   s        r!   *test_skip_discovery_with_setupcfg_metadataz=TestWithCExtension.test_skip_discovery_with_setupcfg_metadatan  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'
        rs   rv   rw   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   r/   r#   r!   r   r   L  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.inrv   rw   r   )r   r   src_rootrB   rY   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"}
    zsrc_root, filesr   rq   rs   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   rG   r   r^   r_   r`   ra   rb   c                 b    h | ],}|                     d d                               dd          -S rd   re   rK   s     r!   rf   z@TestWithPackageData.test_include_package_data.<locals>.<setcomp>  s6    RRRAaii++33FB??RRRr#   N)r   r   r\   strr   rI   normpathrH   rJ   rg   r   rh   ri   rj   rk   r   )r   r   r   rB   expectedrm   rn   ro   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   r/   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)rT   r   objectconfigurationset_defaultsr4   r    )r   rB   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 )Nr7   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   rl   r    )r   monkeypatchrB   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)rr   z	README.mdLICENSEr   c              3   "   K   | ]	}|z  V  
d S rP   r/   )rL   rM   roots     r!   rS   z(_populate_project_dir.<locals>.<genexpr>E  s'      %%!TAX%%%%%%r#   Tr   )r   r   r\   _write_setupcfgparentr   r   )r   rB   rC   basicpathsr   s   `     r!   rT   rT   :  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 ~~~~~rC   r   zoptions.z, r`   c              3   ,   K   | ]\  }}d | d| V  dS )	z = Nr/   )rL   kvs      r!   rS   z"_write_setupcfg.<locals>.<genexpr>X  s2      !K!KTQ.q..Q..!K!K!K!K!K!Kr#   rq   wrv   rw   z~~~~~ setup.cfg ~~~~~)rj   r   add_sectionitemsupdate
isinstancelistrk   dictr   openwriter   )r   rC   r   keyvalue	str_valuerM   s          r!   r   r   K  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   flagsrX   s      r!   rg   rg   b  s<    >4*:
NU
NCII
NCs*B/0000r#   c                    d                     t          j                            |                     }| dz  }|                                rJt          |           5  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 )NrG   rr   init)
stop_after)rk   rI   r   splitr   r
   	distutilscore	run_setupr   r   script_namer   r   )	dist_pathattrsr   scriptr]   s        r!   r}   r}   g  st   88BGMM),,--D#F}} #)__ 	O 	O>++Jv+NND	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O E""DM!D	i " "!!!" " " " " " " " " " " " " " " 	Ks$   #B

BBC##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 rP   )	r}   r   ensure_finalizeddistributionr    r4   r   r
   r   )r#  r$  r]   rX   s       r!   rU   rU   z  s#   Y&&D
++C$C(8(CCCC	  $y//  			                              9s6   B$,BB$B	B$B	B$$B(+B()-rI   r  configparserr   	itertoolsr   setuptools.command.sdistr   setuptools.distr   setuptools.discoveryr   r   setuptools.errorsr	   r   distutils.corer  r   jaraco.pathr   r   r
   contextsr   integration.helpersr   r   r   textwrapr   r   r1   r   r   r   r   r   r   r   rT   r   rg   r}   rU   r/   r#   r!   <module>r4     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#   