
    پh                        d 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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mZ ddlmZ ddlZddlmZ ddlZddlmc mZ ddlmZmZ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,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2Z3 ejh                  d      d        Z5 G d d      Z6 e1d      Z7 G d d      Z8ejr                  ju                  d       G d d             Z;ejh                  d        Z<ejr                  j{                  d      ejr                  j{                  d       G d  d!                    Z>ejh                  d"        Z?ejr                  j{                  d#       G d$ d%             Z@ejh                  d&        ZA G d' d(      ZB G d) d*      ZCd+ ZDd, ZEd- ZFd. ZGd/d0eDddd1fd2ZHejr                  j                  e
j                  j                  d3      xr  ej                  e
j                        d45       G d6 d7             ZN G d8 d9      ZO G d: d;      ZP G d< d=e      ZQd> ZRejr                  j                  e
j                  d?k(  d@5      dA        ZTy)BzEasy install Tests    N)Path)
NamedTuple)mockpath)Distributionnormalize_pathworking_set)sandbox)
safer_name)PthDistributions)r   	run_setup)fail_on_ascii)
MockServerpath_to_url   )contexts)DALST)autousec                 (    | j                  dd       y)z
    Important: Disable the default index for pip to avoid
    querying packages in the index and potentially resolving
    and installing packages there.
    PIP_NO_INDEXtrueN)setenv)monkeypatchs    ^/var/www/Befach/backend/env/lib/python3.12/site-packages/setuptools/tests/test_easy_install.pypip_disable_indexr   *   s     ~v.    c                       e Zd Zd Zd Zy)FakeDistc                     |dk7  ri S ddiS )Nconsole_scriptsnameep )selfgroups     r   get_entry_mapzFakeDist.get_entry_map5   s    %%I~r   c                      y)Nspecr%   r&   s    r   as_requirementzFakeDist.as_requirement:   s    r   N)__name__
__module____qualname__r(   r,   r%   r   r   r    r    4   s    
r   r    z3
    from setuptools import setup

    setup()
    c                   0   e Zd Zd Zd Zd Zd Zd Zej                  d        Z
ed        Zej                  d        Zed	        Zej                  d
        Zej                   j#                  ej&                  j)                  d       d      d        Zy)TestEasyInstallTestc                    t         j                  j                         j                         j	                         }t               }t        t         j                  j                  |            }t        j                  |d      \  }}|j                  |      sJ d|v sJ d|v sJ d|v sJ t        j                  d|t        j                        sJ y )N   z'spec'z'console_scripts'z'name'z^# EASY-INSTALL-ENTRY-SCRIPT)flags)eiCommandSpecbestfrom_environment	as_headerr    nextScriptWriterget_args	itertoolsislice
startswithresearch	MULTILINE)r&   headerdistargs_namescripts         r   test_get_script_argsz(TestEasyInstallTest.test_get_script_argsH   s    $$&779CCEzBOO,,T23!((q1v  (((6!!!"f,,,6!!!yy7r||TTTr   c                    t               }t        j                  |      }d |_        d|_        ddg|_        t        j                  j                  t        j                         d      |_        dg|_        |j                          |j                  j                  i k(  sJ t        j                  |      }d |_        ddg|_        t        j                  j                  t        j                         d      |_        dg|_        |j                          t!        |j                  j                  j#                               }|ddgk(  sJ y )Nc                       yNTr%   r%   r   r   <lambda>z8TestEasyInstallTest.test_no_find_links.<locals>.<lambda>X       4r   Tlink1link2okc                       yrK   r%   r%   r   r   rL   z8TestEasyInstallTest.test_no_find_links.<locals>.<lambda>b   rM   r   )r   r5   easy_installcheck_pth_processingno_find_links
find_linksosr   jointempfilemkdtempinstall_dirrE   ensure_finalizedpackage_indexscanned_urlssortedkeys)r&   rD   cmdr_   s       r   test_no_find_linksz&TestEasyInstallTest.test_no_find_linksS   s    ~ood##/  !7+'',,x'7'7'94@6  --333 ood##/ !7+'',,x'7'7'94@6c''4499;<))))r   c                    t               }t        j                  |      }t        j                         |_        t        j                  t        j                  j                        5  |j                          ddd       y# 1 sw Y   yxY w)zS
        Test that `cant_write_to_target` is rendered as a DistutilsError.
        N)r   r5   rR   rV   getcwdrZ   pytestraises	distutilserrorsDistutilsErrorcant_write_to_target)r&   rD   r`   s      r   test_write_exceptionz(TestEasyInstallTest.test_write_exceptionj   s_     ~ood#))+]]9++::; 	'$$&	' 	' 	's   &B  B	c                     t        d      fd}|j                  t        d|d       t        j                         v sJ y)zh
        get_site_dirs should always return site dirs reported by
        site.getsitepackages.
        z/setuptools/test/site-packagesc                  
     gS Nr%   r   s   r   mock_gspz8TestEasyInstallTest.test_all_site_dirs.<locals>.mock_gsp{   s
    6Mr   getsitepackagesFraisingN)r	   setattrsiter5   get_site_dirs)r&   r   rn   r   s      @r   test_all_site_dirsz&TestEasyInstallTest.test_all_site_dirst   sF    
 >?	 	D"3XuMr''))))r   c                 `    |j                  t        dd       t        j                         sJ y )Nro   Frp   )delattrrs   r5   rt   )r&   r   s     r   0test_all_site_dirs_works_without_getsitepackageszDTestEasyInstallTest.test_all_site_dirs_works_without_getsitepackages   s*    D"3UC!!!r   c                     dt        d      fddg}d}||z  }t        j                  t        |      d      }|D ]  \  }}|j	                  ||        |j                          t        |      S )Nsetup.pya5  
                    import setuptools
                    setuptools.setup(
                        name="setuptools-test-unicode",
                        version="1.0",
                        packages=["mypkg"],
                        include_package_data=True,
                    )
                    zmypkg/__init__.py )u   mypkg/☃.txtr|   zsetuptools-test-unicode-1.0.zipw)r   zipfileZipFilestrwritestrcloser&   tmpdirfiles
sdist_namesdist	sdist_zipfilenamecontents           r   sdist_unicodez!TestEasyInstallTest.sdist_unicode   s     
'
0 7
# OOCJ4	!&Hgx1 "'5zr   c                     t        ddgi      }|dz  j                         }t        j                  |t	        |      dg      }|j                  t        j                  dt	        |             |j                          |j                  |       y)zq
        The install command should execute correctly even if
        the package has unicode filenames.
        script_argsrR   targetxrZ   rE   
