
    7f(              
       D   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m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 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  d dl!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* d dl+m,Z, d dl-m.Z. d dl/m0Z0  ej1        ddg          d             Z2 ed           ed          3                                ddd ed           ed          dddidZ4d Z5ej6        7                    ej        d!k    d"#          ej6        8                    d$i e4d%e5ie4g          d&                         Z9d' Z:d( Z; G d) d*          Z< G d+ d,          Z=d- Z> G d. d/          Z?d0 Z@ G d1 d2          ZA G d3 d4          ZBej6        C                    d5          d6             ZDd7 ZE G d8 d9          ZF G d: d;          ZG G d< d=          ZHd> ZIej6        C                    d?          d@             ZJdA ZKdB ZLdC ZMdDedEefdFZNdGeOdHeOfdIZPdS )J    N)deepcopy)import_module)EXTENSION_SUFFIXES)Path)dedent)Mock)uuid4)	run_setup   )contexts
namespaces)	resources)	_DebuggingTips	_LinkTree_TopLevelFinder_encode_pth_find_virtual_namespaces_find_namespaces_find_package_roots_finder_templateeditable_wheel)Distribution)	Extension)SetuptoolsDeprecationWarningstrictlenient)paramsc                 $    | j         dk    rddgS g S )Nr   --config-settingseditable-mode=strict)param)requests    d/home/feoh/.local/pipx/shared/lib/python3.11/site-packages/setuptools/tests/test_editable_install.pyeditable_optsr$   (   s     }  #%;<<I    a          [build-system]
        requires = ["setuptools"]
        build-backend = "setuptools.build_meta"

        [project]
        name = "mypkg"
        version = "3.14159"
        license = {text = "MIT"}
        description = "This is a Python package"
        dynamic = ["readme"]
        classifiers = [
            "Development Status :: 5 - Production/Stable",
            "Intended Audience :: Developers"
        ]
        urls = {Homepage = "https://github.com"}

        [tool.setuptools]
        package-dir = {"" = "src"}
        packages = {find = {where = ["src"]}}
        license-files = ["LICENSE*"]

        [tool.setuptools.dynamic]
        readme = {file = "README.rst"}

        [tool.distutils.egg_info]
        tag-build = ".post0"
        zr        global-include *.py *.txt
        global-exclude *.py[cod]
        prune dist
        prune build
        zThis is a ``README``z!---- placeholder MIT license ----mypkga                  import sys
                from importlib.metadata import PackageNotFoundError, version

                try:
                    __version__ = version(__name__)
                except PackageNotFoundError:
                    __version__ = "unknown"
                a                  from importlib.resources import read_text
                from . import __version__, __name__ as parent
                from .mod import x

                data = read_text(parent, "data.txt")
                print(__version__, data, x)
                zx = ''zHello World)__init__.pyz__main__.pymod.pyzdata.txt)pyproject.tomlMANIFEST.inz
README.rstzLICENSE.txtsrcz __import__('setuptools').setup()darwinpypa/setuptools#4328reasonfilessetup.pyc           	         | dz  }|                                  t          j                            ||           ddddddt	          |          g|}t          |                    |                     g d	}|                    |                                          d
k    sJ |dz                      dd           |dz                      dd           |                    |                                          dk    sJ d S )Nr&   prefixpython-mpipinstall--no-build-isolation-e)r5   r6   r&   z3.14159.post0 Hello Worldzsrc/mypkg/data.txtfoobarutf-8encodingzsrc/mypkg/mod.pyx = 42z3.14159.post0 foobar 42)	mkdirjaracopathbuildstrprintrunstrip
write_text)tmp_pathvenvr0   r$   projectcmds         r#   test_editable_with_pyprojectrM   y   s     GMMOOO
KeG,,, 	G	 
	C 
$((3--
#
#
#C88C==  $?????##//7/KKK!!--h-III88C==  $=======r%   c           	      V   dt          d          ddiddi}t          j                            ||            | dz  }dd	d
dddt	          |          g|}t          |                    |                     g d}|                    |                                          dk    sJ d S )Nr&   ac                  [build-system]
                requires = ["setuptools", "wheel"]
                build-backend = "setuptools.build_meta"

                [project]
                name = "mypkg"
                version = "3.14159"

                [tool.setuptools]
                packages = ["pkg"]
                py-modules = ["mod"]
                r'   za = 4b = 2)r)   pkgr(   r3   r5   r6   r7   r8   r9   r:   )r5   -cz$import pkg, mod; print(pkg.a, mod.b)z4 2r   rA   rB   rC   rD   rE   rF   rG   rI   rJ   r$   r0   rK   rL   s         r#   test_editable_with_flat_layoutrT      s    $  "7+#
 
E* KeH--- G 	G	 
	C 
$((3--
B
B
BC88C==  E))))))r%   c           	      P   dt          d          ddi}t          j                            ||            | dz  }dddd	d
dt	          |          g|}t          |                    |                     g d}|                    |                                          dk    sJ d S )Nr&   a>                  [build-system]
                requires = ["setuptools", "wheel"]
                build-backend = "setuptools.build_meta"

                [project]
                name = "mod"
                version = "3.14159"

                [tool.setuptools]
                py-modules = ["mod"]
                rO   )r)   r(   r3   r5   r6   r7   r8   r9   r:   )r5   rQ   zimport mod; print(mod.b)2rR   rS   s         r#    test_editable_with_single_modulerW      s    $  
 
E& KeH--- G 	G	 
	C 
$((3--
6
6
6C88C==  C''''''r%   c                       e Zd Zd Zej                            dd          ej                            dd          d                         ZdS )TestLegacyNamespacesc                    t          j        t          d          }|dz  }|                                 d}|D ]}t	          j        ||d          }|5  |                                5 }|                    |           t          dd	          }	t          |	          }
|

                                 |
                    d
          j        }|
                    ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          |                    d                    }t!          |          t!          |          k    sJ d S )Nz .*namespace_packages parameter.*matchz.installation_dir)z	myns.pkgAz	myns.pkgBmyns.n.pkgAmyns.n.pkgB42)versionr1   config)
