
    5h-                     Z   d dl Z d dlZd dl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	Z
d dlZd dlZd dlmZ ddlmZmZ ddlmZ ej        d             Zej        d             Z ej        d	d
          d             Zej        d             Zej        d             Zd Z ej        d
          d             Z ej        d
          d             Zej        d             Zej        d             Zej        d             Zd Z d Z!d Z"d Z#dde!dddfdZ$ej        d             Z%dS )    N)Path)
safer_name   )contextsenvironment)DALSc              #   n  K   t          j                    5 }|                     d|           t          j                    5 }|                     d|           t          j                    5  dV  ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   ddd           dS # 1 swxY w Y   dS )za
    Override site.USER_BASE and site.USER_SITE with temporary directories in
    a context.
    zsite.USER_BASEzsite.USER_SITEN)r   tempdirsetattrsave_user_site_setting)monkeypatch	user_base	user_sites      9lib/python3.11/site-packages/setuptools/tests/fixtures.pyuser_overrider      st      
			 y,i888 	9 0)<<<022                	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 sY   *B* *B*A;/B;A??BA?BB*B	B*B	B**B.1B.c              #   l   K   |                                  5 }|V  d d d            d S # 1 swxY w Y   d S N)as_cwd)tmpdirorigs     r   
tmpdir_cwdr   "   s~      	 D


                    )--Tsession)autousescopec                     | j         j                            d          sdS t          j        t
                    5  t          j                            d           ddd           dS # 1 swxY w Y   dS )z
    Workaround pytest-dev/pytest-xdist#376

    ``pytest-xdist`` tends to inject '' into ``sys.path``,
    which may break certain isolation expectations.
    Remove the entry so the import
    machinery behaves the same irrespective of xdist.
    xdistN )	configpluginmanager
has_plugin
contextlibsuppress
ValueErrorsyspathremove)requests    r   workaround_xdist_376r)   (   s     >'227;; 		Z	(	(                   s    A((A,/A,c                     g d}	 t          j        |t          |                      n$# t          $ r t	          j        d           Y nw xY w| dz  S )z<
    Clone the 'sampleproject' and return a path to it.
    )gitclonez%https://github.com/pypa/sampleproject)cwdzUnable to clone sampleprojectsampleproject)
subprocess
check_callstr	Exceptionpytestskip)tmp_pathcmds     r   sample_projectr7   9   sq    
 D
C
CC5cs8}}55555 5 5 53444445o%%s   #* A
Ac              #   l   K   t          j        |           5  d V  d d d            d S # 1 swxY w Y   d S r   )r&   r   )r7   s    r   sample_project_cwdr9   F   s      	>	"	"                   r   c                    t          j        || d          5 }t          |                    d          d           }t          |                    d          d           }|r|r||fcd d d            S t	          |j        j        d                                          rJ t          j	        t          j        dddt          |          t          |j        j                  g           t	          |j        j        d                                          rJ t          |                    d                    t          |                    d                    fcd d d            S # 1 swxY w Y   d S )N
dist_buildz*.tar.gzz*.whlzbuild/lib/build-mbuildz--outdir)r   session_locked_tmp_dirnextglobr   r   rootdirexistsr/   check_outputr%   
executabler1   )tmp_path_factoryr(   tmpsdistwheels        r   _build_distributionsrI   T   s   		(!<
 
 C	SXXj))400SXXg&&-- 	"U 	"5>C C C C C C C C .0ABBIIKKKKKNHH&''!
 	 	 	 .0ABBIIKKKKKCHHZ(())40A0A+B+BB/C C C C C C C C C C C C C C C C C Cs   AE&2C'E&&E*-E*)r   c                     t          j        d          }|r@t           j                            |          r!t	          |                                          S t          | |          \  }}|S )NPRE_BUILT_SETUPTOOLS_SDISTosgetenvr&   rB   r   resolverI   )rE   r(   prebuiltrG   _s        r   setuptools_sdistrR   o   s`    y566H (BGNN8,, (H~~%%'''#$4g>>HE1L    c                     t          j        d          }|r@t           j                            |          r!t	          |                                          S t          | |          \  }}|S )NPRE_BUILT_SETUPTOOLS_WHEELrL   )rE   r(   rP   rQ   rH   s        r   setuptools_wheelrV   y   s`    y566H (BGNN8,, (H~~%%'''#$4g>>HAuLrS   c                     t          j                    }t          j        | dz            |_        ddg|_        t          |          |_        t          j         d          5  |	                                cddd           S # 1 swxY w Y   dS )z?Virtual env with the version of setuptools under test installedvenv--no-setuptoolsz--wheel=bundleN)