PYTHONPATHN	r   
ensure_dirr5   rR   r   setitemrV   environr[   )r&   r   r   r   rD   r   r`   s          r   test_unicode_filename_in_sdistz2TestEasyInstallTest.test_unicode_filename_in_sdist   s|     ]^,<=>8#//1ooF

 	BJJc&kB'r   c                    dt        d      fddt        d      fg}d}||z  }t        j                  t        |      d      }|D ]&  \  }}|j	                  ||j                  d             ( |j                          t        |      S )	Nrz   ar  
                    import setuptools
                    setuptools.setup(
                        name="setuptools-test-unicode",
                        version="1.0",
                        packages=["mypkg"],
                        include_package_data=True,
                        scripts=['mypkg/unicode_in_script'],
                    )
                    r{   zmypkg/unicode_in_scriptu   
                    #!/bin/sh
                    # á

                    non_python_fn() {
                    }
                z&setuptools-test-unicode-script-1.0.zipr}   utf-8)r   r~   r   r   r   encoder   r   s           r   sdist_unicode_in_scriptz+TestEasyInstallTest.sdist_unicode_in_script   s     	 &)#
< >
# OOCJ4	!&Hgx)@A "'5zr   c                     t        ddgi      }|dz  j                         }t        j                  |t	        |      dg      }|j                  t        j                  dt	        |             |j                          |j                  |       y)zr
        The install command should execute correctly even if
        the package has unicode in scripts.
        r   rR   r   r   r   r   Nr   )r&   r   r   r   rD   r   r`   s          r   test_unicode_content_in_sdistz1TestEasyInstallTest.test_unicode_content_in_sdist   sv     ]^,<=>8#//1oodF3%HBJJc&kB01r   c                 r    dt        d      fdt        d      fg}d}t        ||z        }t        ||       |S )Nrz   a  
                    import setuptools
                    setuptools.setup(
                        name="setuptools-test-script",
                        version="1.0",
                        scripts=["mypkg_script"],
                    )
                    mypkg_scriptzg
                     #/usr/bin/python
                     print('mypkg_script')
                     zsetuptools-test-script-1.0.zip)r   r   
make_sdist)r&   r   r   r   r   s        r   sdist_scriptz TestEasyInstallTest.sdist_script   s\     	 
0 6
FZ'(5% r   linuxzTest can only be run on Linuxreasonc                 J   t        ddgi      }|dz  j                         }t        j                  |t	        |      dg      }|j                  t        j                  dt	        |             |j                          |j                  |       |dz  j                         sJ y)	z.
        Check scripts are installed.
        r   rR   r   r   r   r   r   N)
r   r   r5   rR   r   r   rV   r   r[   exists)r&   r   r   r   rD   r   r`   s          r   test_script_installz'TestEasyInstallTest.test_script_install  s     ]^,<=>8#//1ooF

 	BJJc&kB&'//111r   N)r-   r.   r/   rH   ra   rj   ru   rx   rd   fixturer   r   r   r   r   r   markskipifsysplatformr?   r   r%   r   r   r1   r1   G   s    	U*.'*" ^^! !F ( (  ^^' 'R 2 2 ^^ < [[LL##G,,5T  22r   r1   zignore:Unbuilt eggc                       e Zd Zd Zd Zd Zy)TestPTHFileWriterc                     t        dt        j                         g      }|j                  rJ |j	                  t        t        j                                      |j                  sJ y)zba pth file manager should set dirty
        if a distribution is in site but also the cwd
        does-not_existN)r   rV   rc   dirtyaddPRDistribution)r&   pths     r   !test_add_from_cwd_site_sets_dirtyz3TestPTHFileWriter.test_add_from_cwd_site_sets_dirty(  sH     /"))+?99}ryy{+,yyyr   c                     d}t        j                  |      }t        d|g      }|j                  rJ |j	                  t        |             |j                  rJ y )Nz%/test/location/does-not-have-to-existr   )pkg_resourcesr	   r   r   r   r   )r&   locationr   s      r   test_add_from_site_is_ignoredz/TestPTHFileWriter.test_add_from_site_is_ignored1  sY    : //9
 99}x()99}9r   c                    |j                  d      }|j                          t        |j                  d            }t        |      }t        |      }|j                  |j                  cxk(  rg k(  sJ d        J d       |j                  d      }|j                          t        |      }|j                  j                  |       |j                          |j                  sJ d       ||j                  vsJ d       |j                          ||j                  v sJ d       |j                  d   |k(  sJ d	       t        |      j                  |j                  k(  sJ d
       y)z
        If the pth file is modified under the hood, then PthDistribution
        will refresh its content before saving, merging contents when
        necessary.
        
pth_subdirz	file1.pthz6unless there would be some default added at some point
src_subdirzEthe new_src_path added must still be present/valid in pth1 after savez:right before we save the entry should still not be presentzJthe new_src_path entry should have been added by pth2 with its save() callzVand it should match exactly on the last entry actually given we append to it in save()zXand we should have the exact same list at the end with a fresh PthDistributions instanceN)rW   mkdirr   r   pathsappendsave)r&   r   r   pth_pathpth1pth2new_src_pathnew_src_path_strs           r   *test_many_pth_distributions_merge_togetherz<TestPTHFileWriter.test_many_pth_distributions_merge_together?  sg    [[.
z{34))zzTZZ-2- 	
D	
- 	
D	
-
 {{<0|,

*+		zz 	
S	
z  tzz1 	
H	
1 			4::- 	
X	
- zz"~- 	
.	
-
  )//4::= 	
5	
=r   N)r-   r.   r/   r   r   r   r%   r   r   r   r   &  s    )
r   r   c              #      K   | dz  j                  dd      5 }|j                  t               d d d        | j                         5  |  d d d        y # 1 sw Y   'xY w# 1 sw Y   y xY ww)Nrz   r}   r   encoding)openwriteSETUP_PYas_cwd)r   fs     r   setup_contextr   k  sh     
:
	#	#C'	#	: a		    s3   A-AA-A!	A-AA-!A*&A-user_overrider   c                      e Zd Z ej                  d ej
                               Z ej                  dej                         ej                  dd      ed                      Z	 ej                  dd      ed               Z
ed        Zd	 Zej                  d
        Zej                  d        Zd Zej(                  d        Zd Zy)TestUserInstallTestz;setuptools.command.easy_install.easy_install.check_site_dirz(setuptools.command.easy_install.__file__site.ENABLE_USER_SITETc                 $    | j                          y rm   assert_not_user_siter+   s    r   /test_user_install_not_implied_user_site_enabledzCTestUserInstallTest.test_user_install_not_implied_user_site_enabled  s     	!!#r   Fc                 $    | j                          y rm   r   r+   s    r   0test_user_install_not_implied_user_site_disabledzDTestUserInstallTest.test_user_install_not_implied_user_site_disabled  s     	!!#r   c                      t               } d| _        t        j                  |       }dg|_        |j                          |j                  rJ d       y )Nrz   pyzuser should not be implied)r   script_namer5   rR   rE   r[   user)rD   r`   s     r   r   z(TestUserInstallTest.assert_not_user_site  sJ     ~%ood#688999|8r   c                     t        j                  d       t        j                  d      }t        j                  t        j
                  t        j                         |j                  d       y )Nmultiprocessingtest_easy_install)levelstreamzthis should not break)	rd   importorskiplogging	getLoggerbasicConfigINFOr   stderrinfo)r&   logs     r   test_multiproc_atexitz)TestUserInstallTest.test_multiproc_atexit  sG    -. 34',,szzB()r   c                     |dz  }|j                  d      5 }|j                  d       d d d        t        |      S # 1 sw Y   t        |      S xY w)Nzfoo-1.0.egg-infor}   z