stop_after	dist_infoz*-nspkg.pth)pytestwarnsr   r@   r   build_namespace_packagecontextchdirr
   r   finalize_optionsget_finalized_commandname_install_namespaceslistgloblen)selfrI   monkeypatchdeprecationinstallation_direxamplesrk   rP   ctxdistrL   editable_namer0   s                r#   test_nspkg_file_is_uniquez.TestLegacyNamespaces.test_nspkg_file_is_unique   s   l(0R
 
 
 $&99   
  	I 	ID4XtTRRRC I Ik1133 Is		# AAA$T**$$&&& # 9 9+ F F K''(8-HHHI I I I I I I I I I I I I I I I I I I I I I I I I I I I I I %**=99::5zzS]]******s7   D)A:C/#D/C33D6C37DD
	D
	impl)pkg_resourcesns)zmyns.nc           
      *   d}t          j        || d|          }t          j        || d|          }|dz                      |d           |dz                      |d           |dd         }	|	                    d	           |                    d
dddt          |          g|	           |                    d
ddddt          |          g|	           |                    d
dd| d| dg           |                    g d           dS )a>  
        Installing two packages sharing the same namespace, one installed
        naturally using pip or `--single-version-externally-managed`
        and the other installed in editable mode should leave the namespace
        intact and both packages reachable by import.
        (Ported from test_develop).
        zq        [build-system]
        requires = ["setuptools"]
        build-backend = "setuptools.build_meta"
        z.pkgA)ry   z.pkgBr)   r<   r=   Nr9   r5   r6   r7   r8   r:   rQ   zimport z.pkgA; import )r5   rQ   zimport pkg_resources)r   rf   rH   appendrF   rD   )
rp   rJ   rI   r{   ry   r$   build_systempkg_Apkg_Boptss
             r#   !test_namespace_package_importablez6TestLegacyNamespaces.test_namespace_package_importable  sD   $
 28\\\PTUUU28\\\PTUUU	!	!--lW-MMM	!	!--lW-MMMQQQ*+++(D%CJJFFGGG(D%D#e**LtLMMM(D"GB"G"Gb"G"G"GHIII999:::::r%   N)__name__
__module____qualname__rx   rd   markparametrizer    r%   r#   rY   rY      sz        + + +4 [	
  [T;//; ; 0/ ; ; ;r%   rY   c                        e Zd Zd Zd Zd ZdS )TestPep420Namespacesc           
      l   t          j        |d          }t          j        |d          }|dd         }|                    d           |                    ddddt	          |          g|           |                    ddddd	t	          |          g|           |                    g d
           dS )z
        Installing two packages sharing the same namespace, one installed
        normally using pip and the other installed in editable mode
        should allow importing both packages.
        r]   r^   Nr9   r5   r6   r7   r8   r:   )r5   rQ   z&import myns.n.pkgA; import myns.n.pkgB)r   build_pep420_namespace_packager}   rF   rD   )rp   rJ   rI   r$   r   r   r   s          r#   r   z6TestPep420Namespaces.test_namespace_package_importable+  s     9(MRR9(MRRQQQ*+++(D%CJJFFGGG(D%D#e**LtLMMMKKKLLLLLr%   c           
      8   dt          d          ddidi}t          j                            ||           |dz  }t	          j        |d          }t	          j        |d          }|d	d	         }|                    d
           |                    ddddt          |          g|           |                    dddddt          |          g|           |                    dddddt          |          g|           |                    g d           d	S )z@Currently users can create a namespace by tweaking `package_dir`pkgAat                      [build-system]
                    requires = ["setuptools", "wheel"]
                    build-backend = "setuptools.build_meta"

                    [project]
                    name = "pkgA"
                    version = "3.14159"

                    [tool.setuptools]
                    package-dir = {"myns.n.pkgA" = "src"}
                    r'   a = 1)r)   r+   r3   r^   zmyns.n.pkgCNr9   r5   r6   r7   r8   r:   )r5   rQ   z#from myns.n import pkgA, pkgB, pkgC)	r   rA   rB   rC   r   r   r}   rF   rD   )	rp   rJ   rI   r$   r0   r   r   pkg_Cr   s	            r#   &test_namespace_created_via_package_dirz;TestPep420Namespaces.test_namespace_created_via_package_dir:  s=    "(# # &w/ 
& 	%1116!9(MRR9(MRR QQQ*+++(D%CJJFFGGG(D%D#e**LtLMMM(D%D#e**LtLMMMHHHIIIIIr%   c                    dt          d          ddddddt          d         d	i}t          j                            ||
           |dz  }dg}|                    ddddddt          |          g|           |                    g d          }|                                dk    sJ d}|                    ddt          |          g          }d|v sJ dS )a/  Sometimes users might specify an ``include`` pattern that ignores parent
        packages. In a normal installation this would ignore all modules inside the
        parent packages, and make them namespaces (reported in issue #3504),
        so the editable mode should preserve this behaviour.
        r   ar                      [build-system]
                    requires = ["setuptools", "wheel"]
                    build-backend = "setuptools.build_meta"

                    [project]
                    name = "pkgA"
                    version = "3.14159"

                    [tool.setuptools]
                    packages.find.include = ["mypkg.*"]
                     zb = 1r   )r'   zpkgA.py)r'   zother.pynr*   )r)   r&   r*   r3   r9   r5   r6   r7   -vr8   r:   )r5   rQ   z'from mypkg.n import pkgA; print(pkgA.a)1z}        try:
            import mypkg.other
        except ImportError:
            print("mypkg.other not defined")
        rQ   zmypkg.other not definedN)r   EXAMPLErA   rB   rC   rF   rD   rG   )rp   rJ   rI   r0   r   r   outrL   s           r#   0test_namespace_accidental_config_in_lenient_modezETestPep420Namespaces.test_namespace_accidental_config_in_lenient_mode\  s"    "(# # $& '')#*    '}5/ 
