
    ϶vg~              	       p   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
mZ ddlmZ ddlmZ ddlZddlZddlmZ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$m%Z% dddgddgidej&        '                    dd          gfgdZ(de(z  Z) edej&        '                    dd          gej&        '                    dd          g          Z*e*j+        e*j,        z   Z-ej.        d             Z/d Z0d Z1d Z2d  Z3ej4        5                     e3            d!"          Z6ej4        7                    d#d$"          Z8ej4        7                    e#j9        :                    d%           d&"          Z;d' Z<d( Z= G d) d*          Z>d+ Z? G d, d-          Z@d. ZAd/ ZBdS )0zsdist tests    Ncleandoc)Path)mock)CommandSetuptoolsDeprecationWarning)metadata)manifest_maker)sdist)Distribution)	Extension)fail_on_ascii   )	Filenames)	run_setup
sdist_testz0.0z*.txtdatade.dat)nameversionpackagespackage_data
data_filesz*from setuptools import setup

setup(**%r)
sdist_test.fzf.cf.hr   sourcesdependsc               #   (  K   t           j        t           j        }} t          j                    t          j                    ct           _        t           _        	 d V  | |ct           _        t           _        d S # | |ct           _        t           _        w xY wN)sysstdoutstderrioStringIO)
old_stdout
old_stderrs     X/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/setuptools/tests/test_sdist.pyquietr*   9   sm       Z
J[]]BKMMCJ
8!+Z
CJJJZ
CJ7777s   A6 6Bc                     t          | t                    s3|                     t          j                            d          d          S |                     t          j        d          S )Nascii   //)
isinstancestrreplaceossepencodepaths    r)   posixr7   D   sL    dC   )||BFMM'22D999||BFC(((    c                     t          | t                    rt          j        d|           S 	 |                     d          } t          j        d|           } |                     d          } n# t          $ r Y nw xY w| S )NNFDutf-8)r/   r0   unicodedata	normalizedecoder4   UnicodeErrorr5   s    r)   	decomposer@   L   s    $ 2$UD111{{7##$UD11{{7##   Ks   ?A, ,
A98A9c                 ~    t          | d          5 }|                                cd d d            S # 1 swxY w Y   d S )Nrb)openread)filenamefps     r)   read_all_bytesrG   X   s~    	h		 wwyy                 s   266c                      	 t          j        t          j                  \  } }t	          j        |            t	          j        |           d S # t          $ r Y dS w xY w)N)suffixT)tempfilemkstempr   latin_1r2   closeremove	Exception)descrE   s     r)   latin1_failrQ   ]   sf    !)1BCCCh

	(   tts   A
A 
AAz)System does not support latin-1 filenames)reasonz%os.environ.get('PYTEST_XDIST_WORKER')zpytest-dev/pytest-xdist#843
setuptoolsz/the test is not supported with stdlib distutilsc                 J    t          | d                                           | S )Nwb)rC   rM   r5   s    r)   touchrV   v   s#    tKr8   c                     	 t          j        | |           n,# t          t          f$ r t	          j        d           Y d S w xY w|S )Nzsymlink not supported in OS)r2   symlinkOSErrorNotImplementedErrorpytestskip)srcdsts     r)   symlink_or_skip_testr_   {   s\    