Name: foo
)r   r   r   )r&   r   egg_filer   s       r   foo_packagezTestUserInstallTest.foo_package  sK    ..]]3 	#1GGM"	#6{	#6{s	   <Ac              #     K   t        |      }t        j                  dt        j                  |gz         5  t
        j                  j                  j                  t        j                        }t        j                  j                  t
        j                  |      5  | d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY ww)Nzsys.pathr   )
r   r   patchr   r   rV   pathseprW   dictr   )r&   r   r   python_paths       r   install_targetz"TestUserInstallTest.install_target  s     VZZ
CHHx$78 	''//..sxx8KD 	 	 	 	s5   4CA'B?B3"B?*	C3B<	8B??CCc                    t               }d|_        t        j                  |      }||_        dg|_        |j                          |j                  j                  |g       |j                  d      }t        j                  j                  t        j                  j                  |j                              }t        j                  j                  t        j                  j                  |            }||k(  sJ y)zd
        The local index must be used when easy_install locates installed
        packages.
        rz   fooN)r   r   r5   rR   rZ   rE   r[   local_indexscanrV   r   normcaserealpathr   )r&   r   r   rD   r`   resactualexpecteds           r   test_local_indexz$TestUserInstallTest.test_local_index  s    
 ~%ood#(7k]+u%!!"''"2"23<<"@A77##BGG$4$4[$AB!!!r   c              /      K    | j                   |i |5  ddlmc m} t        j
                  |_        d ddd       y# 1 sw Y   yxY ww)zw
        Wrap sandbox.setup_context to patch easy_install in that context to
        appear as user-installed.
        r   N)orig_contextsetuptools.command.easy_installcommandrR   rs   	USER_SITE__file__)r&   rE   kwargsr5   s       r   user_install_setup_contextz.TestUserInstallTest.user_install_setup_context  sE      T// 	88..BK		 	 	s   A#A	AA
Ac                 l    t         j                  | _        t        j                  d| j
                        S )Nz setuptools.sandbox.setup_context)r   r   r  r   r   r  r+   s    r   patched_setup_contextz)TestUserInstallTest.patched_setup_context  s-    #11zz.++
 	
r   N)r-   r.   r/   r   r   Mockprev_sp_writers   r  r   r   staticmethodr   r   rd   r   r   r   r   
contextlibcontextmanagerr  r	  r%   r   r   r   r   s  s     DJJE		M TZZ:DNNKTZZ'.$  / L$ TZZ'/$  0$ : :* ^^  ^^ "" 	 	
r   r   c               #     K   t         j                  dd      } t        j                  t        j
                        5  t        ddd      5 }|j                  |        d d d        d  d d d        y # 1 sw Y   xY w# 1 sw Y   y xY ww)Nzfrom setuptools import setupz from distutils.core import setup)cdrz   r}   r   r   )r   replacer   tempdirrV   chdirr   r   )distutils_setup_pyr   s     r   distutils_packager    s}     !))&* 
		RXX	& *cG4 	(GG&'	( 	( 	( s4   ;BA?A3A?*	B3A<	8A??BBr  c                       e Zd Zd Zy)TestDistutilsPackagec                     t        ddg       y )Nrz   	bdist_eggr   r+   s    r   )test_bdist_egg_available_on_distutils_pkgz>TestDistutilsPackage.test_bdist_egg_available_on_distutils_pkg  s    *{m,r   N)r-   r.   r/   r  r%   r   r   r  r    s    -r   r  c                      t               } | j                  dk(  rt        j                  d       | j	                          | S )Nr   zcould not find a valid port)r   server_portrd   skipstart)p_indexs    r   
mock_indexr     s6     lGa 	12MMONr   c                       e Zd Zd Zd Zy)TestInstallRequiresc                 x   |dz  }|j                  d       |dz  }|j                  d       | j                  |       t        j                  ddddt	        |      dt	        |      d	t	        |      d
t	        |      dt	        |      dt	        |      dt	        |      g}i t
        j                  d|j                  i}t        j                  |t	        |      |t        j                  t        j                  dd      }|j                  dk7  sJ 	 d|j                  D ch c]  }|j                   c}v sJ t        d |j                   j#                         D              sJ yc c}w # t$        $ rB d|j                   v r2t'        j(                  t        j*                   d|j                            w xY w)z~
        When ``python setup.py install`` is called directly, it will use easy_install
        to fetch dependencies.
        projectT)exist_okinstall-c __import__("setuptools").setup()z--install-basez--install-libz--install-headersz--install-scriptsz--install-dataz--install-purelibz--install-platlib__EASYINSTALL_INDEXr   )cwdenvstdoutr   textr   r   /does-not-exist/c              3   0   K   | ]  }d |v rd|v r|  yw)z"not find suitable distribution forzdoes-not-existNr%   ).0lines     r   	<genexpr>zOTestInstallRequires.test_setup_install_includes_dependencies.<locals>.<genexpr>  s(      74?$, s   zfailed to get random numbersz failure - N)r   create_projectr   
executabler   rV   r   url
subprocessrunPIPESTDOUT
returncoderequestsr   r:   r,  
splitlines	Exceptionrd   xfailr   )	r&   tmp_pathr   project_rootinstall_rootr`   r+  cprs	            r   (test_setup_install_includes_dependenciesz<TestInstallRequires.test_setup_install_includes_dependencies  s     )+D))+D)L)NN.%
( DC2JNNC^^L!??$$
 }}!!!	%*:M:M)NQ!&&)NNNN II002    *O  	-:~[DE	s   E. #E)62E. )E. .AF9c                 l    d}|dz  j                  t        |      d       |dz  j                          y )Nz
        [metadata]
        name = project
        version = 42

        [options]
        install_requires = does-not-exist
        py_modules = mod
        	setup.cfgr   r   zmod.py)