PYTHONPATH)
r   
VirtualEnvr&   r   rootcreate_optsr1   reqr   create)r5   rV   envs      r   rX   rX      s     
 
"
"CyF*++CH(*:;CO"##CG 
		.	.	.  zz||                 s   "BB
Bc                     t          j                    }t          j        | dz            |_        ddg|_        |                                 |S )z7Virtual env without any version of setuptools installedvenv_without_setuptoolsrY   
--no-wheelr   r[   r&   r   r\   r]   
ensure_envr5   r`   s     r   rb   rb      sJ     
 
"
"Cy$==>>CH(,7CONNJrS   c                     t          j                    }t          j        | dz            |_        g d|_        |                                 |S )z1Virtual env without any common packages installed	bare_venv)rY   z--no-piprc   z	--no-seedrd   rf   s     r   rh   rh      sJ     
 
"
"CyK/00CHPPPCONNJrS   c                    t          |          dk    sJ t          j        | d          5 }|D ]\  }}t          j        |                    d                    }t          j        |          }t          |                                          |_        t          t          j
                              |_        |                    ||           	 ddd           dS # 1 swxY w Y   dS )z
    Create a simple sdist tarball at dist_path, containing the files
    listed in ``files`` as ``(filename, content)`` tuples.
    r   zw:gzutf-8)name)fileobjN)lentarfileopenioBytesIOencodeTarInfogetvaluesizeinttimemtimeaddfile)	dist_pathfilesdistfilenamecontent
file_bytes	file_infos          r   
make_sdistr      s    u::>>>>	i	(	( 8D!& 	8 	8HgGNN7$;$;<<JX666I !4!4!6!677IN!$)++..IOLLJL7777	88 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8s   B'C  C$'C$c                 V    t          | dt          d|d|d          fdg           dS )z\
    Create a simple sdist tarball at dist_path, containing just a simple
    setup.py.
    setup.pyzT             import setuptools
             setuptools.setup(
                 name=z,
                 version=z
             )
         	setup.cfgr   N)r   r   )rz   distnameversions      r   make_trivial_sdistr      sl          "	    	
    rS   c                   
 d|v sJ |                     d          

d         }
fdt          dt          
          dz             D             }t          d|d|d|d|d		          }d
}d|ft          j                            |d          |fg}|dd         D ]C}t	          j        j        |                     d          dgz    }	|                    |	df           Dt          | |           dS )z
    Make an sdist tarball with distname and version which also contains one
    package with the same name as distname.  The top-level package is
    designated a namespace package).
    .r   c                 J    g | ]}d                      d|                    S )r   N)join).0idxpartss     r   
<listcomp>z$make_nspkg_sdist.<locals>.<listcomp>   s-    JJJ#tt%%JJJrS   r   zE        import setuptools
        setuptools.setup(
            name=z,
            version=z,
            packages=z",
            namespace_packages=[z]
        )
    z7__import__('pkg_resources').declare_namespace(__name__)r   __init__.pyNr   )	splitrangerm   r   rM   r&   r   appendr   )rz   r   r   	nspackagepackagessetup_pyinitr{   packager}   r   s             @r   make_nspkg_sdistr      sA    (????NN3EaIJJJJq#e**q.1I1IJJJH	 	 	 		 	
 	 	 "+	 	 	
 
H ED(#bgll9m&L&Ld%STEABB< % %7<'--"4"4"FHh^$$$$y%     rS   c           	      t    t          | dt          d                              |||          fdg           d S )Nr   z                import setuptools
                setuptools.setup(
                  name={name!r},
                  version={version!r},
                  python_requires={python_requires!r},
                )
                )rk   r   python_requiresr   )r   r   format)rz   r   r   r   s       r   make_python_requires_sdistr      sd     	 	 &!7O    !	
    rS   foobarz0.1 c                    t          |          }dd| d| gt          j                            |           gd}|r|                    |           t          j                            | d          }	t          j        |	           |rg }
g }|D ]}}|                    |          }|d                                v r|}n|
}t          |t          t          f          rd                    |          }|                    | d|            ~t          d                              d	                    |
          d	                    |          
          }nd}t          t          j                            |	d          dd          5 }|                    |           ddd           n# 1 swxY w Y   |t          d          }t          t          j                            |	d          dd          5 }|                    ||z             ddd           n# 1 swxY w Y   t          j                            | | d| d          } ||||           |	S )a  Creates a source tree under path for a trivial test package that has a
    single requirement in setup_requires--a tarball for that requirement is
    also created and added to the dependency_links argument.

    ``distname`` and ``version`` refer to the name/version of the package that
    the test package requires via ``setup_requires``.  The name of the test
    package itself is just 'test_pkg'.
    test_pkgz0.0z==)rk   r   setup_requiresdependency_linkszname version;z: zg
            [metadata]
            {metadata}
            [options]
            {options}
            
)optionsmetadatar   r   wrj   )encodingNzI            import setuptools
            setuptools.setup(**%r)
        r   -z.tar.gz)r   rM   r&   abspathupdater   mkdirpopr   
isinstancetuplelistr   r   r   ro   write)r&   r   r   make_packagesetup_py_templatesetup_attrsuse_setup_cfgnormalized_distnametest_setup_attrsr   r   r   rk   valuesectiontest_setup_cfg_contentsffoobar_paths                     r   create_setup_requires_packager     s   $ %X..1>>W>>?W__T223	   -,,,w||D*--HHX  %! 	/ 	/D$((..E~++----"!%%// (NNd--e--...."&#
 #
 &IIg&&YYx((  
 
 	  #%	bgll8[113	I	I	I )Q	'((() ) ) ) ) ) ) ) ) ) ) ) ) ) )   
 
 
bgll8Z00#	H	H	H 6A	!$445556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 ',,t(;%N%Ng%N%N%NOOKLh000Os$   	F++F/2F/7HH #H c                 <   t          d          t          d          t          d          dddddid	}|                    g d
           | dz  }|                                 t          j                            ||           |                    dd           |S )Nz
            [build-system]
            requires = ["setuptools"]
            build-backend = "setuptools.build_meta"
            z
            __import__('setuptools').setup(
                pbr=True,
                setup_requires=["pbr"],
            )
            z
            [metadata]
            name = mypkg

            [files]
            packages =
                mypkg
            r   zprint('Hello world!'))r   zhello.pyztest.txtzAnother file in here.)zpyproject.tomlr   r   mypkgother)pythonr<   pipinstallpbrr   )prefixPBR_VERSIONz0.42)r   runr   jaracor&   r=   setenv)r5   r   rX   r{   r   s        r   pbr_packager   a  s     
 
 
 
 	
 	
 /
 
 56= E@ 	HH666777F
LLNNN
KeF+++}f---MrS   )&r"   rp   rM   r/   r%   rn   rw   pathlibr   jaraco.pathr   r&   r3   setuptools._normalizationr   r   r   r   textwrapr   fixturer   r   r)   r7   r9   rI   rR   rV   rX   rb   rh   r   r   r   r   r   r   r   rS   r   <module>r      s       				 				     



               0 0 0 0 0 0 # # # # # # # #       
 
 
   
 I...  /.  	& 	& 	&   C C C6 i     !  i     !    *      8 8 8"  4!! !! !!H  4 #J J J JZ & & & & &rS   