3()   1222tt Js    %A Ac                      e Zd Z ej        d          d             Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd d d d dZeej                            de                                          d                         Zd Zd Zd Zd Zd Zd Zed             Zed             Zed             Zed             Zed             Z eed                         Z!e"d             Z#eed                         Z$d d!d"d#Z%ej                            d$e%                                          d%             Z&d& Z'd' Z(d( Z)ej        *                    d)          d*             Z+d+S ),TestSdistTestT)autousec              #     K   |dz  }|                                  |dz                      t          d           |dz  }|                                  |dz  }|                                  dD ]}t          ||z             t          |dz             t          D ]}t          ||z             |                                5  |V  d d d            d S # 1 swxY w Y   d S )	Nproject_rootsetup.pyr;   encodingr   r   )z__init__.pya.txtb.txtc.rstr   )mkdir
write_textSETUP_PYrV   EXTENSION_SOURCESas_cwd)selftmpdirtest_pkgdata_folderfnames        r)   
source_dirzTestSdistTest.source_dir   sN     .(	*	((G(DDD L(sl @ 	$ 	$E(U"####kG#$$$ ' 	" 	"E&5.!!!!]]__ 	 	LLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   CCCc                 >   |j         j        }t          j                            dd          |v sJ t          j                            dd          |v sJ t          j                            dd          |vsJ t          j                            dd          |v sJ d S )Nr   rh   ri   rj   r   r   )filelistfilesr2   r6   join)rp   cmdmanifests      r)   assert_package_data_in_manifestz-TestSdistTest.assert_package_data_in_manifest   s    <%w||L'22h>>>>w||L'22h>>>>w||L'22(BBBBw||C))X555555r8   c                    i t           dt          gi}t          |          }d|_        t	          |          }|                                 t                      5  |                                 d d d            n# 1 swxY w Y   |S )Next_modulesre   )SETUP_ATTRS	EXTENSIONr   script_namer   ensure_finalizedr*   runrp   setup_attrsdistrz   s       r)   setup_with_extensionz"TestSdistTest.setup_with_extension   s    AAmi[AAK((%DkkWW 	 	GGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 
s   A<<B B c                     t          t                    }d|_        t          |          }|                                 t                      5  |                                 ddd           n# 1 swxY w Y   |                     |           dS )zRegression test for pull request #4: ensures that files listed in
        package_data are included in the manifest even if they're not added to
        version control.
        re   N)r   r   r   r   r   r*   r   r|   )rp   r   rz   s      r)   test_package_data_in_sdistz(TestSdistTest.test_package_data_in_sdist   s     K((%DkkWW 	 	GGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	,,S11111   A..A25A2c                 D   i t           ddi}|d         sJ t          |          }d|_        t          |          }|                                 t                      5  |                                 ddd           n# 1 swxY w Y   |                     |           dS )zU
        Ensure package_data and include_package_data work
        together.
        include_package_dataTr   re   N)r   r   r   r   r   r*   r   r|   r   s       r)   3test_package_data_and_include_package_data_in_sdistzATestSdistTest.test_package_data_and_include_package_data_in_sdist   s    
 DC&<dCC>****K((%DkkWW 	 	GGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	,,S11111   B  BBc                     |                                  }|                     |           |j        j        }t          D ]}||v sJ 	dS )z
        Ensure that the files listed in Extension.sources and Extension.depends
        are automatically included in the manifest.
        N)r   r|   rw   rx   rn   )rp   rz   r{   r6   s       r)   test_extension_sources_in_sdistz-TestSdistTest.test_extension_sources_in_sdist   s`    
 '')),,S111<%% 	$ 	$D8#####	$ 	$r8   c                     t           D ]}t          j        |           |                                 }|                     |           |j        j        }t           D ]}||vsJ 	dS )z
        Similar to test_extension_sources_in_sdist but the referenced files don't exist.
        Missing files should not be included in distribution (with no error raised).
        N)rn   r2   rN   r   r|   rw   rx   )rp   r6   rz   r{   s       r)   test_missing_extension_sourcesz,TestSdistTest.test_missing_extension_sources   s~    
 & 	 	DIdOOOO'')),,S111<%% 	( 	(Dx'''''	( 	(r8   c                    g }t           D ]}t          j                            |          \  }}|dz   |z   }t          j        ||           t          t          j                            |          |           |                    |           |                                 }| 	                    |           |j
        j        }t           D ]}||v sJ 	|D ]}||vsJ 	dS )z
        Similar to test_extension_sources_in_sdist but the referenced files are
        instead symbolic links to project-local files. Referenced file paths
        should be included. Symlink targets themselves should NOT be included.
        z_target.N)rn   r2   r6   splitextrenamer_   basenameappendr   r|   rw   rx   )rp   	symlinkedr6   baseexttargetrz   r{   s           r)    test_symlinked_extension_sourcesz.TestSdistTest.test_symlinked_extension_sources   s    	% 	% 	%D((..ID#J&,FIdF### !1!1&!9!94@@@V$$$$'')),,S111<%% 	$ 	$D8##### 	( 	(Dx'''''	( 	(r8   c                  |    t           j                            t           j                            dd                    S )Nr   r   )r2   r6   abspathry    r8   r)   <lambda>zTestSdistTest.<lambda>  s(    GOOBGLLu==>> r8   c                  F    t           j                            dddd          S )Nr   ..r   r2   r6   ry   r   r8   r)   r   zTestSdistTest.<lambda>  s    GLLt\5AA r8   c                  B    t           j                            dd          S )Nr   zthis_file_does_not_exist.hr   r   r8   r)   r   zTestSdistTest.<lambda>  s    GLL'CDD r8   c                  x    t          t          t          j                            dd                    d          S )Nr   zoutside_of_project_root.hz	symlink.h)r_   rV   r2   r6   ry   r   r8   r)   r   zTestSdistTest.<lambda>  s3     bgll4)DEEFF  r8   )zmust be relativezcan't have `..` segmentszdoesn't existzmust be inside the project rootrR   c                 z  	  | j         |                     	t          dg 	g          }i t          d|gi}t          |          }d|_        t          |          }|                                 t                      5  |                    t          j
                  5  |                                 ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   |                     |           |j        j        }	|vsJ 	fd|j        D             }t!          |          dk    sJ |\  }||v sJ dS )a  
        Due to backwards compatibility reasons, `Extension.depends` should accept
        invalid/weird paths, but then ignore them when building a sdist.

        This test verifies that the source distribution is still built
        successfully with such paths, but that instead of adding these paths to
        the manifest, we emit an informational message, notifying the user that
        the invalid path won't be automatically included.
        r   r   r~   re   Nc                 P    g | ]"\  }}}|d k    r|t           j        k    r|v  |#S )root)loggingINFO).0loggerlevelmessageinvalid_paths       r)   
<listcomp>z@TestSdistTest.test_invalid_extension_depends.<locals>.<listcomp>6  sN     
 
 
(&  W\)) G++ 
 ,++r8   r   )_INVALID_PATHSr   r   r   r   r   r   r*   at_levelr   r   r   r|   rw   rx   record_tupleslen)
rp   rR   caplog	extensionr   r   rz   r{   expected_messager   s
            @r)   test_invalid_extension_dependsz,TestSdistTest.test_invalid_extension_depends  s    3t*6244!N
 
 
	
 BAmi[AAK((%DkkWW 	 	foogl33 	 	GGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	,,S111<%8++++
 
 
 
,2,@
 
 
 #$$)))).	)))))))s6   ? CC 4C C	CC	CCCc                    ddl m} t          j                     G fdd|          }i t          ddi}|d         sJ t          |          }d|_        t          |          }|                                 d	|i|_	        d	|i|j
        _	        |j
                            d	          |k    sJ d
}t                      5  t          j        t          |          5  |                                 ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y                                    |                     |           dS )zq
        Ensure projects defining custom build_py don't break
        when creating sdists (issue #2849)
        r   )build_pyc                   &     e Zd ZdZ fdZ xZS )9TestSdistTest.test_custom_build_py.<locals>.CustomBuildPyzX
            Some projects have custom commands inheriting from `distutils`
            c                 X                  t                                                      S r!   )superget_data_files)rp   	__class__using_custom_command_guards    r)   r   zHTestSdistTest.test_custom_build_py.<locals>.CustomBuildPy.get_data_filesQ  s(    **,,,ww--///r8   )__name__
__module____qualname____doc__r   __classcell__)r   r   s   @r)   CustomBuildPyr   L  sH         0 0 0 0 0 0 0 0 0 0r8   r   r   Tr   re   r   zsetuptools instead of distutils)matchN)distutils.command.build_pyr   r   Mockr   r   r   r   r   cmdclassdistributionget_command_classr*   r[   warnsr   r   assert_calledr|   )rp   OrigBuildPyr   r   r   rz   msgr   s          @r)   test_custom_build_pyz"TestSdistTest.test_custom_build_pyC  s   
 	GFFFFF%)Y[["	0 	0 	0 	0 	0 	0 	0K 	0 	0 	0 DC&<dCC>****K((%Dkk #M2%/$?!11*==NNNN/WW 	 	fl#?sKKK 	 	GGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	#00222,,S11111s6   DC?3D?D	DD	DDDc                    t          t                    }d|_        t          |          }|                                 t                      5  |                                 d d d            n# 1 swxY w Y   |j        j        }d|v sJ d S Nfoo.pyre   )	r   r   r   r   r   r*   r   rw   rx   rp   r   rz   r{   s       r)   test_setup_py_existsz"TestSdistTest.test_setup_py_existsi  s    K((#DkkWW 	 	GGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 <%X%%%%%%r   c                    t          t                    }d|_        t          |          }|                                 t
          j                            d          rt          j        d           t                      5  |
                                 d d d            n# 1 swxY w Y   |j        j        }d|vsJ d S r   )r   r   r   r   r   r2   r6   existsrN   r*   r   rw   rx   r   s       r)   test_setup_py_missingz#TestSdistTest.test_setup_py_missingu  s    K((#Dkk7>>*%% 	"Ij!!!WW 	 	GGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 <%))))))s    B!!B%(B%c                    t          ddd          5 }|                    d           d d d            n# 1 swxY w Y   t          t                    }d|_        t          |          }|                                 t                      5  |                                 d d d            n# 1 swxY w Y   |j	        j
        }d|vsJ d S )NMANIFEST.inwr;   rf   zexclude setup.pyr   re   )rC   writer   r   r   r   r   r*   r   rw   rx   )rp   manifest_filer   rz   r{   s        r)   test_setup_py_excludedz$TestSdistTest.test_setup_py_excluded  sA   -w777 	4= 2333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 K((#DkkWW 	 	GGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 <%))))))s   599B--B14B1c                    t          |dz             t          |dz             t          t                    }d|_        t	          |          }|                                 t                      5  |                                 ddd           n# 1 swxY w Y   t          d |j	        j
                  }d|vs
J |            d|vs
J |            d|vs
J |            dS )z
        Make sure default files (README.*, etc.) are added in a case-sensitive
        way to avoid problems with packages built on Windows.
        z
readme.rstz	SETUP.cfgzsetup.PYNc                 *    |                                  S r!   )lower)xs    r)   r   z>TestSdistTest.test_defaults_case_sensitivity.<locals>.<lambda>  s     r8   re   z	setup.cfg)rV   r   r   r   r   r   r*   r   maprw   rx   rp   ru   r   rz   r{   s        r)   test_defaults_case_sensitivityz,TestSdistTest.test_defaults_case_sensitivity  s5    	j<'(((j;&'''K(( &DkkWW 	 	GGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 **CL,>??8+++X+++)))8)))(***H*****s   1BBBc                 V   dddddddd}dddd}i ||                                 D ]T\  }}t          ||          j                            dd           t          ||                              |d           U|                                 }|                     |           d	 |j        j        D             }|D ]3}t          j
                            |          sJ ||vsJ ||f            4|D ]3}t          j
                            |          sJ ||v sJ ||f            4d S )
NzJglobal-include LICEN[CS]E* COPYING* NOTICE* AUTHORS*
global-include *.txt
 )r   zBtest/.venv/lib/python3.9/site-packages/bar-2.dist-info/AUTHORS.rstzDsrc/.nox/py/lib/python3.12/site-packages/bar-2.dist-info/COPYING.txtzEdoc/.tox/default/lib/python3.11/site-packages/foo-4.dist-info/LICENSEz.venv-requirements.txtz.tox-coveragerc.txtz.noxy/coveragerc.txt)zA.tox/release/lib/python3.11/site-packages/foo-4.dist-info/LICENSEz@.nox/py/lib/python3.12/site-packages/bar-2.dist-info/COPYING.txtz=.venv/lib/python3.9/site-packages/bar-2.dist-info/AUTHORS.rstT)parentsexist_okr;   rf   c                 N    h | ]"}|                     t          j        d           #S )r.   )r1   r2   r3   )r   fs     r)   	<setcomp>zDTestSdistTest.test_exclude_dev_only_cache_folders.<locals>.<setcomp>  s(    GGGqAIIbfc**GGGr8   )itemsr   parentrk   rl   r   r|   rw   rx   r2   r6   r   )	rp   ru   includedexcludedfilecontentrz   r{   r6   s	            r)   #test_exclude_dev_only_cache_foldersz1TestSdistTest.test_exclude_dev_only_cache_folders  s   )
 SUTVUW&(#%$&
 
( RTPRMO
 
 65H5;;== 	I 	IMD'T"")//t/LLLT""--g-HHHH'')),,S111GGCL4FGGG 	: 	:D7>>$'''''x'''$)9'''' 	6 	6D7>>$'''''8###dH%5####	6 	6r8   c                 r   t          t                    }d|_        t          |          }t          j                            dd          |_        t	          j        d           t          j                            dd          }t          |           t                      5  |                                 |j                            |           |                                 d d d            n# 1 swxY w Y   t          |j                  }|                    d          }t#          |          |v sJ d S )Nre   sdist_test.egg-infoSOURCES.txtr   u   smörbröd.pyUTF-8)r   r   r   r
   r2   r6   ry   r{   rk   rV   r*   r   rw   r   write_manifestrG   r>   r7   )rp   r   mmrE   contents
u_contentss         r)   +test_manifest_is_written_with_utf8_encodingz9TestSdistTest.test_manifest_is_written_with_utf8_encoding  sL    K((%D!!gll#8-HH
&''' 7<<o>> 	h WW 	  	 FFHHHKx(((	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 
 ""+.. __W--
 X*,,,,,,s   !AC00C47C4c                    t          t                    }d|_        t          |          }t          j                            dd          |_        t	          j        d           t          j                            dt          j
                  }t          |           t                      5  |                                 |                    d          }|j        j                            |           |                                 d d d            n# 1 swxY w Y   t'          |j                  }|                    d           t)          |          |v sJ ||j        j        v sJ d S )Nre   r   r   
   sdist_testr;   r   )r   r   r   r
   r2   r6   ry   r{   rk   r   utf_8rV   r*   r   r>   rw   rx   r   r   rG   r7   rp   r   r   rE   
u_filenamer   s         r)   )test_write_manifest_allows_utf8_filenamesz7TestSdistTest.test_write_manifest_allows_utf8_filenames  sy    K((%D!!gll#8-HH
&'''7<<y?? 	h WW 	  	 FFHHH!11JK$$Z000	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  ""+.. 	    X(**** R[.......s   +ADDDc                    t          t                    }d|_        t          |          }t          j                            dd          |_        t	          j        d           t          j                            dt          j
                  }t                      5  |                                 |                    dd          }|j                            |           |                                 ddd           n# 1 swxY w Y   t#          |j                  }|                    d           t%          |          |vsJ ||j        j        vsJ dS )	a  
        Files that cannot be encoded to UTF-8 (specifically, those that
        weren't originally successfully decoded and have surrogate
        escapes) should be omitted from the manifest.
        See https://bitbucket.org/tarek/distribute/issue/303 for history.
        re   r   r   r   r;   surrogateescapeNr   )r   r   r   r
   r2   r6   ry   r{   rk   r   rL   r*   r   r>   rw   r   r   rG   r7   rx   r  s         r)   ,test_write_manifest_skips_non_utf8_filenamesz:TestSdistTest.test_write_manifest_skips_non_utf8_filenames  so    K((%D!!gll#8-HH
&''' 7<<y/@AA WW 	  	 FFHHH!2CDDJKz***	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  ""+.. 	    Xh.... !2222222s   ADDDc                 
   t          t                    }d|_        t          |          }|                                 t                      5  |                                 d d d            n# 1 swxY w Y   t          j        	                    dt          j                  }t          j        	                    dd          |_        t          |j        d          }|                    d|z              |                                 t!          |           g |j        _        t                      5  |                                 d d d            n# 1 swxY w Y   |                    d          }||j        j        v sJ d S )Nre   r   r   r   ab   
r;   )r   r   r   r   r   r*   r   r2   r6   ry   r   r  r{   rC   r   rM   rV   rw   rx   read_manifestr>   rp   r   rz   rE   r{   s        r)   (test_manifest_is_read_with_utf8_encodingz6TestSdistTest.test_manifest_is_read_with_utf8_encoding8  s    K((%Dkk WW 	 	GGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 7<<y??w||$9=IId++ux'((( 	h  WW 	  	 	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  ??7++3<-------$   A..A25A22EEEc                 
   t          t                    }d|_        t          |          }|                                 t                      5  |                                 d d d            n# 1 swxY w Y   t          j        	                    dt          j                  }t          j        	                    dd          |_        t          |j        d          }|                    d|z              |                                 t!          |           g |j        _        t                      5  |                                 d d d            n# 1 swxY w Y   |                    d          }||j        j        vsJ d S )Nre   r   r   r   r	  r
  latin-1)r   r   r   r   r   r*   r   r2   r6   ry   r   rL   r{   rC   r   rM   rV   rw   rx   r  r>   r  s        r)   +test_read_manifest_skips_non_utf8_filenamesz9TestSdistTest.test_read_manifest_skips_non_utf8_filenamesW  s    K((%Dkk WW 	 	GGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 7<<y/@AAw||$9=IId++ux'((( 	h  WW 	  	 	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  ??9--s|1111111r  c                    t          |                     t                              }d|_        t	          |          }|                                 t          j                            dt          j
                  }t          |           t                      5  |                                 d d d            n# 1 swxY w Y   t          j        dk    rt!          |          }t          j                    }t          j        dk    rT|dk    r'|                    d          }||j        j        v sJ d S |                    d          }||j        j        v sJ d S |                    d          }||j        j        v sJ d S )Nre   r   darwinwin32cp1252mbcsr;   )r   make_stringsr   r   r   r   r2   r6   ry   r   r  rV   r*   r   r"   platformr@   getfilesystemencodingr>   rw   rx   rp   r   rz   rE   fs_encs        r)   %test_sdist_with_utf8_encoded_filenamez3TestSdistTest.test_sdist_with_utf8_encoded_filenamev  s    D--k::;;%Dkk7<<y??hWW 	 	GGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 <8## **H*,,<7""!!#??8443<#5555555#??6223<#5555555w//Hs|1111111s   B::B>B>c                      t          |t                    r  fd|                                D             S t          |t                    r"t          t	           j        |                    S t          |          S )Nc                 B    i | ]\  }}|                     |          S r   )r  )r   keyvalueclss      r)   
<dictcomp>z.TestSdistTest.make_strings.<locals>.<dictcomp>  s-    PPPZS%C))%00PPPr8   )r/   dictr   listr   r  r0   )r!  items   ` r)   r  zTestSdistTest.make_strings  sq    dD!! 	QPPPP4::<<PPPPdD!! 	5C,d334444yyr8   c                    t          |                     t                              }d|_        t	          |          }|                                 t          j                            dt          j
                  }t          |           t          j                            |          sJ t                      5  |                                 d d d            n# 1 swxY w Y   t          j        dk    rBt          j                    }|dk    rd}|                    |          }||j        j        v sJ d S |                    d          }||j        j        vsJ d S )Nre   r   r  r  r  )r   r  r   r   r   r   r2   r6   ry   r   rL   rV   isfiler*   r   r"   r  r  r>   rw   rx   r  s        r)   'test_sdist_with_latin1_encoded_filenamez5TestSdistTest.test_sdist_with_latin1_encoded_filename  sz    D--k::;;%Dkk 7<<y/@AAhw~~h'''''WW 	 	GGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 <7"" .00F"v..Hs|1111111  y11H3<#5555555s   :CC"Cz
            [metadata]
            name = testing
            version = file: src/VERSION.txt
            license_files = DOWHATYOUWANT
            long_description = file: README.rst, USAGE.rst
            a  
            [project]
            name = "testing"
            readme = "USAGE.rst"
            license = {file = "DOWHATYOUWANT"}
            dynamic = ["version"]
            [tool.setuptools.dynamic]
            version = {file = ["src/VERSION.txt"]}
            a	  
            [project]
            name = "testing"
            readme = "USAGE.rst"
            license = {file = "DOWHATYOUWANT"}
            dynamic = ["version"]
            [tool.setuptools.dynamic]
            version = {file = "src/VERSION.txt"}
            )z(setup.cfg - long_description and versionz@pyproject.toml - static readme/license files and dynamic versionz3pyproject.toml - directive with str instead of listconfigc                 R   |                     d          \  }}}| j        |         }|dz                                   |dz                      dd           |dz                      dd           |d	z                      dd           |d