write_textr   touch)r&   rootconfigs      r   r3  z"TestInstallRequires.create_project'  s7     
	''Vw'G	!r   N)r-   r.   r/   rD  r3  r%   r   r   r"  r"    s    6p"r   r"  c                   x   e Zd Zd Zeej                  d               ZdZe	j                  j                  de      d        Ze	j                  j                  de      d        Ze	j                  j                  de      d        Zd Zd	 Zd
 Zd Ze	j                  j                  dd      d        Zd Zd Zy)TestSetupRequiresc                    |j                  dd       |j                  dd       |j                  dd       t        j                         5  t        j	                         5 }t        j
                         5 }t        j                  |      5  t        j                  ddd	d
|j                  dd||g
}t        j                  |      j                          ddd       ddd       ddd       ddd       |j                  D cg c]  }|j                   c}dgk(  sJ y# 1 sw Y   LxY w# 1 sw Y   PxY w# 1 sw Y   TxY w# 1 sw Y   XxY wc c}w )z
        When easy_install installs a source distribution which specifies
        setup_requires, it should honor the fetch parameters (such as
        index-url, and find-links).
        PIP_RETRIES0PIP_TIMEOUTr   falser   r'  r(  rR   z--index-urlz--exclude-scriptsz--install-dirNr.  )r   r   quietrL  create_sdistr  environmentr   r4  r5  r6  Popenwaitr;  r   )r&   r   r   	dist_filetemp_install_dirr`   rC  s          r   'test_setup_requires_honors_fetch_paramsz9TestSetupRequires.test_setup_requires_honors_fetch_params6  s1    	=#.=#.>73^^ 	5"//1 5Y%%' 5+;!--9IJ 5NN >*)&NN/+,% #((-224555	5& !+ 3 34149K8LLLL5 55 55 5	5 	5& 5s[   E D75D+AD	D+D7$EED($D++D40D77E 	<EEc               #      K   t        j                         5 } t        j                  j	                  | d      }t        |dt        d      fdg       | ddd       y# 1 sw Y   yxY ww)zl
        Return an sdist with a setup_requires dependency (of something that
        doesn't exist)
        z"setuptools-test-fetcher-1.0.tar.gzrz   a  
                    import setuptools
                    setuptools.setup(
                        name="setuptools-test-fetcher",
                        version="1.0",
                        setup_requires = ['does-not-exist'],
                    )
                rF  r|   N)r   r  rV   r   rW   r   r   )dir	dist_paths     r   rS  zTestSetupRequires.create_sdistT  sr       	3S*NOI #	 && O+	 	 	s   A*>A	A*A'#A*)r%   dependency_linkssetup_requires)r_  ra  use_setup_cfgc                 ,   t        ddd      }t        j                  |       t        j                         5  t        j
                         5 }t        ||      }t        j                  j                  |d      }t        j                         5 \  }}t        |dg       ddd       j                         }t        |      d	kD  sJ |d
   j                         dk(  sJ 	 ddd       ddd       y# 1 sw Y   SxY w# 1 sw Y   xY w# 1 sw Y   yxY w)a<  
        Regression test for distribution issue 323:
        https://bitbucket.org/tarek/distribute/issues/323

        Ensures that a distribution's setup_requires requirements can still be
        installed and used locally even if a conflicting version of that
        requirement is already on the path.
        zdoes-not-matterfoobar0.0project_nameversionrb  rz   --nameNr   r   test_pkg)r   r
   r   r   save_pkg_resources_stater  create_setup_requires_packagerV   r   rW   rR  r   	readlineslenstrip)	r&   rb  	fake_disttemp_dirrk  test_setup_pyr,  _stderrliness	            r   .test_setup_requires_overrides_version_conflictz@TestSetupRequires.test_setup_requires_overrides_version_conflicty  s     #He
	 		"..0 	7!!# 7x8M !#Xz B^^% 9):&' mhZ89
 ((*5zA~%~Ry(J6667	7 	79 97 7	7 	7s=   D
AC>C2 A C>!D
2C;7C>>D	D

Dc           
      d   t        j                         5  t        j                         5 }t        j                  j                  |d      }t        |dd       t        j                  j                  |d      }t        j                  |       t        j                  |      5 }d |_
        |j                  |       ddd       t        j                  j                  d|       t        |dd      }t        j                   |       t#        d	      }t%        |dd
t        ||      }t        j                  j                  |d      }	t        j&                         5 \  }
}	 t)        |	dg       ddd       d
j3                         vsJ |
j5                         }t7        |      dkD  sJ |d   j9                         dk(  sJ 	 ddd       ddd       y# 1 sw Y   xY w# t*        j,                  $ r t/        j0                  d       Y w xY w# 1 sw Y   xY w# 1 sw Y   YxY w# 1 sw Y   yxY w)z
        Like ``test_setup_requires_overrides_version_conflict`` but where the
        ``setup_requires`` package is part of a namespace package that has
        *already* been imported.
        zfoo_bar-0.1.tar.gzzfoo.bar0.1zfoo_bar-0.1c                     | S rm   r%   )memberr   s     r   rL   zFTestSetupRequires.test_setup_requires_override_nspkg.<locals>.<lambda>  s    r   Nr   rf  a                      import foo  # Even with foo imported first the
                                # setup_requires package should override
                    import setuptools
                    setuptools.setup(**%r)

                    if not (hasattr(foo, '__path__') and
                            len(foo.__path__) == 2):
                        print('FAIL')

                    if 'foo_bar-0.2' not in foo.__path__[0]:
                        print('FAIL')
                z0.2ri  rz   rj  z9Installing setup.py requirements caused a VersionConflictFAILr   r   rk  )r   rl  r  rV   r   rW   make_nspkg_sdistr   tarfiler   extraction_filter
extractallr   insertr   r
   r   r   rm  rR  r   r   VersionConflictrd   failgetvaluern  ro  rp  )r&   rb  rr  foobar_1_archivefoobar_1_dirtfrD   templaterk  rs  r,  rt  ru  s                r   "test_setup_requires_override_nspkgz4TestSetupRequires.test_setup_requires_override_nspkg  s    ..0 :	7!!# 97x#%77<<:N#O  !19eD  "ww||HmD&\\"23 0r+FB(MM,/0 <0% y% %  9$"/ !#Xz B^^% ):&' "-(<	 V__%6666((*5zA~%~Ry(J666s97:	7 :	70 0T )88 W Y97 97:	7 :	7ss   H&A8H"G<BHH G -AHH&GH (H	H