6 	%1116! ''(D%y$E

RTRSSShhRRRSSyy{{c!!!! hh$s455(C//////r%   N)r   r   r   r   r   r   r   r%   r#   r   r   *  sH        M M M J  J  JD00 00 00 00 00r%   r   c           
      .  	 | dz  		fdt           j        D             }|D ]}|                    d           t          |           t	          t
          j        t
          j                            t          t          |                              }t           j        dddd	t          |          d
t          	          dg	|}t          j        ||           t          j                    dk    rdnd}	|z  dz  }t          j        |g|           dS )z>
    Editable install to a prefix should be discoverable.
    r4   c                     g | ]T}d |v |                     t          j                  %t          |                              t          j                  z  US )zsite-packages)
startswithsysr4   r   relative_to).0rB   r4   s     r#   
<listcomp>z-test_editable_with_prefix.<locals>.<listcomp>  s\       d""tsz'B'B" 	d''
333"""r%   T)parents)
PYTHONPATHr6   r7   r8   z
--editablez--prefixr9   )envWindowsScriptsbinsampleN)r   rB   r@   _addsitedirsdictosenvironpathsepjoinmaprD   
executable
subprocess
check_callplatformsystem)
rI   sample_projectr$   site_packages_allspr   rL   r   exer4   s
            @r#   test_editable_with_prefixr     s=     F   H      
 "###
rzbjooc#?P6Q6Q&R&R
S
S
SCNF 
C #3''''  ((I55))5C
3,
!C3%S))))))r%   c                   T    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd ZdS )TestFinderTemplateThis test focus in getting a particular implementation detail right.
    If at some point in time the implementation is changed for something different,
    this test can be modified or even excluded.
    c                 L    i }t          |||            |d                      d S )Nr8   )exec)rp   finderlocs      r#   install_finderz!TestFinderTemplate.install_finder  s1    VS#Ir%   c                    ddddididdid}t           j                            ||	           t          |d
z            t          |dz            d}t	          t          t                                |i           }t          j                    5  t          j                    5  dD ]"}t          j
                            |d            #|                     |           t          d          }t          d          }t          d          }|j        dk    sJ |j        dk    sJ t          |dz                                            }	t!          ||	           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 )Npkg1r   mod1.pyza = 42)r'   subpkgmod2.pyza = 43src1src2r3   z	src1/pkg1z	src2/mod2)r   mod2)r   pkg1.subpkgpkg1.subpkg.mod1r   r   r   r   *   +   zsrc1/pkg1/subpkg)rA   rB   rC   rD   r   r	   r   
save_pathssave_sys_modulesr   modulespopr   r   aresolveassert_path)
rp   rI   r0   mappingtemplatemodmod1r   r   expecteds
             r#   test_packagesz TestFinderTemplate.test_packages  s&    #%((3  )
 
 	%111 ;.//;.//
 
 $CLL'2>> "" 	* 	*H$=$?$? 	* 	*J + +T****))) !344D ((D"=11F6R<<<<6R<<<<H'99BBDDEEH)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s7   F &B6E(F (E,	,F /E,	0F  FFc                    ddddi}t           j                            ||           dt          |dz            i}dg i}t	          t          t                                ||          }t          j                    5  t          j                    5  dD ]"}t          j
                            |d            #|                     |           t          d          }t          j        |          d	z  }t          |dz                                            }	t#          ||	           |j        d
k    sJ |                    d          dk    sJ 	 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 )NrP   a = 13abc)r'   text.txtr3   ns.othernamer{   r{   r   r      r<   r=   )rA   rB   rC   rD   r   r	   r   r   r   r   r   r   r   r   importlib_resourcesr0   r   r   r   	read_text)
rp   rI   r0   r   r   r   r   rP   textr   s
             r#   test_namespacez!TestFinderTemplate.test_namespace  s   eDDE%111!3x%'7#8#89BZ
#CLL':FF "" 	= 	=H$=$?$? 	= 	=- + +T****)))//C&,S11J>DHu,557788HX&&&5B;;;; >>7>33u<<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s7   >E5B>EE5E!	!E5$E!	%E55E9<E9c                 L   ddddiiidddiid}t           j                            ||           t          |d	z            t          |d
z            d}dt          |dz            t          |dz            gi}t	          t          t                                ||          }t          j                    5  t          j                    5  dD ]"}t          j
                            |d            #|                     |           t          d          }t          d          }t          |d	z                                            }	t          ||	           |j        dk    sJ |j        dk    sJ 	 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 )Nr{   r   r'   r   r   b = 37r   r3   zsrc1/ns/pkg1zsrc2/ns)ns.pkgAr{   r   r   )r{   r   ns.mod2r   r   r   %   )rA   rB   rC   rD   r   r	   r   r   r   r   r   r   r   r   r   r   r   b)
rp   rI   r0   r   namespaces_r   r   r   r   r   s
             r#   test_combine_namespacesz*TestFinderTemplate.test_combine_namespaces  s8   F]H$=>?Ix01
 
 	%111 8n455h*++
 
 c(V"344c(V:K6L6LMN#CLL';GG "" 	  	 H$=$?$? 	  	 3 + +T****))) ++D ++DH~5>>@@AAHh'''6R<<<<6R<<<<<	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s7   9FB'F5FF	FF		FF Fc                    dddiidddiid}t           j                                        }|                    |          5  t           j                            |           dd	d
dddgd}t          |          }t          |t          t                                          }t          d |
                                D                       }ddd           n# 1 swxY w Y   t          j                    5  t          j                    5  |d         D ]"}t          j                            |d           #|                     |           t%          d          }	t%          d          }
t          |dz                                            }t          t)          |	j                                                            |k    sJ t          |dz                                            }t          t)          |
j                                                            |k    sJ |	j        dk    sJ |
j        dk    sJ 	 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 )z
        Users may attempt to combine namespace packages in a nested way via
        ``package_dir`` as shown in pypa/setuptools#4248.
        
my_packagezmy_module.pyr   my_package2zmy_module2.pyr   )r+   r   	%PEP 517%zsrc/my_packagezsrc2/my_package2)different_namedifferent_name.subpkgr   r   )script_namepackage_dirpackagesc              3   J   K   | ]\  }}|                     d           |V  dS )z.pyNendswith)r   kvs      r#   	<genexpr>zDTestFinderTemplate.test_combine_namespaces_nested.<locals>.<genexpr>,  s8      WWdaQZZPUEVEVWWWWWWWr%   Nr   zdifferent_name.my_modulez different_name.subpkg.my_module2zsrc/my_package/my_module.pyzsrc2/my_package2/my_module2.pyr   r   )rA   rB   DirectoryStackrg   rC   r   r   rD   r	   nextget_implementationr   r   r   r   r   r   r   r   r   r   __file__r   r   )rp   rI   r0   stackattrsrv   r   coder   r   r   r   s               r#   test_combine_namespaces_nestedz1TestFinderTemplate.test_combine_namespaces_nested  s8    !>8"<="_h$?@
 

 **,,]]8$$ 	X 	XKe$$$*&6-?    ./FG E  &&D$T3uww<<88FWWf&?&?&A&AWWWWWD	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X  "" 	  	 H$=$?$? 	  	 Z( + +T****%%% !;<<D !CDDDH'DDMMOOPPHtDM**224455AAAAH'GGPPRRSSHtDM**224455AAAA6R<<<<6R<<<<<	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 sJ   BCC"C9I%D3II%I	I%I	I%%I),I)c                    ddddiiiddddiiiddddiiid	}t           j                            ||
           i }dt          |dz            gi}t	          t          t                                ||          }d dD             }t          j                    5  t          j                    5  dddg|R D ]"}t          j
                            |d            #|                     |           t          d          }|j        dk    sJ t          j        t"                    5  t          d           d d d            n# 1 swxY w Y   t          j                            t          |dz                       t          d          }	|	j        dk    sJ t          j        t"                    5  t          d           d d d            n# 1 swxY w Y   t          j                            t          |dz                       t          d          }
|
j        dk    sJ 	 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 )Nparentchildzone.pyx = 1ztwo.pyx = 2zthree.pyzx = 3)project1project2project3r3   zproject1/parentc              3       K   | ]	}d | V  
dS )zparent.child.Nr   )r   rk   s     r#   r   zCTestFinderTemplate.test_dynamic_path_computation.<locals>.<genexpr>K  s+      KK4&&&KKKKKKr%   )onetwothreezparent.childzparent.child.oner   zparent.child.twor     zparent.child.threer     )rA   rB   rC   rD   r   r	   r   r   r   r   r   r   r   r   xrd   raisesImportErrorr}   )rp   rI   r0   r   r   r   modsr   r  r  r  s              r#   test_dynamic_path_computationz0TestFinderTemplate.test_dynamic_path_computation?  sZ    "Gh-@#AB!Gh-@#AB!Gj'-B#CD
 

 	%111#h1B&B"C"C!DE#CLL';GGKK3JKKK "" 	  	 H$=$?$? 	  	  ..H4HH + +T****))) 233C5A::::{++ 2 201112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 HOOC: 566777 233C5A::::{++ 4 423334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 HOOC: 566777!"677E7a<<<<<+	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s   I.A6H.$E 4H. EH.EA'H./G?H.GH.GAH."I.H2	2I5H2	6II
I
c                 l   dddii}t           j                            ||           dt          |dz            i}t	          t          t                                |i           }t          j                    5  t          j                    5  t          j
                            dd            |                     |           t          j        t          d          5  t!          d           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 )NrP   r'   zfrom . import pkgr3   r[   rA   rB   rC   rD   r   r	   r   r   r   r   r   r   r   rd   r  r  r   rp   rI   r0   r   r   s        r#   test_no_recursionz$TestFinderTemplate.test_no_recursionc  s    2

 	%111 3x%'((
 $CLL'2>> "" 	% 	%H$=$?$? 	% 	%KOOE4((())){%888 % %e$$$% % % % % % % % % % % % % % %		% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s[   9D)ADC:.D:C>>DC>DD)D	D)D	D))D-0D-c                    ddddidi}t           j                            ||           dt          |dz            i}t	          t          t                                |i           }t          j                    5  t          j                    5  t          j
                            dd            t          j
                            dd            |                     |           t          j        t          d          5  t!          d           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 )	Nfoor   r'   )r'   barr3   zfoo.barr;   r[   r  r  s        r#   test_similar_namez$TestFinderTemplate.test_similar_namex  s   !!2 
 	%111 3x%'((
 $CLL'2>> "" 	( 	(H$=$?$? 	( 	(KOOE4(((KOOIt,,,))){(;;; ( (h'''( ( ( ( ( ( ( ( ( ( ( ( ( ( (	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s[   <EA1D4DD4D!!D4$D!%D4(E4D8	8E;D8	<EEEc                    dddddddi}t           j                            ||           dt          |dz            i}t	          t          t                                |i           }t          j                    5  t          j                    5  t          j
                            dd            |                     |           t          j        t          d	          5  t!          d
           d d d            n# 1 swxY w Y   t          j        t          d	          5  t!          d           d d d            n# 1 swxY w Y   t          j        t          d	          5  t!          d           d d d            n# 1 swxY w Y   t          j        t          d	          5  t!          d           d d d            n# 1 swxY w Y   t          j        t          d	          5  t!          d           d d d            n# 1 swxY w Y   t!          d          }|j        dk    sJ t!          d          }|j        dk    sJ 	 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 )Nr  r   r  r	  )r'   lowercase.py)r'   r!  r  r3   z'FOO'r[   FOOz'foo\.LOWERCASE'zfoo.LOWERCASEz'foo\.bar\.Lowercase'zfoo.bar.Lowercasez
'foo\.BAR'zfoo.BAR.lowercasezFOO.bar.lowercasezfoo.lowercaser   zfoo.bar.lowercaser  )rA   rB   rC   rD   r   r	   r   r   r   r   r   r   r   rd   r  r  r   r  )rp   rI   r0   r   r   r   s         r#   test_case_sensitivityz(TestFinderTemplate.test_case_sensitivity  s!   ! '#%$+  	
 	%1113x%'((
 $CLL'2>> "" 	 	H$=$?$? 	 	KOOE4((())){'::: % %e$$$% % % % % % % % % % % % % % % {2EFFF / /o.../ / / / / / / / / / / / / / / {2KLLL 3 312223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 {-@@@ 3 312223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 {'::: 3 312223 3 3 3 3 3 3 3 3 3 3 3 3 3 3  00C5A:::: 344C5A:::::/	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   >I/AI#C?3I?DIDI%E5IEIE	I'F7IFI
FI)G9IG		IG	I+H;IHIH;II/I	I/I	I//I36I3c                    ddddddi}t           j                            ||           dt          |dz            i}d	g i}t	          t          t                                ||          }t          j                    5  t          j                    5  d
D ]"}t          j
                            |d            #|                     |           t          d          }t          |dz                                            }t          ||           |j        dk    sJ t          d          }	|	j        dk    sJ t          d          }
|
j        dk    sJ t'          j        t*          d          5  t          d           d d d            n# 1 swxY w Y   t'          j        t*          d          5  t          d           d d d            n# 1 swxY w Y   t'          j        t*          d          5  t          d           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 )NrP   r   r   zc = 42)r'   zbar.py)r'   r  r3   r   r{   r   r   zns.othername.foor   zns.othername.foo.barr   z'NS'r[   zNS.othername.fooz'ns\.othername\.FOO\'zns.othername.FOOz'ns\.othername\.foo\.BAR\'zns.othername.foo.BAR)rA   rB   rC   rD   r   r	   r   r   r   r   r   r   r   r   r   r   r   r   crd   r  r  )rp   rI   r0   r   r   r   r   rP   r   r  r  s              r#   test_namespace_case_sensitivityz2TestFinderTemplate.test_namespace_case_sensitivity  s   '#+&  
 	%111!3x%'7#8#89BZ
#CLL':FF "" 	6 	6H$=$?$? 	6 	6- + +T****)))//CHu,557788HX&&&5B;;;; 233C5B;;;; 677C5B;;;;{&999 2 201112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 {2LMMM 2 201112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 {2RSSS 6 645556 6 6 6 6 6 6 6 6 6 6 6 6 6 6-	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s   ICH*3FH*FH*FH*5GH*GH*GH*7HH*HH*HH*I*H.	.I1H.	2II	Ic                    dddddddidii}t           j                            ||	           dt          |d
z            i}t	          t          t                                |i           }t          j                    5  t          j                    5  dD ]"}t          j
                            |d           #|                     |           t          d          }|j        dk    sJ t          d          }|j        dk    sJ t!          j        t$                    5  t          d           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 )z
        The finder should not import ``fullname`` if the intermediate segments
        don't exist (see pypa/setuptools#4019).
        r+   r&   r   r   zb = 13	config.pyza = 37)r'   r(  zhelloworld.py
componentsr3   z	src/mypkg)r&   zmypkg.configmypkg.helloworldzmypkg.componentsmypkg.components.configmypkg.components.helloworldNr+  r   r*  r   r,  )rA   rB   rC   rD   r   r	   r   r   r   r   r   r   r   r   r   r   rd   r  r  )rp   rI   r0   r   r   r   ra   
helloworlds           r#   test_intermediate_packagesz-TestFinderTemplate.test_intermediate_packages  sJ    #%!)%-#X#	 	
 	%111C; 6778#CLL'2>> "" 	= 	=H$=$?$? 	= 	= + + T****)))"#<==F8r>>>>&'9::J<2%%%%{++ = =;<<<= = = = = = = = = = = = = = ='	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s[    E+BE D<0E<E  EE EE+E	E+E	E++E/2E/N)r   r   r   __doc__r   r   r   r   r  r  r  r  r#  r&  r.  r   r%   r#   r   r     s         
  
* * *@= = =.     6)  )  ) V"  "  " H% % %*( ( (0' ' 'R'6 '6 '6R*= *= *= *= *=r%   r   c           
      N   ddidddddiddd	dd
iiiddiddiddid}t           j                            ||            dddd}g d}t          |||           }|t	          | dz            t	          | dz            t	          | dz            t	          | dz            t	          | dz            t	          | dz            dk    sJ t          t          t          ||                              }|ddhk    sJ t          t          |                    }|h dk    sJ dS )r   r'   zab = 1r   )r   r'   zd = 1zde = 1)r'   eghzfgh = 1zabc = 1z
abcxyz = 1z	mnopq = 1)r   dfotheranotheryet_anotherr3   r6  r7  r8  )a.b.ca.b.c.x.y.z	m.n.o.p.q)r   a.br9  	a.b.c.x.yr:  r4  zd.er5  f.gzf.g.hr;  r   r4  r5  )r   r9  r:  r4  r5  r;  r>  >   m.nm.n.oa.b.c.xm.n.o.pmr<  r=  N)	rA   rB   rC   r   rD   setr   r   r   )rI   r0   r   r   rootsr{   s         r#   test_pkg_rootsrF    s    "8,WEE$M8+DEEC-345+!<0%{3 E KeH--- " K
  H  +x@@EC  X'((8i/00C  C  M122      
T"8U3344	5	5B#u	%e,,	-	-BPPPPPPPPPr%   c            
       0   e Zd ZdZ ee          ed         ddddddddd	Ze ee          ed         dd
ed
         id ee           ed          z   ed         dded
         d         ded
         d         d ee          ed         dd
ed
         d         ed
         d         diddZej	        
                    ej        dk    d          ej	                            de                                          d                         ZdS )TestOverallBehaviourz        [build-system]
        requires = ["setuptools"]
        build-backend = "setuptools.build_meta"

        [project]
        name = "mypkg"
        version = "3.14159"
        r*   r   zvar = 42zvar = 13resource 39)r'   r   zresource_file.txt)r'   r   
subpackage)r)   r*   otherfile.pyr&   r&   )r)   r*   rK  r+   z                [tool.setuptools]
                packages = ["mypkg", "mypkg.subpackage"]

                [tool.setuptools.package-dir]
                "mypkg.subpackage" = "other"
                r   )r'   r   rJ  )r)   r*   rK  r&   r6  )r   rJ  )flat-layout
src-layoutcustom-layout	namespacer,   r-   r.   layoutc                 j   t          d||| j        |         g|R  \  }}d}|                    ddt          |          g          }d|v sJ d}	|                    ddt          |	          g          }d|v sJ d}
|                    ddt          |
          g          }d	|v sJ t	          |                    d
                    }t	          |                    d                    }t	          |                    d                    }|                    dd           |                    dd           |                    dd           |                    ddt          |	          g          }d|vsJ d|v sJ |                    ddt          |
          g          }d	|vsJ d|v sJ d S )Nr&   zj        try:
            import otherfile
        except ImportError as ex:
            print(ex)
        r5   rQ   zNo module named 'otherfile'zy        import mypkg, mypkg.mod1, mypkg.subpackage.mod2
        print(mypkg.mod1.var, mypkg.subpackage.mod2.var)
        z42 13z        import mypkg.subpackage
        from setuptools._importlib import resources as importlib_resources
        text = importlib_resources.files(mypkg.subpackage) / "resource_file.txt"
        print(text.read_text(encoding="utf-8"))
        rI  
**/mod1.py
**/mod2.py**/resource_file.txtzvar = 17r<   r=   z	var = 781zresource 374z17 781)install_projectEXAMPLESrF   r   r   rn   rH   )rp   rI   rJ   rP  r$   rK   _cmd_import_errorr   cmd_get_varscmd_get_resourcer   r   resource_files                 r#   test_editable_installz*TestOverallBehaviour.test_editable_install  s    %T8T]6%:
=J
 
 


 hh$/?(@(@ABB,3333 hh$|(<(<=>>#~~~~ hh$/?(@(@ABB#### GLL..//GLL..//W\\*@AABB
W555g666  ' BBBhh$|(<(<=>>c!!!!3hh$/?(@(@ABBC''''$$$$$$r%   N)r   r   r   	PYPROJECTr   r   FLAT_LAYOUTrV  rd   r   xfailr   r   r   keysr\  r   r%   r#   rH  rH  @  s       I !&++}-!!%%2 
 
	 K  #$fY//"=1[12	
 
 %fY//f 	 #=1!&w/	:  !),7#
 
( %fY//"=1*73I>"-g"6|"D 	

 

7& &HP [s|x/8NOO[Xx}}770% 0% 87 PO0% 0% 0%r%   rH  c                       e Zd Z eej        d                   Zedxx          ed          z  cc<   ded         d         d<   d Zd	 Z	d
S )TestLinkTreerM  r)   a[          [tool.setuptools]
        # Temporary workaround: both `include-package-data` and `package-data` configs
        # can be removed after #3260 is fixed.
        include-package-data = false
        package-data = {"*" = ["*.txt"]}

        [tool.setuptools.packages.find]
        where = ["src"]
        exclude = ["*.subpackage*"]
        r   r+   r&   resource.not_in_manifestc                    t           j                            | j        |           t	          |          5  d}t          ddi          }|                                 t                      }|dz  }|dz  }|                                 |                                 |	                    d          }d|_
        t          |          |_        |                                 |                                }|                                }	t!          ||||          }
 |
|||	           t#          |                    d	                    }|d
z  }t'          ||           t#          |                    d          d           J t#          |                    d          d           J t#          |                    d          d           J t#          |                    d          d           J 	 d d d            d S # 1 swxY w Y   d S )Nr3   zmypkg-3.14159r   r   z.auxz.buildbuild_pyTrR  zsrc/mypkg/mod1.pyz**/subpackagerS  rT  z**/resource.not_in_manifest)rA   rB   rC   FILES_Pathr   parse_config_filesr   r@   get_command_objeditable_moderD   	build_libensure_finalizedget_outputsget_output_mappingr   r   rn   assert_link_to)rp   rI   rk   rv   wheelauxrC   re  outputsoutput_mapping	make_treer   r   s                r#   test_generated_treez TestLinkTree.test_generated_tree  sH   $*X6668__ 	O 	O"D <==D##%%%FFEV#Cx'EIIKKKKKMMM++J77H%)H"!$UH%%'''**,,G%88::N!$c599IIeWn555..//D"55H4***11488@@@..55===!788$??GGG!>??FFNNNN;	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	Os   F>HH	Hc                 2   ddg}t          d||| j        g|R   |                    g d          }d|v sJ d}|                    ddt          |          g          }d	|v sJ d
}|                    ddt          |          g          }d|v sJ d|v sJ d S )Nr   r    r&   r5   rQ   z(import mypkg.mod1; print(mypkg.mod1.var)r_   zv        try:
            from mypkg import subpackage
        except ImportError as ex:
            print(ex)
        r5   rQ   cannot import name 'subpackage'a8          import mypkg
        from setuptools._importlib import resources as importlib_resources
        try:
            text = importlib_resources.files(mypkg) / "resource.not_in_manifest"
            print(text.read_text(encoding="utf-8"))
        except FileNotFoundError as ex:
            print(ex)
        zNo such file or directoryrc  )rU  rf  rF   r   )rp   rI   rJ   r   r   rX  rZ  s          r#   test_strict_installz TestLinkTree.test_strict_install  s    #%;<xCdCCCChhSSSTTs{{{{ hh$/?(@(@ABB0C7777 hh$/?(@(@ABB*c1111)S000000r%   N)
r   r   r   r   rH  rV  rf  r   ru  ry  r   r%   r#   rb  rb    s        H)2<@AAE	
vv
	     9>E%L45 O  O  OD1 1 1 1 1r%   rb  z9ignore:.*compat.*:setuptools.SetuptoolsDeprecationWarningc                 ~   ddg}t           j        d         }t          d|| |g|R   |                    g d          }d|v sJ t	          t          |                     }dD ]-}t	          |                    dd	|g                    }||v sJ .d
}|                    dd	t          |          g          }d|v sJ d S )Nr   zeditable-mode=compatrN  r&   rw  r_   )z"import otherfile; print(otherfile)zimport other; print(other)zimport mypkg; print(mypkg)r5   rQ   zc    try:
        from mypkg import subpackage;
    except ImportError as ex:
        print(ex)
    rx  )rH  rV  rU  rF   comparable_pathrD   r   )rI   rJ   r   r0   r   expected_pathrL   s          r#   test_compat_installr}  
  s      !78D )/:EGT8U:T::::
((OOO
P
PC3;;;;#CMM22M $ $
 dhh$'<==>>#####C ((HdF3KK0
1
1C,333333r%   c                 P   t          d          t          d          t          d          dddddid	}|                    g d
           t          j        d          5  t	          d|| |g|R   ddd           n# 1 swxY w Y   |                    g d          }d|v sJ dS )z3Ensure editable installs work with pbr, issue #3500z            [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.)r)   r1   z	setup.cfgr&   r6  )r5   r6   r7   r8   pbrz0.42)PBR_VERSIONr&   N)r5   rQ   zimport mypkg.hellozHello world!)r   rF   r   environmentrU  )rI   rJ   r$   r0   r   s        r#   test_pbr_integrationr  +  sJ    !
 
 
 
 	
 	
 /
 
 56= E@ 	HH666777		&	1	1	1 H HxGGGGGH H H H H H H H H H H H H H H ((999
:
:CS      s   !A>>BBc                   P    e Zd ZdZi ej        d         d ed          iZd ZdS )TestCustomBuildPya$  
    Issue #3501 indicates that some plugins/customizations might rely on:

    1. ``build_py`` not running
    2. ``build_py`` always copying files to ``build_lib``

    During the transition period setuptools should prevent potential errors from
    happening due to those assumptions.
    rL  r1   af              import pathlib
            from setuptools import setup
            from setuptools.command.build_py import build_py as orig

            class my_build_py(orig):
                def run(self):
                    super().run()
                    raise ValueError("TEST_RAISE")

            setup(cmdclass={"build_py": my_build_py})
            c                     t          d||| j                  \  }}d|v sJ d|v sJ |                    g d          }d|v sJ dS )z>Ensure that errors in custom build_py are reported as warningsr&   r   zValueError: TEST_RAISErw  r_   N)rU  rf  rF   )rp   rI   rJ   rW  r   s        r#   test_safeguarded_from_errorsz.TestCustomBuildPy.test_safeguarded_from_errorsu  sh     !$$*EE3-4444'3....hhSSSTTs{{{{{{r%   N)	r   r   r   r/  rH  rV  r   rf  r  r   r%   r#   r  r  V  sd         

'
6FF
 
 E$    r%   r  c                       e Zd Zd Zd ZdS )TestCustomBuildWheelc                 `    |                     d          } G d d|          }||j        d<   d S )Nbdist_wheelc                        e Zd Z fdZ xZS )ETestCustomBuildWheel.install_custom_build_wheel.<locals>.MyBdistWheelc                 |    | j                             d          rd}t                                                      S )Nzmacosx-zmacOS platform)	plat_namer   superget_tag)rp   rW  	__class__s     r#   r  zMTestCustomBuildWheel.install_custom_build_wheel.<locals>.MyBdistWheel.get_tag  s6     >,,Y77 )(Aww(((r%   )r   r   r   r  __classcell__)r  s   @r#   MyBdistWheelr    s8        ) ) ) ) ) ) ) ) )r%   r  )get_command_classcmdclass)rp   rv   bdist_wheel_clsr  s       r#   install_custom_build_wheelz/TestCustomBuildWheel.install_custom_build_wheel  sS    00??	) 	) 	) 	) 	)? 	) 	) 	) (4m$$$r%   c                    t           j                            ddi           t                      }d|_        |                                 |                     |           t          |          }|                                 |	                                 t          t          t                                          d                              }d|v sJ d S )N	module.pyr?   r1   
dist/*.whleditable)rA   rB   rC   r   r   set_defaultsr  r   rl  rF   rD   r   r   rn   )rp   
tmpdir_cwdrv   rL   
wheel_files        r#   test_access_plat_namez*TestCustomBuildWheel.test_access_plat_name  s     	;1222~~%''---T""			dffkk,778899
Z''''''r%   N)r   r   r   r  r  r   r%   r#   r  r    s2        4 4 4( ( ( ( (r%   r  c                   p    e Zd Zd Zej                            ej        dk    d          d             Z	dS )TestCustomBuildExtc                 B    ddl m}  G d d|          }||j        d<   d S )Nr   )	build_extc                       e Zd ZdS )ITestCustomBuildExt.install_custom_build_ext_distutils.<locals>.MyBuildExtN)r   r   r   r   r%   r#   
MyBuildExtr    s        Dr%   r  r  )distutils.command.build_extr  r  )rp   rv   build_ext_clsr  s       r#   "install_custom_build_ext_distutilsz5TestCustomBuildExt.install_custom_build_ext_distutils  sR    JJJJJJ	 	 	 	 	 	 	 	 &0k"""r%   linuxz(compilers may fail without correct setupr.   c                    t           j                            ddi           dt          ddg          gi}t	          |          }d|_        |                                 |                     |           t          |          }|	                                 |
                                 t          t          t                                          d                              }d|v sJ d t                                          d	          D             }t          |          d