z                      dd           ||z                      |d           t	          dg i          }d|_        |                                 t          |          }|                                 t                      5  |
                                 d d d            n# 1 swxY w Y   d|j        j        v sd|j        j        v sJ d	|j        j        v sJ d
|j        j        v sJ d|j        j        vsJ d|j        j        vsJ d S )Nz - r]   zsrc/VERSION.txtz0.42r;   rf   z
README.rstzhello world!z	USAGE.rstDOWHATYOUWANTr   re   zsrc\VERSION.txtr.   \)	partition_EXAMPLE_DIRECTIVESrk   rl   r   r   parse_config_filesr   r   r*   r   rw   rx   )rp   ru   r)  config_file_config_textr   rz   s           r)   .test_add_files_referenced_by_config_directivesz<TestSdistTest.test_add_files_referenced_by_config_directives  s   ",,U33Q.v6	e	""$$$	'	'33FW3MMM	l	"..~.PPP	k	!--nw-OOO	o	%11.71SSS	k	!--kG-LLLZ,--%!!!DkkWW 	 	GGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 !333!S\%77777cl00000#,"44444#,,,,,,3<-------s   D>>EEc                 >   t          |dz             t          t                    }d|_        t	          |          }|                                 t                      5  |                                 ddd           n# 1 swxY w Y   |j        j	        }d|v sJ dS )zW
        Check if pyproject.toml is included in source distribution if present
        pyproject.tomlre   N)