H	HHHH#	H&&H/c           	      
   d }t        j                         5  t        j                         5 }t        |t	        d      ||dz         }t
        j                  j                  |d      }t        j                         5 \  }}t        |dg       d d d        j                         }t        |      dkD  sJ |d   j                         d	k(  sJ 	 d d d        d d d        y # 1 sw Y   SxY w# 1 sw Y   xY w# 1 sw Y   y xY w)
Nc           
      j    dt        d|d|d|d      f|dz   t        d      fg}t        | |       y )Nrz   zj
                    import setuptools
                    setuptools.setup(
                        name=z",
                        version=z&,
                        py_modules=[z-],
                    )
                    z.pyz6
                    version = 42
                    )r   r   )r]  distnamerh  r   s       r   make_dependency_sdistzVTestSetupRequires.test_setup_requires_with_attr_version.<locals>.make_dependency_sdist  sm      '\ *!!( ,%%-L 1	 u$E. y%(r   zattr: foobar.version)rh  )setup_attrsmake_packagerb  rz   	--versionr   r   42)r   rl  r  rm  r   rV   r   rW   rR  r   rn  ro  rp  )	r&   rb  r  rr  rk  rs  r,  rt  ru  s	            r   %test_setup_requires_with_attr_versionz7TestSetupRequires.test_setup_requires_with_attr_version  s    	)4 ..0 	1!!# 1x8 $-C D!6"/,">	 !#Xz B^^% <):&'mk];<((*5zA~%~Ry(D0001	1 	1< <1 1	1 	1s<   C9AC->C!A C-C9!C*&C--C6	2C99Dc           
         |j                  dd       |j                  dd       |j                  dd       |j                  d|j                         t        j                         5  t        j                         5 }t        |ddt        g 	      
      }t        j                  j                  |d      }t        |dd      5 }|j                  t        d             d d d        t        j                  j                  |d      }t        j                  t        j                   j"                        5  t%        |dg       d d d        d d d        d d d        t'        |j(                        dk(  sJ |j(                  d   j                  dk(  sJ y # 1 sw Y   xY w# 1 sw Y   ^xY w# 1 sw Y   bxY w# 1 sw Y   fxY w)NrN  rO  rP  r   rQ  PIP_INDEX_URLpython-xlib0.19r^  r  rF  r}   r   r   z}
                        [easy_install]
                        index_url = https://pypi.org/legacy/
                        rz   r  r   r   z/python-xlib/)r   r5  r   rl  r  rm  r   rV   r   rW   r   r   r   rd   re   rf   rg   rh   r   ro  r;  )r&   r   r   rr  rk  test_setup_cfgfprs  s           r   "test_setup_requires_honors_pip_envz4TestSetupRequires.test_setup_requires_honors_pip_env  s   =#.=#.>73?JNN;..0 	<!!# <x8! $b 9	 "$h!D.#@ BHH !#Xz B]]9#3#3#B#BC <mk];<%<	<* :&&'1,,,""1%**o=== < <%< <	< 	<sV   'F7<AF+FAF+4FF+
F7FF+F($F++F4	0F77G c                 b   |j                  dd       |j                  dd       |j                  d|j                         t        j                         5  t        j                         5 }t
        j                  j                  |d      }t        |dd       t        |d	      }t        |d
