\bg~ pdZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl m Z ddlm Z ddl mZddlZddlZddlmZmZddlmZddlmZdd lmZdd lmZdd lmZdd lm Z d dl!m"Z"ddl#Z#ddl$m%Z%dddgddgidej&'ddgfgdZ(de(zZ)edej&'ddgej&'ddgZ*e*j+e*j,zZ-ej.dZ/dZ0dZ1dZ2d Z3ej45e3d!"Z6ej47d#d$"Z8ej47e#j9:d% d&"Z;d'Zd+Z?Gd,d-Z@d.ZAd/ZBdS)0z sdist testsNcleandoc)Path)mock)CommandSetuptoolsDeprecationWarning)metadata)manifest_maker)sdist) Distribution) Extension) fail_on_ascii) Filenames) run_setup sdist_testz0.0z*.txtdatade.dat)nameversionpackages package_data data_filesz*from setuptools import setup setup(**%r) sdist_test.fzf.cf.hrsourcesdependsc#(Ktjtj}}tjtjct_t_ dV||ct_t_dS#||ct_t_wxYwN)sysstdoutstderrioStringIO) old_stdout old_stderrs l/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib/python3.11/site-packages/setuptools/tests/test_sdist.pyquietr*9sm Z J[]]BKMMCJ 8 !+Z CJJJZ CJ7777s A66Bct|ts3|tjddS|tjdS)Nascii//) isinstancestrreplaceossepencodepaths r)posixr7DsL dC )||BFMM'22D999||BFC(((ct|trtjd|S |d}tjd|}|d}n#t $rYnwxYw|S)NNFDutf-8)r/r0 unicodedata normalizedecoder4 UnicodeErrorr5s r) decomposer@Ls$2$UD111 {{7##$UD11{{7##      Ks?A,, A98A9c~t|d5}|cdddS#1swxYwYdS)Nrb)openread)filenamefps r)read_all_bytesrGXs~ h  wwyys 266c tjtj\}}t j|t j|dS#t$rYdSwxYw)N)suffixT)tempfilemkstemprlatin_1r2closeremove Exception)descrEs r) latin1_failrQ]sf!)1BCCCh  ( ttsA A AAz)System does not support latin-1 filenames)reasonz%os.environ.get('PYTEST_XDIST_WORKER')zpytest-dev/pytest-xdist#843 setuptoolsz/the test is not supported with stdlib distutilscJt|d|S)Nwb)rCrMr5s r)touchrVvs#t Kr8c tj||n,#ttf$rt jdYdSwxYw|S)Nzsymlink not supported in OS)r2symlinkOSErrorNotImplementedErrorpytestskip)srcdsts r)symlink_or_skip_testr_{s\ 3 ( ) 1222tt Js%AAceZdZejddZdZdZdZdZ dZ d Z d Z d d d ddZ eejde dZdZdZdZdZdZdZedZedZedZedZedZ eedZ!e"dZ#eedZ$d d!d"d#Z%ejd$e%d%Z&d&Z'd'Z(d(Z)ej*d)d*Z+d+S), TestSdistTestT)autousec#K|dz }||dz td|dz }||dz }|dD]}t||z t|dz tD]}t||z |5|VddddS#1swxYwYdS) N project_rootsetup.pyr;encodingrr)z __init__.pya.txtb.txtc.rstr)mkdir write_textSETUP_PYrVEXTENSION_SOURCESas_cwd)selftmpdirtest_pkg data_folderfnames r) source_dirzTestSdistTest.source_dirsN.(  * ((G(DDDL(sl @ $ $E (U" # # # # kG#$$$' " "E &5. ! ! ! ! ]]__  LLL                  sCCCc>|jj}tjdd|vsJtjdd|vsJtjdd|vsJtjdd|vsJdS)Nrrhrirjrr)filelistfilesr2r6join)rpcmdmanifests r)assert_package_data_in_manifestz-TestSdistTest.assert_package_data_in_manifests<%w||L'22h>>>>w||L'22h>>>>w||L'22(BBBBw||C))X555555r8citdtgi}t|}d|_t |}|t 5|dddn #1swxYwY|S)N ext_modulesre) SETUP_ATTRS EXTENSIONr script_namer ensure_finalizedr*runrp setup_attrsdistrzs r)setup_with_extensionz"TestSdistTest.setup_with_extensionsAAmi[AA K((%Dkk  WW   GGIII                sA<<BBc tt}d|_t|}|t 5|dddn #1swxYwY||dS)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. reN)r rrr rr*rr|)rprrzs r)test_package_data_in_sdistz(TestSdistTest.test_package_data_in_sdists K((%Dkk  WW   GGIII                ,,S11111 A..A25A2cDitddi}|dsJt|}d|_t|}|t 5|dddn #1swxYwY||dS)zU Ensure package_data and include_package_data work together. include_package_dataTrreN)rr rr rr*rr|rs r)3test_package_data_and_include_package_data_in_sdistzATestSdistTest.test_package_data_and_include_package_data_in_sdists DC&****K((%Dkk  WW   GGIII                ,,S11111BBBc|}|||jj}tD]}||vsJ dS)z Ensure that the files listed in Extension.sources and Extension.depends are automatically included in the manifest. N)rr|rwrxrn)rprzr{r6s r)test_extension_sources_in_sdistz-TestSdistTest.test_extension_sources_in_sdists` '')) ,,S111<%% $ $D8##### $ $r8ctD]}tj||}|||jj}tD]}||vsJ dS)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)rnr2rNrr|rwrx)rpr6rzr{s r)test_missing_extension_sourcesz,TestSdistTest.test_missing_extension_sourcess~ &  D IdOOOO'')) ,,S111<%% ( (Dx''''' ( (r8cg}tD]}tj|\}}|dz|z}tj||t tj|||||}| ||j j }tD]}||vsJ |D]}||vsJ dS)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) rnr2r6splitextrenamer_basenameappendrr|rwrx)rp symlinkedr6baseexttargetrzr{s r) test_symlinked_extension_sourcesz.TestSdistTest.test_symlinked_extension_sourcess  % % %D((..ID#J&,F IdF # # # !1!1&!9!94 @ @ @   V $ $ $ $'')) ,,S111<%% $ $D8##### ( (Dx''''' ( (r8c|tjtjddS)Nrr)r2r6abspathryr8r)zTestSdistTest.s( GOOBGLLu== > >r8cFtjddddS)Nr..rr2r6ryrr8r)rzTestSdistTest.s GLLt\5 A Ar8cBtjddS)Nrzthis_file_does_not_exist.hrrr8r)rzTestSdistTest. s GLL'C D Dr8cxtttjdddS)Nrzoutside_of_project_root.hz symlink.h)r_rVr2r6ryrr8r)rzTestSdistTest.s3 bgll4)DEEFF  r8)zmust be relativezcan't have `..` segmentsz doesn't existzmust be inside the project rootrRcz |j| tdg g}itd|gi}t|}d|_t |}|t5|tj 5| dddn #1swxYwYdddn #1swxYwY| ||j j} |vsJ fd|jD}t!|dksJ|\}||vsJdS)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. rrr~reNcPg|]"\}}}|dkr|tjkr|v |#S)root)loggingINFO).0loggerlevelmessage invalid_paths r) z@TestSdistTest.test_invalid_extension_depends..6sN   (&  W\)) G++  ,++r8r)_INVALID_PATHSr rr rr rr*at_levelrrrr|rwrx record_tupleslen) rprRcaplog extensionrrrzr{expected_messagers @r)test_invalid_extension_dependsz,TestSdistTest.test_invalid_extension_dependss3t*6244 !N   BAmi[AA K((%Dkk  WW  foogl33   GGIII                               ,,S111<%8++++    ,2,@   #$$)))). )))))))s6? CC4 CC CC CCCcddlm}tjGfdd|}itddi}|dsJt |}d|_t|}|d |i|_ d |i|j _ |j d |ksJd }t5tjt| 5|d d d n #1swxYwYd d d n #1swxYwY||d S) zq Ensure projects defining custom build_py don't break when creating sdists (issue #2849) r)build_pyc&eZdZdZfdZxZS)9TestSdistTest.test_custom_build_py..CustomBuildPyzX Some projects have custom commands inheriting from `distutils` cXtSr!)superget_data_files)rp __class__using_custom_command_guards r)rzHTestSdistTest.test_custom_build_py..CustomBuildPy.get_data_filesQs(**,,,ww--///r8)__name__ __module__ __qualname____doc__r __classcell__)rrs@r) CustomBuildPyrLsH   0 0 0 0 0 0 0 0 0 0r8rrTrrerzsetuptools instead of distutils)matchN)distutils.command.build_pyrrMockrr rr rcmdclass distributionget_command_classr*r[warnsrr assert_calledr|)rp OrigBuildPyrrrrzmsgrs @r)test_custom_build_pyz"TestSdistTest.test_custom_build_pyCs GFFFFF%)Y[[" 0 0 0 0 0 0 0K 0 0 0DC&****K((%Dkk #M2 %/$?!11*==NNNN/ WW  fl#?sKKK   GGIII                               #00222 ,,S11111s6DC?3 D?D DD DDDctt}d|_t|}|t 5|dddn #1swxYwY|jj}d|vsJdSNfoo.pyre) r rrr rr*rrwrxrprrzr{s r)test_setup_py_existsz"TestSdistTest.test_setup_py_existsisK((#Dkk  WW   GGIII               <%X%%%%%%rctt}d|_t|}|t jdrt jdt5| dddn #1swxYwY|j j }d|vsJdSr) r rrr rr2r6existsrNr*rrwrxrs r)test_setup_py_missingz#TestSdistTest.test_setup_py_missingusK((#Dkk  7>>* % % " Ij ! ! ! WW   GGIII               <%))))))sB!!B%(B%ctddd5}|ddddn #1swxYwYtt}d|_t |}|t5|dddn #1swxYwY|j j }d|vsJdS)N MANIFEST.inwr;rfzexclude setup.pyrre) rCwriter rrr rr*rrwrx)rp manifest_filerrzr{s r)test_setup_py_excludedz$TestSdistTest.test_setup_py_excludedsA -w 7 7 7 4=    2 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4K((#Dkk  WW   GGIII               <%))))))s599 B--B14B1ct|dz t|dz tt}d|_t |}|t 5|dddn #1swxYwYtd|j j }d|vs J|d|vs J|d|vs J|dS)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.cfgzsetup.PYNc*|Sr!)lower)xs r)rz>TestSdistTest.test_defaults_case_sensitivity..sr8rez setup.cfg) rVr rrr rr*rmaprwrxrprurrzr{s r)test_defaults_case_sensitivityz,TestSdistTest.test_defaults_case_sensitivitys5 j<'((( j;&'''K((&Dkk  WW   GGIII                **CL,>??8+++X+++)))8)))(***H*****s1BBBcVdddddddd}dddd}i||D]T\}}t||jddt|||dU|}||d |jjD}|D]3}tj |sJ||vs J||f4|D]3}tj |sJ||vs J||f4dS) NzJglobal-include LICEN[CS]E* COPYING* NOTICE* AUTHORS* global-include *.txt )rzBtest/.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)parentsexist_okr;rfcNh|]"}|tjd#S)r.)r1r2r3)rfs r) zDTestSdistTest.test_exclude_dev_only_cache_folders..s(GGGqAIIbfc**GGGr8) itemsrparentrkrlrr|rwrxr2r6r) rpruincludedexcludedfilecontentrzr{r6s r)#test_exclude_dev_only_cache_foldersz1TestSdistTest.test_exclude_dev_only_cache_folderss) SUTVUW&(#%$&  (RTPRMO   65H5;;== I IMD' T " " ) / /t / L L L T " " - -g - H H H H'')) ,,S111GGCL4FGGG : :D7>>$'' ' ''x'''$)9'''' 6 6D7>>$'' ' ''8###dH%5#### 6 6r8crtt}d|_t|}tjdd|_t jdtjdd}t|t5| |j ||dddn #1swxYwYt|j}|d}t#||vsJdS)Nresdist_test.egg-info SOURCES.txtru smörbröd.pyUTF-8)r rrr r2r6ryr{rkrVr*rrwrwrite_manifestrGr>r7)rprmmrEcontents u_contentss r)+test_manifest_is_written_with_utf8_encodingz9TestSdistTest.test_manifest_is_written_with_utf8_encodingsLK((% D ! !gll#8-HH  &'''7<< o>> hWW  FFHHH K  x ( ( (                     ""+..__W-- X*,,,,,,s!AC00C47C4ctt}d|_t|}tjdd|_t jdtjdtj }t|t5| |d}|jj||dddn #1swxYwYt'|j}|dt)||vsJ||jjvsJdS)Nrerr sdist_testr;r)r rrr r2r6ryr{rkrutf_8rVr*rr>rwrxrrrGr7rprrrE u_filenamers r))test_write_manifest_allows_utf8_filenamesz7TestSdistTest.test_write_manifest_allows_utf8_filenamessyK((% D ! !gll#8-HH  &'''7<< y?? hWW  FFHHH!11J K  $ $Z 0 0 0                      ""+..    X(****R[.......s+ADDDctt}d|_t|}tjdd|_t jdtjdtj }t5| | dd}|j||dddn #1swxYwYt#|j}| dt%||vsJ||jjvsJdS) 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. rerrrr;surrogateescapeNr)r rrr r2r6ryr{rkrrLr*rr>rwrrrGr7rxrs r),test_write_manifest_skips_non_utf8_filenamesz:TestSdistTest.test_write_manifest_skips_non_utf8_filenamessoK((% D ! !gll#8-HH  &'''7<< y/@AAWW  FFHHH!2CDDJ K  z * * *                      ""+..    Xh....!2222222sADDDc tt}d|_t|}|t 5|dddn #1swxYwYtj dtj }tj dd|_ t|j d}|d|z|t!|g|j_t 5|dddn #1swxYwY|d}||jjvsJdS)Nrerrrab r;)r rrr rr*rr2r6ryrrr{rCrrMrVrwrx read_manifestr>rprrzrEr{s r)(test_manifest_is_read_with_utf8_encodingz6TestSdistTest.test_manifest_is_read_with_utf8_encoding8sK((%Dkk WW   GGIII               7<< y??w||$9=II  d++ux'((( h   WW                      ??7++3<-------$ A..A25A22EEEc tt}d|_t|}|t 5|dddn #1swxYwYtj dtj }tj dd|_ t|j d}|d|z|t!|g|j_t 5|dddn #1swxYwY|d}||jjvsJdS)Nrerrrr r latin-1)r rrr rr*rr2r6ryrrLr{rCrrMrVrwrxr r>r s r)+test_read_manifest_skips_non_utf8_filenamesz9TestSdistTest.test_read_manifest_skips_non_utf8_filenamesWsK((%Dkk WW   GGIII               7<< y/@AAw||$9=II  d++ux'((( h   WW                      ??9--s|1111111rct|t}d|_t |}|t jdtj }t|t5| dddn #1swxYwYtjdkrt!|}tj}tjdkrT|dkr'|d}||jjvsJdS|d}||jjvsJdS|d}||jjvsJdS)Nrerdarwinwin32cp1252mbcsr;)r make_stringsrrr rr2r6ryrrrVr*rr"platformr@getfilesystemencodingr>rwrxrprrzrEfs_encs r)%test_sdist_with_utf8_encoded_filenamez3TestSdistTest.test_sdist_with_utf8_encoded_filenamevsD--k::;;%Dkk 7<< y?? h WW   GGIII                <8 # # **H*,, <7 " "!!#??8443<#5555555#??6223<#5555555w//Hs|1111111sB::B>B>ct|tr fd|DSt|tr"tt j|St |S)NcBi|]\}}||Sr)r)rkeyvalueclss r) z.TestSdistTest.make_strings..s-PPPZS%C))%00PPPr8)r/dictrlistrrr0)r!items` r)rzTestSdistTest.make_stringssq dD ! ! QPPPP4::<<PPP P dD ! ! 5C,d3344 44yyr8ct|t}d|_t |}|t jdtj }t|t j |sJt5|dddn #1swxYwYtjdkrBtj}|dkrd}||}||jjvsJdS|d}||jjvsJdS)Nrerrrr)r rrrr rr2r6ryrrLrVisfiler*rr"rrr>rwrxrs r)'test_sdist_with_latin1_encoded_filenamez5TestSdistTest.test_sdist_with_latin1_encoded_filenameszD--k::;;%Dkk 7<< y/@AA hw~~h''''' WW   GGIII                <7 " ".00F"v..Hs|1111111 y11H3<#5555555s:CC"Cz [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 listconfigcR|d\}}}|j|}|dz |dz dd|dz dd|d z dd|d z dd||z |dt d gi}d |_|t|}|t5| dddn #1swxYwYd|j j vsd |j j vsJd |j j vsJd |j j vsJd|j j vsJd|j j vsJdS)Nz - r]zsrc/VERSION.txtz0.42r;rfz README.rstz hello world!z USAGE.rst DOWHATYOUWANTrrezsrc\VERSION.txtr.\) partition_EXAMPLE_DIRECTIVESrkrlr rparse_config_filesr rr*rrwrx)rprur) config_file_ config_textrrzs r).test_add_files_referenced_by_config_directivesz>EEc>t|dz tt}d|_t |}|t 5|dddn #1swxYwY|jj }d|vsJdS)zW Check if pyproject.toml is included in source distribution if present pyproject.tomlreN) rVr rrr rr*rrwrxrs r)test_pyproject_toml_in_sdistz*TestSdistTest.test_pyproject_toml_in_sdists j++,,,K((%Dkk  WW   GGIII               <%8++++++rct|dz tddd5}td|dddn #1swxYwYtt}d |_t |}|t5| dddn #1swxYwY|j j }d|vsJdS) zH Check that pyproject.toml can excluded even if present r5rrr;rfzexclude pyproject.toml)rNre) rVrCprintr rrr rr*rrwrx)rprumtsrrzr{s r)test_pyproject_toml_excludedz*TestSdistTest.test_pyproject_toml_excludedsR j++,,, -w 7 7 7 63 * 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6K((%Dkk  WW   GGIII               <%x//////s#AA AB;;B?B?ct|dz titddi}t|}|t 5|dddn #1swxYwY|jj}d|vsJtitddi}| d}g|j d|_ Gddt}|j |t|}d |_|t 5|dddn #1swxYwY|jj}d|vsJdS) N.myfile~rrebuild) build_customNc&eZdZdZdZdZdZdS)FTestSdistTest.test_build_subcommand_source_files..build_customcdSr!rrps r)initialize_optionszYTestSdistTest.test_build_subcommand_source_files..build_custom.initialize_options'r8cdSr!rrBs r)finalize_optionszWTestSdistTest.test_build_subcommand_source_files..build_custom.finalize_options)rDr8cdSr!rrBs r)rzJTestSdistTest.test_build_subcommand_source_files..build_custom.run+rDr8cdgS)Nr<rrBs r)get_source_fileszWTestSdistTest.test_build_subcommand_source_files..build_custom.get_source_files-s "|#r8N)rrrrCrFrrIrr8r)r>r@&s> - - - + + +    $ $ $ $ $r8r>)r>T)rVr rr rr*rrwrxget_command_obj sub_commandsrrupdate use_defaults)rprurrzr{r=r>s r)"test_build_subcommand_source_filesz0TestSdistTest.test_build_subcommand_source_filess j:%&&&F{FM:FFGGDkk  WW   GGIII               <%))))F{FM:FFGG$$W--Ju1J3IJ $ $ $ $ $7 $ $ $ ,777Dkk  WW   GGIII               <%X%%%%%%s$A??BBE""E&)E&z6os.environ.get('SETUPTOOLS_USE_DISTUTILS') == 'stdlib'c $titdddtjdiid}t |}|t 5|ddddS#1swxYwYdS)zS Ensure if build_base is a pathlib.Path, the build still succeeds. rer= build_base)roptionsN)r rpathlibrr rr*r)rprurrzs r)test_build_base_pathlibz%TestSdistTest.test_build_base_pathlib:s   %, W0E0E!FG      Dkk  WW   GGIII                  s#BB  B N),rrrr[fixturerur|rrrrrrrskip_under_stdlib_distutilsmark parametrizekeysrrrrrrrrrrskip_under_xdistrr  fail_on_latin1_encoded_filenamesrr classmethodrr(r.r3r6r:rNskipifrSrr8r)raras%V^D!!!"!0666   222 222$ $ $ $ ( ( ((((0  % %   , , N$! [X~':':'<'<==)*)*>=! )*V$2$2$2L & & & * * * * * *5558&6&6&6P--]-8//]/@!3!3!3F..].<&22&%2<%22&%]2<[&66&%6>5M@#8 [X':'?'?'A'ABB..CB.8 , , ,000 #&#&#&J [PQQ  RQ   r8ractjd\}|}t |dsJdS)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_textloadhasattr)epress r)test_default_revctrlreJsN  + +   ER ''))C 3 # ### ###r8ceZdZdZedZejdddZ edZ ejdddZ d S) TestRegressionszp Can be removed/changed if the project decides to change how it handles symlinks or external files. c>dddiitd|dddddS) Ndirfile.hr[ from setuptools import Extension, setup setup( name="myproj", version="42", ext_modules=[ Extension( "hello", sources=["hello.pyx"], depends=[e] ) ], ) global-include *.hrez hello.pyxrexternalprojectr)tmp_pathdep_paths r)&files_for_symlink_in_extension_dependsz6TestRegressions.files_for_symlink_in_extension_dependses["~% +3    3#    r8rs)zmyheaders/dir/file.hzmyheaders/dir/../dir/file.hc|||}tj|t |t |dz |dz t ||dz }dD]}||vsJ dS)Nprefixrpzproject/myheadersrq)zmyproj-42/hello.pyxzmyproj-42/myheaders/dir/file.h)rtjaracor6r=r0r_ run_sdist)rp monkeypatchrrrsrxmembersexpecteds r)!test_symlink_in_extension_dependsz1TestRegressions.test_symlink_in_extension_dependss ;;HhOO %H 666X 2H?R4RSSSKI)=>>  ' 'Hw&&&&&  ' 'r8c|d\}}}|r||z n|}dddiitdt|ddddd S) Nz $tmp_path$/rirjrrkrlrmrnro)r-rr0)rrrsheadr1tails r),files_for_external_path_in_extension_dependsz> ( (D4''''' ( (r8N) rrrr staticmethodrtr[rVrWr}rrrr8r)rgrg_s   \ 4 [K ' ' '  \ : [P(((((r8rgc||t5tddgdddn #1swxYwYt|dz d}t jt|5}t| cdddS#1swxYwYdS)z@Given a project directory, run the sdist and return its contentsrer Nrz*.tar.gz) chdirr*rnextglobtarfilerCr0setgetnames)rzrqarchivetars r)ryrys3g ))*wi((()))))))))))))))Gf$**:6677G c'll # ##s3<<>>""##################s#AA A!CCCctj|5}|}dddn #1swxYwYd|D}t|dks Jd|dS)Ncg|]}d|v| S)z.toxr)rrs r)rz:test_sanity_check_setuptools_own_sdist..s:::$6T>>>>>r8rz not empty )rrCrr)setuptools_sdistrrx tox_filess r)&test_sanity_check_setuptools_own_sdistrs & ' '3 ;:%:::I y>>Q    8Y 8 8     s 6::)Cr contextlibr%rr2rRr"rrJr<inspectrrunittestr jaraco.pathrxr[rSrrsetuptools._importlibr setuptools.command.egg_infor setuptools.command.sdistr setuptools.distr setuptools.extensionr setuptools.testsrtextr distutilsdistutils.corerr6ryrrmrrrrncontextmanagerr*r7r@rGrQrVxfailrZr\rY __package__ startswithrUrVr_rarergryrrr8r)rs    <<<<<<<<******666666******((((((************$$$$$$ !G9-RW\\#w7789:      I  W\\, . . / W\\, . . /    % (99 888)))    $*;#4#4KMM 6$5$$ ;%%+ (&%k00((666 <1  C C C C C C C C L$$$*\(\(\(\(\(\(\(\(~###99999r8