rV   r   r   r   r   r   r*   r   rw   rx   r   s        r)   test_pyproject_toml_in_sdistz*TestSdistTest.test_pyproject_toml_in_sdist  s     	j++,,,K((%DkkWW 	 	GGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	<%8++++++r   c                    t          |dz             t          ddd          5 }t          d|           ddd           n# 1 swxY w Y   t          t                    }d	|_        t          |          }|                                 t                      5  |	                                 ddd           n# 1 swxY w Y   |j
        j        }d|vsJ dS )
zH
        Check that pyproject.toml can excluded even if present
        r5  r   r   r;   rf   zexclude pyproject.toml)r   Nre   )rV   rC   printr   r   r   r   r   r*   r   rw   rx   )rp   ru   mtsr   rz   r{   s         r)   test_pyproject_toml_excludedz*TestSdistTest.test_pyproject_toml_excluded  sR    	j++,,,-w777 	63*5555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6K((%DkkWW 	 	GGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	<%x//////s#   AA
AB;;B?B?c                    t          |dz             t          i t          ddi          }t          |          }|                                 t                      5  |                                 d d d            n# 1 swxY w Y   |j        j        }d|vsJ t          i t          ddi          }|	                    d          }g |j
        d|_
         G d dt                    }|j                            |           t          |          }d	|_        |                                 t                      5  |                                 d d d            n# 1 swxY w Y   |j        j        }d|v sJ d S )