dt        d|             }t
        j                  j                  |d      }t        |dg       d d d        d d d        t        |j                        dk(  sJ y # 1 sw Y   ,xY w# 1 sw Y   0xY w)NrN  rO  rP  r  z
dep.tar.gz
dependencyr  	localhost)	authorityr  r  zdependency @ r`  r  rz   r  r   )r   r5  r   rl  r  rV   r   rW   make_trivial_sdistr   rm  r   r   ro  r;  )r&   r   r   rr  	dep_sdistdep_urlrk  rs  s           r   #test_setup_requires_with_pep508_urlz5TestSetupRequires.test_setup_requires_with_pep508_url$  s   =#.=#.?JNN;..0 	8!!# 8xGGLL<@	"9lDA%i;G8! $mG94M N !#Xz B-+78	8 :&&'1,,,8 8	8 	8s%   D%*BD.D%D"	D%%D.c           	         dt        d      t        d      di}t        j                         5  t        j                         5 }t	        j
                  ||       t        t        j                  |dd            }t        j                  t        j                  j                        5  t        |dg       ddd       ddd       ddd       t        |j                         d	k(  sJ y# 1 sw Y   4xY w# 1 sw Y   8xY w# 1 sw Y   <xY w)
z2The `allow-hosts` option in not supported anymore.rk  z~
                    from setuptools import setup
                    setup(setup_requires='python-xlib')
                    z\
                    [easy_install]
                    allow_hosts = *
                    rz   rF  prefixrz   r  Nr   )r   r   rl  r  r   buildr   pathlibr   rd   re   rf   rg   rh   r   ro  r;  )r&   r   r   rr  setup_pys        r   $test_setup_requires_with_allow_hostsz6TestSetupRequires.test_setup_requires_with_allow_hosts8  s       "
  ..0 	7!!# 7x

52w||Hj*MN]]9#3#3#B#BC 7h677	7 :&&'1,,,7 77 7	7 	7s<   DA%C5(C)6C5>D)C2.C55C>	:DD
c                     |j                  dd       |j                  dd       |j                  dd       |j                  dd       d}t        t        ||z              }d}t        t        ||z        d	d
|       d}t        t        ||z              }dt        j
                  j                   dt        j
                  j                   d}t        t        ||z        d	d|       |dz  }	|	j                  t        d      j                  ||||||      d       t        t        |	            }
t        j                         5  t        t        |      ddt        d	|
g            }t        j                   j#                  |d      }t%        |dg       ddd       t'        t)        t        t+        j,                  t        j                   j#                  d                        }|dgk(  sJ y# 1 sw Y   \xY w)z#Check `python_requires` is honored.rN  rO  rP  r   1PIP_VERBOSEzdep-1.0.tar.gzz>=2.7dep1.0zdep-2.0.tar.gzz!=.z.*z2.0z
index.htmla  
            <!DOCTYPE html>
            <html><head><title>Links for dep</title></head>
            <body>
                <h1>Links for dep</h1>
                <a href="{dep_1_0_url}"data-requires-python="{dep_1_0_python_requires}">{dep_1_0_sdist}</a><br/>
                <a href="{dep_2_0_url}"data-requires-python="{dep_2_0_python_requires}">{dep_2_0_sdist}</a><br/>
            </body>
            </html>
            )dep_1_0_urldep_1_0_sdistdep_1_0_python_requiresdep_2_0_urldep_2_0_sdistdep_2_0_python_requiresr   r  r  )ra  r_  r  rz   r  Nz.eggszdep 1.0)r   r   r   make_python_requires_sdistr   version_infomajorminorrG  r   formatr   rl  rm  r   rV   r   rW   r   listmapr   find_distributions)r&   r   r   r  r  r  r  r  r  index	index_urlrk  rs  eggss                 r   (test_setup_requires_with_python_requiresz:TestSetupRequires.test_setup_requires_with_python_requiresR  s   =#.=#.>3/=#.(!#f}&<"=>")"&'7N	
 )!#f}&<"=>!!''(#*:*:*@*@)AD 	  	#&'7N	
 % f'+(?'+(?   -	
0  E
+	..0 	44F T	H GGLL:>Mmk]3	4 ]55bggll8W6UVW
 	{"""	4 	4s   AG44G=!with_dependency_links_in_setup_py)FTc                    |j                  dd       |j                  dd       t        j                         5  t        j                         5 }t	        t
        j                  j                  |d      dd       t
        j                  j                  |d      }t
        j                  j                  |d      }t
        j                  j                  |d	      }t        j                  |       t        |d
d      5 }|r"t
        j                  j                  |d      g}ng }|j                  t        d      j                  |             d d d        t        |d
d      5 }|j                  t        d      j                  t
        j                  j                  |d      |             d d d        t        |dg       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   3xY w# 1 sw Y   *xY w# 1 sw Y   y xY w)NrN  rO  rP  zpython-xlib-42.tar.gzr  r  rk  rz   rF  r}   r   r   linksz
                        from setuptools import installer, setup
                        setup(setup_requires='python-xlib==42',
                        dependency_links={dependency_links!r})
                        r^  z
                        [easy_install]
                        index_url = {index_url}
                        find_links = {find_links}
                        r  )r  rU   r  )r   r   rl  r  r  rV   r   rW   r   r   r   r   r  r   )	r&   r   r  rr  rk  rs  r  r  r_  s	            r   0test_setup_requires_with_find_links_in_setup_cfgzBTestSetupRequires.test_setup_requires_with_find_links_in_setup_cfg  s    	=#.=#...0 $	8!!# #8x"GGLL+BC]TX 77<<*= "Xz B!#h!D"-w? 28,.GGLL7,K+L(+-(HH !&2B&C .#@ BHH !&&(ggll8W&E'/ !  -+7G#8$	8 $	8  -#8 #8$	8 $	8sV   G8B/G,=AGG,$A
G .G,G8GG, G)%G,,G5	1G88Hc                    t        j                         5  t        j                         5 }t        t        j
                  j                  |d      dd       t        j
                  j                  |d      }t	        j                  |       t        j                  t        d      dd|       t        t        j
                  j                  |d	      d
g       t        j                  |       t        j
                  j                  |d      }t        j
                  j                  |d	      }t	        j                  |       t        |dd      5 }|j                  t        d             ddd       |j                  dt!        |             |j                  dd       |j                  dd       |j                  dd       t        |dg       ddd       ddd       y# 1 sw Y   xxY w# 1 sw Y   xY w# 1 sw Y   yxY w)z
        Use case: installing a package with a build dependency on
        an already installed `dep[extra]`, which in turn depends
        on `extra_dep` (whose is not already installed).
        extra_dep-1.0.tar.gz	extra_depr  r  a  
                          import setuptools
                          setuptools.setup(
                              name='dep', version='2.0',
                              extras_require={'extra': ['extra_dep']},
                          )
                         r|   r  r  rz   	dist_infork  r}   r   r   
                        from setuptools import installer, setup
                        setup(setup_requires='dep[extra]')
                        NPIP_FIND_LINKSr   r  rN  rO  rP  r  )r   rl  r  r  rV   r   rW   r   r  r   r   r
   	add_entryr   r   r   r   r&   r   rr  dep_pkgrk  rs  r  s          r   4test_setup_requires_with_transitive_extra_dependencyzFTestSetupRequires.test_setup_requires_with_transitive_extra_dependency  s    ..0 -	8!!# ,8x"GGLL+ABKQV '',,x7!

$(% &( #  "'',,w
;k]K%%g.77<<*= "Xz B"-w? 2HH ""#3S]C"">37""=#6""=#6-+7Y,8-	8 -	8> =,8 ,8-	8 -	8s<   G;D'G/G#,A&G/G;#G,(G//G8	4G;;Hc           	      <   t        j                         5  t        j                         5 }t        t        j
                  j                  |d      dt        d      fddg       t        j
                  j                  |d      }t	        j                  |       t        j                  t        d      dt        d	      d
|       t        t        j
                  j                  |d      dg       t        j                  |       t        j
                  j                  |d      }t        j
                  j                  |d      }t	        j                  |       t        |dd      5 }|j                  t        d             ddd       |j                  dt!        |             |j                  dd       |j                  dd       |j                  dd       t        |dg       ddd       ddd       y# 1 sw Y   xxY w# 1 sw Y   xY w# 1 sw Y   yxY w)zk
        Use case: ensure build requirements' extras
        are properly installed and activated.
        r  rz   a$  
                          import setuptools
                          setuptools.setup(
                              name='extra_dep',
                              version='1.0',
                              py_modules=['extra_dep'],
                          )
                          r[  )zextra_dep.pyr|   epdepa(  
                          import setuptools
                          setuptools.setup(
                              name='dep', version='2.0',
                              py_modules=['epcmd'],
                              extras_require={'extra': ['extra_dep']},
                              entry_points='''
                                           [distutils.commands]
                                           epcmd = epcmd:epcmd [extra]
                                           ''',
                          )
                         r|   a  
                                     from distutils.command.build_py import build_py

                                     import extra_dep

                                     class epcmd(build_py):
                                         pass
                                     )rz   rF  zepcmd.pyr  r  rk  r}   r   r   r  Nr  r   r  rN  rO  rP  epcmd)r   rl  r  r   rV   r   rW   r   r   r  r   r
   r  r   r   r   r   r  s          r   .test_setup_requires_with_distutils_command_depz@TestSetupRequires.test_setup_requires_with_distutils_command_dep  s   
 ..0 M	4!!# L4xGGLL+AB ' !	 *,* '',,x9!

$(% &($()	%!6 #9> "'',,w
;k]K%%g.77<<*= "Xz B"-w? 2HH ""#3S]C"">37""=#6""=#6-'3YL4M	4 M	4~ }L4 L4M	4 M	4s<   HD>H(G:A&H)H:H?HH	HHN)r-   r.   r/   rY  r  r  r  rS  rb  rd   r   parametrizerv  r  r  r  r  r  r  r  r  r  r%   r   r   rL  rL  5  s    M<   8M [[_m<7 =7< [[_m<A7 =A7F [[_m<(1 =(1T>:-(-4:#x [[@-P)8 Q)8V38jR4r   rL  c                 D    t        | dt        d|d|d      fdg       y)z\
    Create a simple sdist tarball at dist_path, containing just a simple
    setup.py.
    rz   zT             import setuptools
             setuptools.setup(
                 name=z,
                 version=z
             )
         r[  N)r   r   )r]  r  rh  s      r   r  r  D  sK        l #! %
	 	
r   c                    d|v sJ |j                  d      }|d   }t        dt        |      dz         D cg c]  }dj                  |d|        }}t	        d|d|d|d|d		      }d
}d|ft
        j                  j                  |d      |fg}	|dd D ]D  }
t        j                  j                  |
j                  d      dgz    }|	j                  |df       F t        | |	       yc c}w )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  r   r   NzE        import setuptools
        setuptools.setup(
            name=z,
            version=z,
            packages=z",
            namespace_packages=[z]
        )
    z7__import__('pkg_resources').declare_namespace(__name__)rz   z__init__.pyr|   )	splitrangero  rW   r   rV   r   r   r   )r]  r  rh  parts	nspackageidxpackagesr  initr   packager   s               r   r|  r|  ^  s    (??NN3EaI16q#e*q.1IJ#t%JHJ  K  \ "!!* .	
H ED(#bggll9m&Ld%STEAB<77<<'--"4"FHh^$   y% + Ks   C-c           	      Z    t        | dt        d      j                  |||      fdg       y )Nrz   z                import setuptools
                setuptools.setup(
                  name={name!r},
                  version={version!r},
                  python_requires={python_requires!r},
                )
                )r#   rh  python_requiresr[  )r   r   r  )r]  r  rh  r  s       r   r  r    sF     	 &!7O   !	
r   c                    t        |      dkD  sJ t        j                  | d      5 }|D ]  \  }}t        j                  |j                  d            }t        j                  |      }t        |j                               |_        t        t        j                               |_        |j                  ||        	 ddd       y# 1 sw Y   yxY w)z
    Create a simple sdist tarball at dist_path, containing the files
    listed in ``files`` as ``(filename, content)`` tuples.
    r   zw:gzr   )r#   )fileobjN)ro  r}  r   ioBytesIOr   TarInfor  sizeinttimemtimeaddfile)r]  r   rD   r   r   
file_bytes	file_infos          r   r   r     s     u:>>	i	( 8D!&HgGNN7$;<JX6I !4!4!67IN!$))+.IOLLJL7 "'8 8 8s   BC		Crd  rx  r%   c                 (   t        |      }dd| d| gt        j                  j                  |       gd}|r|j	                  |       t        j                  j                  | d      }	t        j                  |	       |rg }
g }|D ]g  }|j                  |      }|dj                         v r|}n|
}t        |t        t        f      rdj                  |      }|j                  | d|        i t        d      j                  d	j                  |
      d	j                  |      
      }nd}t        t        j                  j                  |	d      dd      5 }|j!                  |       ddd       |t        d      }t        t        j                  j                  |	d      dd      5 }|j!                  ||z         ddd       t        j                  j                  | | d| d      } ||||       |	S # 1 sw Y   xY w# 1 sw Y   GxY w)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'.
    rk  re  z==)r#   rh  ra  r_  zname version;z: zg
            [metadata]
            {metadata}
            [options]
            {options}
            
)optionsmetadatar|   rF  r}   r   r   NzI            import setuptools
            setuptools.setup(**%r)
        rz   -z.tar.gz)r   rV   r   abspathupdaterW   r   popr  
isinstancetupler  r   r   r  r   r   )r   r  rh  r  setup_py_templater  rb  normalized_distnametest_setup_attrsrk  r  r  r#   valuesectiontest_setup_cfg_contentsr   foobar_paths                     r   rm  rm    s   $ %X.12"WI>?WW__T23	 ,ww||D*-HHHX !D$((.E~++--"!%%/NNdV2eW-. " #'#
 &IIg&YYx(  
 	  #%	bggll8[13	I )Q	'()   
 
bggll8Z0#	H 6A	!$4456 '',,t(;'<AgYg%NOKh0O#) )6 6s   G<-H<HHjavaz0Test cannot run under java when executable is shr   c                   ,    e Zd ZdZdZd Zd Zd Zd Zy)TestScriptHeaderu   /Users/José/bin/pythonz$C:\Program Files\Python36\python.exec                     dt        j                  t        j                  j	                  t
        j                               d}t         j                  j                  d      }||k(  sJ y )N#!r  z#!/usr/local/bin/python	r5   nt_quote_argrV   r   normpathr   r4  r;   
get_headerr&   r   r   s      r   test_get_script_headerz'TestScriptHeader.test_get_script_header   sP    (8(8(HIJ"M++,EF!!!r   c                     dt        j                  t        j                  j	                  t
        j                               d}t         j                  j                  d      }||k(  sJ y )Nr   -x
z#!/usr/bin/python -xr  r  s      r   test_get_script_header_argsz,TestScriptHeader.test_get_script_header_args  sP    (8(8(HIJ%P++,BC!!!r   c                     t         j                  j                  d| j                        }d| j                   d}||k(  sJ y )N#!/usr/bin/pythonr4  r  r  )r5   r;   r  non_ascii_exer&   r   r   s      r   $test_get_script_header_non_ascii_exez5TestScriptHeader.test_get_script_header_non_ascii_exe
  sK    ++D,>,> , 
 **+51!!!r   c                     t         j                  j                  dd| j                  z   dz         }d| j                   d}||k(  sJ y )Nr  "r  #!"z"
)r5   r;   r  exe_with_spacesr  s      r   &test_get_script_header_exe_with_spacesz7TestScriptHeader.test_get_script_header_exe_with_spaces  sU    ++C$2F2F,F,L , 
 --.c2!!!r   N)	r-   r.   r/   r  r  r	  r  r  r  r%   r   r   r  r    s"    
 .M=O"
"
""r   r  c                       e Zd Zd Zd Z ej                  dej                        ej                  j                  e
j                        d               Zd ZddZy)	TestCommandSpecc                 \    t        j                  ddg      }|j                         dk(  sJ y)zx
        Show how a custom CommandSpec could be used to specify a #! executable
        which takes parameters.
        z/usr/bin/envpython3z#!/usr/bin/env python3
N)r5   r6   r9   r&   r`   s     r   test_custom_launch_commandz*TestCommandSpec.test_custom_launch_command  s,    
 nnni89}}"<<<<r   c                 z    t        j                  dg      }t         j                  j                  |      }||u sJ y)zG
        from_param should return an instance of a CommandSpec
        pythonN)r5   r6   