k    sJ |d         j        t#          fdt$          D                       sJ d S )Nzmodule.cr   ext_modulesmoduler1   r  r  c                 (    g | ]}|j         d k    |S )z.c)suffix)r   ps     r#   r   zITestCustomBuildExt.test_distutils_leave_inplace_files.<locals>.<listcomp>  s$    HHHqqx47G7G7G7G7Gr%   zmodule.*r   r   c              3   B   K   | ]}                     |          V  d S Nr   )r   extrk   s     r#   r   zHTestCustomBuildExt.test_distutils_leave_inplace_files.<locals>.<genexpr>  s/      DD#4==%%DDDDDDr%   )rA   rB   rC   r   r   r   r  r  r   rl  rF   rD   r   r   rn   ro   rk   anyr   )rp   r  r  rv   rL   r  r0   rk   s          @r#   "test_distutils_leave_inplace_filesz5TestCustomBuildExt.test_distutils_leave_inplace_files  sK    	:r*+++Ih==>
 E""%//555T""			dffkk,778899
Z''''HHDFFKK
33HHH5zzQQx}DDDD1CDDDDDDDDDDr%   N)
r   r   r   r  rd   r   skipifr   r   r  r   r%   r#   r  r    sj        0 0 0 [(R   E E E E Er%   r  c                 X   t           j                            ddi           t                      }d|_        |                                 t          |          }|                                 t          dt          fi           }t           |                      }|                    |d|           d}t          j        |          5  t          j        t          |          5  |                                 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 )
z7Make sure to display useful debugging tips to the user.r  r?   r1   SimulatedErr)side_effectrj   z-following steps are recommended to help debugr[   N)rA   rB   rC   r   r   r  r   rl  type	Exceptionr   setattrrd   r  re   r   rF   )r  rq   rv   rL   r  simulated_failureexpected_msgs          r#   test_debugging_tipsr    s   
K{H-...>>D!D


Cb99L88846GHHHBL	|	$	$  fl>&V&V&V  			                                s6   
D&D;DD	DD	DD#&D#errorc                  R    t          d          } t          | t                    sJ dS )z>Ensure _encode_pth function does not produce encoding warningsu   tkmilan_ç_utf8N)r   
isinstancebytes)contents    r#   test_encode_pthr    s.     +,,Ggu%%%%%%%r%   c                     || z  }|                                  t          j                            ||           g |d}|                    ddddddt          |          g|t          j        	          }||fS )
Nr3   r9   r5   r6   r7   r   r8   r:   )stderr)r@   rA   rB   rC   rF   rD   r   STDOUT)rk   rJ   rI   r0   r   rK   r   s          r#   rU  rU    s    oGMMOOO
KeG,,,*T*)*D
((	4is7||KdK    C C<r%   c                     d                     dt          d | D                       z             }| d         dz                      |d           dS )	a5  To use this function, it is necessary to insert new_dir in front of sys.path.
    The Python process will try to import a ``sitecustomize`` module on startup.
    If we manipulate sys.path/PYTHONPATH, we can force it to run our code,
    which invokes ``addsitedir`` and ensure ``.pth`` files are loaded.
    
)zimport sitec              3   F   K   | ]}d t          j        |          dV  dS )zsite.addsitedir()N)r   fspath)r   new_dirs     r#   r   z_addsitedirs.<locals>.<genexpr>  s8      SSw:29W#5#5:::SSSSSSr%   r   zsitecustomize.pyr<   r=   N)r   tuplerH   )new_dirsr  s     r#   r   r     se     ii
SS(SSS
S
S	T G a[%%11'G1LLLLLr%   c                     | j         rXt          t          | j                   d           }|r6t          t	          |                                                    |k    sJ d S d S d S r  )__path__r   iterrD   r   r   )rP   r   rB   s      r#   r   r     sr    
| 9D&&-- 	9tDzz))++,,88889 9	9 	988r%   filer6  c                    |                                  rHt          |                                           t          |                                          k    sJ d S |                                 }|                                }|t          j                 |t          j                 k    sJ |t          j                 |t          j                 k    sJ d S r  )
is_symlinkrD   r   statST_INOST_DEV)r  r6  	file_stat
other_stats       r#   ro  ro    s     A4<<>>""c%--//&:&:::::::IIKK	ZZ\\
%DK)@@@@@%DK)@@@@@@@r%   str_with_pathreturnc                     |                                                      t          j        d                              dd          S )N/z//)lowerreplacer   sep)r  s    r#   r{  r{    s6      ((55==dCHHHr%   )Qr   r  r   r   r   copyr   	importlibr   importlib.machineryr   pathlibr   textwrapr   unittest.mockr   uuidr	   distutils.corer
   jaraco.envsrA   jaraco.pathrd   rB   rg  r   r   r   setuptools._importlibr   r   !setuptools.command.editable_wheelr   r   r   r   r   r   r   r   r   setuptools.distr   setuptools.extensionr   setuptools.warningsr   fixturer$   rG   r   SETUP_SCRIPT_STUBr   r_  r   rM   rT   rW   rY   r   r   r   rF  rH  rb  filterwarningsr}  r  r  r  r  r  r  rU  r   r   ro  rD   r{  r   r%   r#   <module>r     s   				  



            # # # # # # 2 2 2 2 2 2                         $ $ $ $ $ $                " " " " " " " " B B B B B B
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 ) ( ( ( ( ( * * * * * * < < < < < < ),---  .- f	 < 6	  egg(6!6
 
 "6	 	 %/
 
SD DN 7  3<8+4JKK272J 122 > >  LK>2%* %* %*P#( #( #(L?; ?; ?; ?; ?; ?; ?; ?;Db0 b0 b0 b0 b0 b0 b0 b0J%* %* %*PU= U= U= U= U= U= U= U=p
.Q .Q .Qbt% t% t% t% t% t% t% t%nP1 P1 P1 P1 P1 P1 P1 P1f WXX4 4 YX4@(! (! (!V' ' ' ' ' ' ' 'T( ( ( ( ( ( ( (:E E E E E E E E@  $ G$$& & %$&	 	 	
M 
M 
M 9 9 9A Ad A A A AI3 I3 I I I I I Ir%   