N.myfile~r   re   build)build_customNc                   &    e Zd Zd Zd Zd Zd ZdS )FTestSdistTest.test_build_subcommand_source_files.<locals>.build_customc                     d S r!   r   rp   s    r)   initialize_optionszYTestSdistTest.test_build_subcommand_source_files.<locals>.build_custom.initialize_options'        r8   c                     d S r!   r   rB  s    r)   finalize_optionszWTestSdistTest.test_build_subcommand_source_files.<locals>.build_custom.finalize_options)  rD  r8   c                     d S r!   r   rB  s    r)   r   zJTestSdistTest.test_build_subcommand_source_files.<locals>.build_custom.run+  rD  r8   c                     dgS )Nr<  r   rB  s    r)   get_source_fileszWTestSdistTest.test_build_subcommand_source_files.<locals>.build_custom.get_source_files-  s
    "|#r8   N)r   r   r   rC  rF  r   rI  r   r8   r)   r>  r@  &  s>        ---+++$ $ $ $ $r8   r>  )r>  T)rV   r   r   r   r   r*   r   rw   rx   get_command_objsub_commandsr   r   updateuse_defaults)rp   ru   r   rz   r{   r=  r>  s          r)   "test_build_subcommand_source_filesz0TestSdistTest.test_build_subcommand_source_files  s   j:%&&& F{FM:FFGGDkkWW 	 	GGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	<%)))) F{FM:FFGG$$W--Ju1J3IJ	$ 	$ 	$ 	$ 	$7 	$ 	$ 	$ 	,777DkkWW 	 	GGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	<%X%%%%%%s$   A??BBE""E&)E&z6os.environ.get('SETUPTOOLS_USE_DISTUTILS') == 'stdlib'c           	      $   t          i t          dddt          j        d          iid          }t	          |          }|                                 t                      5  |                                 ddd           dS # 1 swxY w Y   dS )zS
        Ensure if build_base is a pathlib.Path, the build still succeeds.
        re   r=  