from_param)r&   r`   cmd_news      r   .test_from_param_for_CommandSpec_is_passthroughz>TestCommandSpec.test_from_param_for_CommandSpec_is_passthrough"  s4     nnhZ(..++C0g~~r   zsys.executablec                     t         j                  j                  dd        t        j                  j                         }t        |      dk(  sJ |j                         j                  d      sJ y )N__PYVENV_LAUNCHER__r   r  )	rV   r   r  r5   r6   r8   ro  r9   r?   r  s     r   /test_from_environment_with_spaces_in_executablez?TestCommandSpec.test_from_environment_with_spaces_in_executable*  sS     	

,d3nn--/3x1}}}}))%000r   c                     t         j                  j                  d      }t        |      dk(  sJ d|j	                         vsJ y)z
        In order to support `executable = /usr/bin/env my-python`, make sure
        from_param invokes shlex on that input.
        z/usr/bin/env my-pythonr3   r  N)r5   r6   r   ro  r9   r  s     r   "test_from_simple_string_uses_shlexz2TestCommandSpec.test_from_simple_string_uses_shlex2  s=    
 nn''(@A3x1}}#--/)))r   Nc                     t        j                  t              5 }t        j                  j                  t                      ddd       t        j                        dk(  sJ |j                         y# 1 sw Y   3xY w)zc
        from_param should raise its own TypeError when the argument's type is unsupported
        Nz1Argument has an unsupported type <class 'object'>)	rd   re   	TypeErrorr5   r6   r   objectr   r  )r&   exc_infos     r   %test_from_param_raises_expected_errorz5TestCommandSpec.test_from_param_raises_expected_error;  sc     ]]9% 	0NN%%fh/	0 #VV	>>	V	0 	0s   (A44A=)returnN)r-   r.   r/   r  r"  r   r   r  r  r   rV   r   r%  r'  r,  r%   r   r   r  r    sY    = TZZ "2"B"BC	ZZ__RZZ 1 ! D1*r   r  c                       e Zd Zd Zy)TestWindowsScriptWriterc                     t         j                  j                  d      }|j                  d      sJ |j	                  d      sJ |j                  d      }|j                  d      }|j                  d      rJ y )Nr|   r  r  z\")r5   WindowsScriptWriterr  r?   endswithlstriprstrip)r&   hdrs     r   test_headerz#TestWindowsScriptWriter.test_headerG  sm    $$//3~~d###||D!!!jjjj>>%((((r   N)r-   r.   r/   r6  r%   r   r   r/  r/  F  s    )r   r/  c                   @    e Zd ZU eed<   eed<   eed<   eed<   eed<   y)VersionStubr  r  microreleaselevelserialN)r-   r.   r/   r  __annotations__r   r%   r   r   r8  r8  Q  s    JJJKr   r8  c           	         t               }|j                  d      }dg|_        d|_        d|_        t        |       |_        d |_        |j                  d      }t        |       |_        d |_        |j                         5 }t        j                         5  t        j                  d       d}t        dd	d
dd      }|j                  dd       |j                  d|       |j                  d|       |j                  |dt        j                                |j!                          d d d        d d d        t#        t$        d      rdnd}	|j&                  j)                         }
t+        j,                  |	dz   |
      rt+        j,                  |	dz   |
      sJ |j.                  d   dk(  sJ |j.                  d   dk(  sJ |j.                  d   dk(  sJ y # 1 sw Y   xY w# 1 sw Y   xY w)NrR   rP   r   Tr&  ignorez:3.10.1 (main, Dec 21 2021, 09:17:12) [GCC 10.2.1 20210110]   
   r   finalr   zsys.versionzsys.version_infocreate_home_pathpypy_version_infopypyr  z3\.?1z3\.?1\d
py_versionz3.10.1py_version_shortz3.10py_version_nodot310)r   get_command_objrE   optimizer   r   install_userbaseinstall_usersitecontextwarningscatch_warningssimplefilterr8  rr   r   r
  finalize_optionshasattrr   rZ   lowerr@   rA   config_vars)r   
tmpdir_cwdr   rD   r`   install_cmdr   rh  r   r#   rZ   s              r   &test_use_correct_python_version_stringrW  Y  s    >D