build_base)r   optionsN)r   r   pathlibr   r   r   r*   r   )rp   ru   r   rz   s       r)   test_build_base_pathlibz%TestSdistTest.test_build_base_pathlib:  s    
  

%,W0E0E!FG
 
 
  
 DkkWW 	 	GGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   #BB	B	N),r   r   r   r[   fixtureru   r|   r   r   r   r   r   r   r   skip_under_stdlib_distutilsmarkparametrizekeysr   r   r   r   r   r   r   r   r   r  skip_under_xdistr  r   fail_on_latin1_encoded_filenamesr  r  classmethodr  r(  r.  r3  r6  r:  rN  skipifrS  r   r8   r)   ra   ra      s%       V^D!!!  "!06 6 6  2 2 2 2 2 2$	$ 	$ 	$( ( (( ( (0
 
%
 %

 
,
 ,
 N$ ![X~':':'<'<==)* )* >= ! )*V$2 $2 $2L
& 
& 
&* * ** * *5 5 58&6 &6 &6P - - ]-8 / / ]/@ !3 !3 !3F . . ].< &2 2 &%2< %2 2 &% ]2<   [ &6 6  &%6>5M@# 8 [X':'?'?'A'ABB. . CB.8, , ,0 0 0 #& #& #&J [PQQ  RQ  r8   ra   c                      t           j                            d          \  } |                                 }t	          |d          sJ dS )a  
    When _default_revctrl was removed from the `setuptools.command.sdist`
    module in 10.0, it broke some systems which keep an old install of
    setuptools (Distribute) around. Those old versions require that the
    setuptools package continue to implement that interface, so this
    function provides that interface, stubbed. See #320 for details.

    This interface must be maintained until Ubuntu 12.04 is no longer
    supported (by Setuptools).
    zg
        [setuptools.file_finders]
        svn_cvs = setuptools.command.sdist:_default_revctrl
        __iter__N)r	   EntryPoints
_from_textloadhasattr)epress     r)   test_default_revctrlre  J  sN      ++	 ER ''))C3
#######r8   c                       e Zd ZdZed             Zej                            dd          d             Z	ed             Z
ej                            dd          d             Zd	S )
TestRegressionszp
    Can be removed/changed if the project decides to change how it handles symlinks
    or external files.
    c                 >    dddiit          d|d          ddddS )	Ndirfile.hr   [  
                    from setuptools import Extension, setup
                    setup(
                        name="myproj",
                        version="42",
                        ext_modules=[
                            Extension(
                                "hello", sources=["hello.pyx"],
                                depends=[e]
                            )
                        ],
                    )
                    global-include *.hre   z	hello.pyxr   externalprojectr   )tmp_pathdep_paths     r)   &files_for_symlink_in_extension_dependsz6TestRegressions.files_for_symlink_in_extension_dependse  s[     "~ % +3     3# 	
 
 	
r8   rs  )zmyheaders/dir/file.hzmyheaders/dir/../dir/file.hc                     |                      ||          }t          j                            |t	          |                     t          |dz  |dz             t          ||dz            }dD ]}||v sJ 	d S )Nprefixrp  zproject/myheadersrq  )zmyproj-42/hello.pyxzmyproj-42/myheaders/dir/file.h)rt  jaracor6   r=  r0   r_   	run_sdist)rp   monkeypatchrr  rs  rx   membersexpecteds          r)   !test_symlink_in_extension_dependsz1TestRegressions.test_symlink_in_extension_depends  s    
 ;;HhOO%H666X