~
.CvCHCLCHv;CC&&y1K#&v;K #'K 				 %)@)@)B h'N1b!Wa0-t4mW-($/c-tyy{;  S"566HD//'')K 
yy+.yy
*K888
 ??<(H444??-.&888??-.%7779   s%   G#BG(G#G 	G##G,darwinzDhttps://github.com/pypa/setuptools/pull/4716#issuecomment-2447624418c                 f   |j                  dd       |j                  dt        |dz               |j                  dt        |dz               |j                  dt        |dz               |j                  dd       |j                  d	d       t        t	        j
                               }|j                  d
d
       |dz  }|j                  d
d
       |j                  dt        |             d}|dz  j                  |d       t        |j                  d            g k(  sJ t        |j                  d            g k(  sJ t        dddg       t        |j                  d            g k(  sJ |j                  d      D ch c]  }|j                   }}|dhz
  }|dhk(  sJ yc c}w )zC`setup.py develop` should honor `--user` even under build isolationr   FHOMEz.homeUSERPROFILEAPPDATAzsite.USER_BASENzsite.USER_SITET)parentsr%  z.sys_prefixz
sys.prefixzF__import__('setuptools').setup(name='aproj', version=42, packages=[])
rz   r   r   *developz--userzeasy-install.pthzaproj.egg-link)rr   r   r   r   rs   getusersitepackagesr   rG  r  globr   r#   )r   r   r?  	user_site
sys_prefixsetup_scriptr   	installeds           r   &test_editable_user_and_build_isolationrf    s    /7( vs8g#567}c(W*<&=>y#h&8"9:($/($/T--/0IOOD4O0M)JTD1c*o6 	R  
&&|g&F 
$%+++	s#$*** j9h/0 
$%+++!*!45A5I5/00I)**** 6s   
F.)U__doc__r  r  r=   r   rV   r  r@   rs   r6  r   r}  rX   r  rN  r~   r   typingr   unittestr   rd   jaracor   r   r  r  rR   r5   r   r   r	   r
   
setuptoolsr   setuptools._normalizationr   r   setuptools.distsetuptools.sandboxr   setuptools.testsr   setuptools.tests.serverr   r   r|   r   textwrapr   distutils.errorsrf   r   r   r    r   r1   r   filterwarningsr   r   usefixturesr   r  r  r   r"  rL  r  r|  r  r   rm  r   r   r?   is_shr4  r  r  r/  r8  rW  r>  rf  r%   r   r   <module>rv     s     	   	  	   
            , , U U  0 < ( ( * ;    / /  \2 \2~ 01A
 A
 2A
H   ))X
 X
 * *X
v   ,-- - .-
  D" D"NL4 L4^4!!H08& #JZ LLF#@(@=  " "	":* *Z) )* +8\ LLHQ  9+	9+r   