2H?R4RSSS KI)=>>
 	' 	'H w&&&&&		' 	'r8   c                     |                     d          \  }}}|r| |z  n|}dddiit          dt          |          d          dddd	S )
Nz$tmp_path$/ri  rj  r   rk  rl  rm  rn  ro  )r-  r   r0   )rr  rs  headr1  tails        r)   ,files_for_external_path_in_extension_dependsz<TestRegressions.files_for_external_path_in_extension_depends  s     **=99a&*48d?? "~ % +.h--     3# 	
 
 	
r8   )z$tmp_path$/external/dir/file.hz../external/dir/file.hc                     |                      ||          }t          j                            |t	          |                     t          ||dz            }|D ]}d|vsJ 	d S )Nrv  rq  rj  )r  rx  r6   r=  r0   ry  )rp   rz  rr  rs  rx   r{  r   s          r)   'test_external_path_in_extension_dependsz7TestRegressions.test_external_path_in_extension_depends  s{    
 AA(HUU%H666KI)=>> 	( 	(D4'''''	( 	(r8   N)r   r   r   r   staticmethodrt  r[   rV  rW  r}  r  r  r   r8   r)   rg  rg  _  s         
 
 
 \
4 [K ' ' ' 
 
 \
: [P ( ( ( ( (r8   rg  c                    |                      |           t                      5  t          ddg           ddd           n# 1 swxY w Y   t          |dz                      d                    }t          j        t          |                    5 }t          |	                                          cddd           S # 1 swxY w Y   dS )z@Given a project directory, run the sdist and return its contentsre   r   Nr   z*.tar.gz)
chdirr*   r   nextglobtarfilerC   r0   setgetnames)rz  rq  archivetars       r)   ry  ry    s3   g	 ) )*wi((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) Gf$**:6677G	c'll	#	# #s3<<>>""# # # # # # # # # # # # # # # # # #s#   AA	A!CCCc                     t          j        |           5 }|                                }d d d            n# 1 swxY w Y   d |D             }t          |          dk    sJ d|             d S )Nc                     g | ]}d |v |	S )z.toxr   )r   r   s     r)   r   z:test_sanity_check_setuptools_own_sdist.<locals>.<listcomp>  s    :::$6T>>>>>r8   r   z
not empty )r  rC   r  r   )setuptools_sdistr  rx   	tox_filess       r)   &test_sanity_check_setuptools_own_sdistr    s    	&	'	' 3               ;:%:::Iy>>Q 8Y 8 8s   6::)Cr   
contextlibr%   r   r2   rR  r"   r  rJ   r<   inspectr   r   unittestr   jaraco.pathrx  r[   rS   r   r   setuptools._importlibr	   setuptools.command.egg_infor
   setuptools.command.sdistr   setuptools.distr   setuptools.extensionr   setuptools.testsr   textr   	distutilsdistutils.corer   r6   ry   r   rm   r   r   r   rn   contextmanagerr*   r7   r@   rG   rQ   rV  xfailrZ  r\  rY  __package__
startswithrU  rV   r_   ra   re  rg  ry  r  r   r8   r)   <module>r     s         				  				  



                              < < < < < < < < * * * * * * 6 6 6 6 6 6 * * * * * * ( ( ( ( ( ( * * * * * * * * * * * *           $ $ $ $ $ $ !G9-RW\\#w7789: 
  	 I	W\\,../W\\,../  	
 %	(99  8 8 8) ) )	 	 	  
   $*;#4#4KMM6 $5 $ $   ;%%+( &    %k00((666< 1     
  C C C C C C C CL$ $ $*\( \( \( \( \( \( \( \(~# # #9 9 9 9 9r8   