K i ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl m Z ddl m Z ddl mZmZddlmZddlZddlmZddlmZddlmZd d lmZd Zeej:d d Zdej>vZ ejBjEejFdk(xre dZ$GddZ%Gdde%Z&Gdde%Z'ededdededdededddedieded d!edd ed d"gZ(Gd#d$Z)Gd%d&e)Z*ejBjWd'd(Z,d)Z-y)*N)futures)Path)AnyCallable)ZipFile)path) Requirement)SetuptoolsDeprecationWarning)DALSz __import__('setuptools').setup()TIMEOUT_BACKEND_TEST180__pypy__win32z_The combination of PyPy + Windows + pytest-xdist + ProcessPoolExecutor is flaky and problematic)reasonceZdZddZy)BuildBackendBaseNc6||_|xsi|_||_y)N)cwdenv backend_name)selfrrrs f/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/setuptools/tests/test_build_meta.py__init__zBuildBackendBase.__init__&s9"().Nsetuptools.build_meta)__name__ __module__ __qualname__rrrrr%s)rrcBeZdZdZfdZdededeffdZdZ xZ S) BuildBackendzPEP 517 Build BackendcZt||i|tjd|_y)Nr ) max_workers)superrrProcessPoolExecutorpool)rargskwargs __class__s rrzBuildBackend.__init__/s' $)&)//A> rnamereturn.cfd}|S).method6s77??488,D'dhh8I8IJFC ii&&ryy188A'tyy''BtBrBII'RR'' V """. 3 GyPSTUOO55{GL LL!VW sA/B??AE"AE"r!)rr,rGs`` r __getattr__zBuildBackend.__getattr__3s   rc|ytjtt5t j |tj dk(rtjntjdddy#1swYyxYw)Nnt) contextlibsuppressProcessLookupErrorrAr2killr,signalSIGTERMSIGKILL)rrFs rr;zBuildBackend._killHsV ;   !3W = P GGC277d? O P P Ps AA33A<) rrr __doc__rstrrrrHr; __classcell__r+s@rr#r#,s-?c(:*Prr#c$eZdZfdZdZxZS)r4cvt||i||jjd\|_}|_y)N:)r&rr partition backend_obj)rr)r*_r+s rrzBuildBackendCaller.__init__Ps8 $)&)373D3D3N3Ns3S0 At/rc>tj|jtjj |j t j|j}|jrt||j}n|}t|||i|S)r/) r2chdirrenvironupdater importlib import_modulerrZgetattr)rr,r)rCmodbackends r__call__zBuildBackendCaller.__call__Usw  $((#%%d&7&78   c4#3#34GG%ww%t2r22r)rrr rrerTrUs@rr4r4OsT 3rr4z __import__('setuptools').setup( name='foo', version='0.0.0', py_modules=['hello'], setup_requires=['six'], ) C def run(): print('hello') setup.pyhello.pyz assert __name__ == '__main__' __import__('setuptools').setup( name='foo', version='0.0.0', py_modules=['hello'], setup_requires=['six'], ) aF variable = True def function(): return variable assert variable __import__('setuptools').setup( name='foo', version='0.0.0', py_modules=['hello'], setup_requires=['six'], ) rha # Some packages construct files on the fly, include them in the package, # and immediately remove them after `setup()` (e.g. pybind11==2.9.1). # Therefore, we cannot use `distutils.core.run_setup(..., stop_after=...)` # to obtain a distribution object first, and then run the distutils # commands later, because these files will be removed in the meantime. with open('world.py', 'w', encoding="utf-8") as f: f.write('x = 42') try: __import__('setuptools').setup( name='foo', version='0.0.0', py_modules=['world'], setup_requires=['six'], ) finally: # Some packages will clean temporary files __import__('os').unlink('world.py') z [metadata] name = foo version = 0.0.0 [options] py_modules=hello setup_requires=six z7 def run(): print('hello') ) setup.cfgri)rjrhric0eZdZdZdZej edZdZ dZ dZ ejjdd d Zejjd d egd ZdZdZdZdZdZdZdZdZdZdZeddeddZdZedddd iid!Zd"Zd#Z d$Z!ejjd%d&d'igd(Z"ejjd)d*d+gfd,d+gfd-d+gfd.d+gfd/d+d0gfd1d+gfd2d+gfd3d4gfd5d+d0gfd6d+d0gfd7d+d0gfg ejjd8d9d:gd;Z#d<Z$d=Z%d>ed?iZ&d@Z'd>edAiZ(dBZ)ejjdCdDdEZ*y )FTestBuildMetaBackendrc.t|jS)Nr)r#r)rs rget_build_backendz&TestBuildMetaBackend.get_build_backends):):;;r)paramsc#Ktj|jt||j 5|j dddy#1swYyxYww)N)prefix)rbuildparamrSas_cwdro)rtmpdirrequests r build_backendz"TestBuildMetaBackend.build_backendsH 7==V5 ]]_ +((* * + + +s;A%A A%A"A%c\|j}dg}t|t|k(sJyNsix)get_requires_for_build_wheelsortedrrxactualexpecteds r!test_get_requires_for_build_wheelz6TestBuildMetaBackend.test_get_requires_for_build_wheel.;;=7f~!1111rc\|j}dg}t|t|k(sJyrz)get_requires_for_build_sdistr}r~s r!test_get_requires_for_build_sdistz6TestBuildMetaBackend.test_get_requires_for_build_sdistrrcBtjjd}tj||j |}tjj ||}tjj |sJtjj drJt|5}t|j}ddddD}|Dcgc]}|jdr|} }t| dk(sJy#1swYDxYwcc}w)Nz pip-wheelworld.pyc3DK|]}|jds|yw)z.pyN)endswith).0fs r z8TestBuildMetaBackend.test_build_wheel..sIqzz%7H!Is  rhr ) r2rr3makedirs build_wheeljoinisfilersetnamelistrlen) rrxdist_dir wheel_name wheel_filezipfilewheel_contentspython_scriptsrmoduless rtest_build_wheelz%TestBuildMetaBackend.test_build_wheels77??;/ H"..x8 WW\\(J7 ww~~j)))77>>*--- Z  5G !1!1!34N 5 J^I,KAJJz4J1KK7|q    5 5 Ls3D"D9DD build_type)wheelsdistcddtdtdd}tj|tjj d|z}|j }t |d|z}||}tdd d 5}|jd ddd||} tjjtjj||sJ|| k7sJttjj|| d j||} | | k(sJtjjtjj|| dkDsJy#1swYxYw)Nz$from setuptools import setup setup()z0.0.1zo [metadata] name = foo version = file: VERSION [build-system] requires = ["setuptools", "wheel"] build-backend = "setuptools.build_meta" )rhVERSIONrjpyproject.tomlz preexisting-build_rwtutf-8encodingz0.0.2wbr) r rrsr2r3rorbopenwriterrclosegetsize) rr tmpdir_cwdfilesrrx build_method first_result version_file second_result third_results r%test_build_with_existing_file_presentz:TestBuildMetaBackend.test_build_with_existing_file_present sV @# & 577??>J#>?..0 }h.CD $H- )TG 4 (   w ' (%X. ww~~bggll8\BCCC},,, RWW\\(M 2D9??A#H- },,,wwrww||HlCDqHHH ( (s E88F setup_scriptNc tdtddddddddd d id }|r||d <|j}|j5tj|d dg}t j 5|D]}t jd|t|jd}|jd}ddddddtjtjj|d5} t| j!} dddt#tjj|d5} t| j%} t'| j)dd} t'| j)dd}t'| j)dd}ddd dhz hdk(sJ hdk(sJdk(sJddddddt't+dzdt't+dzfD]}| vrJ|| f j-j/dsJj-d k(sJy#1swYxYw#1swYxYw#1swYZxYw#1swYxYw)!Naj [build-system] requires = ["setuptools", "wheel"] build-backend = "setuptools.build_meta" [project] name = "foo" license = {text = "MIT"} description = "This is a Python package" dynamic = ["version", "readme"] classifiers = [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers" ] urls = {Homepage = "http://github.com"} dependencies = [ "appdirs", ] [project.optional-dependencies] all = [ "tomli>=1", "pyscaffold>=4,<5", 'importlib; python_version == "2.6"', ] [project.scripts] foo = "foo.cli:main" [tool.setuptools] zip-safe = false package-dir = {"" = "src"} packages = {find = {where = ["src"]}} license-files = ["LICENSE*"] [tool.setuptools.dynamic] version = {attr = "foo.__version__"} readme = {file = "README.rst"} [tool.distutils.sdist] formats = "gztar" zd global-include *.py *.txt global-exclude *.py[cod] zThis is a ``README``z!---- placeholder MIT license ----fooz__version__ = '0.1'z__version__: strz def main(): print('hello world')) __init__.pyz __init__.pyizcli.pyzdata.txtzpy.typed)r MANIFEST.inz README.rstz LICENSE.txtsrcrhzQ'tool.setuptools.license-files' is deprecated in favor of 'project.license-files'z/`project.license` as a TOML table is deprecatedignoretempfoo-0.1.dist-info/METADATAr&foo-0.1.dist-info/licenses/LICENSE.txt"foo-0.1.dist-info/entry_points.txtzfoo-0.1/setup.py>foo-0.1 foo-0.1/srcfoo-0.1/src/foofoo-0.1/PKG-INFOfoo-0.1/setup.cfgfoo-0.1/README.rstfoo-0.1/LICENSE.txtfoo-0.1/MANIFEST.infoo-0.1/pyproject.tomlfoo-0.1/src/foo/cli.pyfoo-0.1/src/foo.egg-infofoo-0.1/src/foo/data.txtfoo-0.1/src/foo/py.typedfoo-0.1/src/foo/__init__.pyfoo-0.1/src/foo/__init__.pyi!foo-0.1/src/foo.egg-info/PKG-INFO$foo-0.1/src/foo.egg-info/SOURCES.txt%foo-0.1/src/foo.egg-info/not-zip-safe%foo-0.1/src/foo.egg-info/requires.txt&foo-0.1/src/foo.egg-info/top_level.txt)foo-0.1/src/foo.egg-info/entry_points.txt-foo-0.1/src/foo.egg-info/dependency_links.txt> foo/cli.py foo/data.txt foo/py.typedfoo/__init__.pyfoo/__init__.pyifoo-0.1.dist-info/WHEELfoo-0.1.dist-info/RECORDfoo-0.1.dist-info/top_level.txtrrrz!Summary: This is a Python packagez License: MITzLicense-File: LICENSE.txtz+Classifier: Intended Audience :: DeveloperszRequires-Dist: appdirszRequires-Dist: ztomli>=1 ; extra == "all"z2importlib; python_version=="2.6" and extra =="all"z$[console_scripts] foo = foo.cli:main)r rorurrswarningscatch_warningsfilterwarningsr build_sdistrtarfilerr2rrgetnamesrrrSreadr stripr)rrvrrrxmsgsmsg sdist_pathrtarsdist_contentsrrmetadatalicenseepointslines r test_build_with_pyproject_configz5TestBuildMetaBackend.test_build_with_pyproject_config?s#)+X  1>#8$6@ B " k> ~  ,E* ..0 ]]_ ? JJu cAD((* ?YC++Hc;WXY*66v> *66v>  ? ?\\"'',,vvzB C 1s 0N 1RWW\\&&*= > W' !1!1!34N7<<(DEwOH EFG',,'KLgVG  W!3 449    0 "   ==== 0  ' 9 $ K0K$L M M +RST U  6D8# 5dH%5 5# 6~~(()?@@@}}"IIIIK ? ? ? ? 1 1 W Ws> .I&8AI=I&I3 A+JI# I&&I03I=J ctdtdtdd}|j}|j5tj||j d}|j d}ddd|dz jsJ|dz jsJ|dz jrJ|d z jrJ|d z jrJ|d z jrJ|d z jrJ|d z jrJtjtjj|d5}t|jdjd}|j}d|vsJ dddt!tjj|d5} t| jdd} | j#}d|vsJ ddd fD]} dD]} | | vrJdD]} | | vrJy#1swYxYw#1swYxYw#1swYFxYw)NaR [build-system] requires = ["setuptools", "wheel"] build-backend = "setuptools.build_meta" [project] name = "foo" description = "This is a Python package" version = "42" dependencies = ["six"] zO def run(): print('hello') z __import__('setuptools').setup( name='bar', version='13', ) )rrirhrztemp/foo-42.tar.gzztemp/foo-42-py3-none-any.whlztemp/bar-13.tar.gzztemp/bar-42.tar.gzztemp/foo-13.tar.gzztemp/bar-13-py3-none-any.whlztemp/bar-42-py3-none-any.whlztemp/foo-13-py3-none-any.whlzfoo-42/PKG-INFOrzbar-13/PKG-INFOzfoo-42.dist-info/METADATAzbar-13.dist-info/METADATA)z Name: fooz Version: 42)z Name: barz Version: 13)r rorurrsrrexistsrrr2rrS extractfilerrrr) rrvrrxrrrpkg_infomembersrrfilers r(test_static_metadata_in_pyproject_configz=TestBuildMetaBackend.test_static_metadata_in_pyproject_configsp#   ) :..0 ]]_ ; JJu &226:J&226:J ; --5577777??AAA1199;;;1199;;;1199;;;;;CCEEE;;CCEEE;;CCEEE \\"'',,vvzB C 4s3??+<=BBDgNHllnG$G3 33 4 RWW\\&&*= > >'7<<(CDgNH&&(G.g= == > h& (D4 $t|#| $4 (4''' ( (1 ; ; 4 4  > >s%8H0AH=2I 0H:=I Ic tjjd}tj||j |}tjj tjj ||sJy)Nz pip-sdist)r2rr3rrrrrrxr sdist_names rtest_build_sdistz%TestBuildMetaBackend.test_build_sdistsU77??;/ H"..x8 ww~~bggll8Z@AAArctjjd}tj||j |}tjj tjj ||dsJy)N pip-dist-infoMETADATA)r2rr3r prepare_metadata_for_build_wheelrr)rrxr dist_infos r%test_prepare_metadata_for_build_wheelz:TestBuildMetaBackend.test_prepare_metadata_for_build_wheelsW77???3 H!BB8L ww~~bggll8Y KLLLrcdD]}tj|d|jd}tjj tjj |dsJy)zy Some users might pass metadata_directory pre-populated with `.tox` or `.venv`. See issue #3523. )z?.tox/python/lib/python3.10/site-packages/attrs-22.1.0.dist-infozD.tox/python/lib/python3.10/site-packages/autocommand-2.2.1.dist-infoz>.nox/python/lib/python3.10/site-packages/build-0.8.0.dist-infoz4.venv/python3.10/site-packages/click-8.1.3.dist-infoz5venv/python3.10/site-packages/distlib-0.3.5.dist-infoz4env/python3.10/site-packages/docutils-0.19.dist-infoT)exist_okrrN)r2rrrrr)rrx pre_existingrs rtest_prepare_metadata_inplacez2TestBuildMetaBackend.test_prepare_metadata_inplacesZ   5L KK t 4 5"BB3G ww~~bggll9jABBBrctjjd}|j|}tjj tjj ||sJy)Ndist)r2rr3rrrrs rtest_build_sdist_explicit_distz3TestBuildMetaBackend.test_build_sdist_explicit_dist0sK77??6*"..x8 ww~~bggll8Z@AAArctjjd}tj||j |}tjj tjj ||sJtjjd}tjj|stjjd}t|dd5}|j}dddt|dd5}|jjdd dddtj|tj||j d}tjj tjj tjjd|sJy#1swYxYw#1swYxYw) N out_sdistrhrjrtrrrzversion='0.0.0'zversion='0.0.1')r2rr3rrrrrrrrreplaceshutilrmtree)rrxsdist_into_directoryr setup_loc file_handlercontents rtest_build_sdist_version_changez4TestBuildMetaBackend.test_build_sdist_version_change7s`!ww{; ()"../CD ww~~bggll+?LMMM GGOOJ/ ww~~i( 4I )TG 4 * "'')G * )TG 4 V   w/@BST U V  *+ ()"..{; ww~~bggll277??;+GTUUU * * V Vs0G"G%G"%G.cvtddtdd}tj||j}|j d}t j tjjd|5}td|jDsJ dddy#1swYyxYw)N __import__('setuptools').setup( name='foo', version='0.0.0', py_modules=['hello'] )rr)rhrirrc3$K|]}d|v yw)rNr!rr,s rrzNTestBuildMetaBackend.test_build_sdist_pyproject_toml_exists..gsKD'4/K r rrsrorrrr2ranyrrrrrx targz_pathrs r&test_build_sdist_pyproject_toml_existsz;TestBuildMetaBackend.test_build_sdist_pyproject_toml_existsPs" $ 5..0 "..v6 \\"'',,vz: ; LsKCLLNKK KK L L L #B//B8cTtjtd|j}|j d}t j tjjd|5}td|jDsJ dddy#1swYyxYw)Nrrc3$K|]}d|v ywrhNr!rs rrzHTestBuildMetaBackend.test_build_sdist_setup_py_exists..qsEdzT)Er) rrsdefnsrorrrr2rrr)rrrxrrs r test_build_sdist_setup_py_existsz5TestBuildMetaBackend.test_build_sdist_setup_py_existsis 58..0 "..v6 \\"'',,vz: ; FsEcllnEE EE F F Fs 1#BB'cvtddtdd}tj||j}|j d}t j tjjd|5}td|jDrJ dddy#1swYyxYw)Nz __import__('setuptools').setup( name='foo', version='0.0.0', py_modules=['hello'] )rz" exclude setup.py )rhrirrc3$K|]}d|v ywr!r!rs rrzSTestBuildMetaBackend.test_build_sdist_setup_py_manifest_excluded..sI$:-Irrrs r+test_build_sdist_setup_py_manifest_excludedz@TestBuildMetaBackend.test_build_sdist_setup_py_manifest_excludedss   " 5..0 "..v6 \\"'',,vz: ; JsI#,,.II III J J Jrctddtdd}tj||j}|j dy)NrrzE [sdist] formats=zip rhrirjr)r rrsror)rrrrxs r3test_build_sdist_builds_targz_even_if_zip_indicatedzHTestBuildMetaBackend.test_build_sdist_builds_targz_even_if_zip_indicatedsR $ 5..0 !!&)rz __import__('setuptools').setup( name='foo', version=__import__('hello').__version__, py_modules=['hello'] )z__version__ = "0.0.0"z9 [sdist] formats=zip r(ctj|j|j}t j t d5|jddddy#1swYyxYw)Nz^No module named 'hello'$matchr)rrs_relative_path_import_filesror<raises ImportErrorrrrrxs r%test_build_sdist_relative_path_importz:TestBuildMetaBackend.test_build_sdist_relative_path_importsT 4334..0 ]];.I J .  % %f - . . .s A&&A/zX [project] name = "proj" version = "42" projrr)rrctt|jd}|sJ|D]7}|jrt j |j dkDr7Jy)z?All files in the directory should be either links or hard linksz**/*rN)listrglob is_symlinkr2statst_nlink)r parent_dirrrs r_assert_link_treez&TestBuildMetaBackend._assert_link_treesYT*%**623 u CD??$ (>(>(B BB Crctj|j|j}t dj rJ|j dt dj rJy)z Sanity check to ensure tests with --mode=strict are different from the ones without --mode. --mode=strict should create a local directory with a package tree. The directory should not get created otherwise. rsrN)rrs_simple_pyproject_examplerorrbuild_editabler0s r%test_editable_without_config_settingsz:TestBuildMetaBackend.test_editable_without_config_settingssa 4112..0 ='')))$$V,=''))))rcTdddgi}tj|j|j}t dj rJt dj |jd||jd|t dj sJy)Nz--build-option build_extz --inplacerszbuild/proj-42-py3-none-any.whl) rrsr<rorrmkdirrrrrconfig_settingsrxs rtest_build_wheel_inplacez-TestBuildMetaBackend.test_build_wheel_inplaces+k;-GH 4112..0 =''))) W 66wP!!'?;45<<>>>rrCz editable-modestrictcRtji|jdiitdj rJ|j }|j d||jd|d|jttdjdy)N_metarsrz__editable__.*) rrsr<rrro#prepare_metadata_for_build_editabler=r:nextr5rBs r"test_editable_with_config_settingsz7TestBuildMetaBackend.test_editable_with_config_settingss Bd44BgrBC='')))..0 99'?S$$V_gF tDM$6$67G$HIJr) setup_literal requirementsz'foo'rz['foo']z'foo\n'z 'foo\n\n'z['foo', 'bar']barz'# Has a comment line\nfoo'z'foo # Has an inline comment'z'foo \\\n >=3.0'zfoo>=3.0z 'foo\nbar'z 'foo\nbar\n'z['foo\n', 'bar\n'] use_wheelTFctdj|tdd}tj||j }|r |j }n |j }t|}|} |t| k(sJy)Na from setuptools import setup setup( name="qux", version="0.0.0", py_modules=["hello"], setup_requires={setup_literal}, ) )rKrfrg)r formatrrsror|rr}) rrKrLrNrrrx get_requiresrrs rtest_setup_requiresz(TestBuildMetaBackend.test_setup_requiress&  f=f1 * 5..0 (EEL(EEL,'6&>)))rctdtdddd}tj||j}|j }|dgk(sJy)Nzd [project] name = "proj" version = "42" z __import__('setuptools').setup( setup_requires=["foo"], py_modules = ["hello", "world"] ) z'hello'z'world')rrhrirr)r rrsror|)rrrrxsetup_requiress r'test_setup_requires_with_auto_discoveryz99"], ) z[ def run(): print('hello') rgr)r rrsror2r3rr)rrrrxrs r test_dont_install_setup_requiresz5TestBuildMetaBackend.test_dont_install_setup_requiresBso   * 5..0 77???3 H 66x@rrhaD import os import sys __import__('setuptools').setup( name='foo', version='0.0.0', ) sys_argv = os.path.abspath(sys.argv[0]) file_path = os.path.abspath('setup.py') assert sys_argv == file_path ctj|j|j}t j t 5|jddddy#1swYyxYwNr)rrs_sys_argv_0_passthroughror<r.AssertionErrorrr0s rtest_sys_argv_passthroughz.TestBuildMetaBackend.test_sys_argv_passthroughusQ 4//0..0 ]]> * .  % %f - . . .s A$$A-a import os assert os.path.isabs(__file__) __import__('setuptools').setup( name='foo', version='0.0.0', py_modules=['hello'], setup_requires=['six'], ) ctj|j|j}|j dyrY)rrs_setup_py_file_abspathrorr0s rtest_setup_py_file_abspathz/TestBuildMetaBackend.test_setup_py_file_abspaths0 4../..0 !!&)r build_hook)rrcddi}tj|tjd}t j t |5t||ddddy#1swYyxYw)NrhrzNo distribution was found.r+r)rrsreescaper<r. ValueErrorrb)rrxr`rrs rtest_build_with_empty_setuppyz2TestBuildMetaBackend.test_build_with_empty_setuppys[R  5ii45 ]]:S 1 7 .GM: .v 6 7 7 7s A&&A/)+rrr rror<fixturer"rxrrrmark parametrizerSETUP_SCRIPT_STUBrrrrrrrrr#r&r)r r-r1r<r:r>rDrJrRrUrWrZr\r^r_rer!rrrlrls*L<V^^5!+"+ 2 2 !( [[\+=>0I?0Id [[^d4E-FGOJHOJb=(~BMC"BV2L2FJ4*2  ,  #$.  +, !C *? [[./81L0MNKOK [[) ug   % ! E7 # u~ . +eW 5 -w 7 :, / UEN + uen - "UEN 3   [[[4-8#*9!"#*J)8AD D  $. D    *  [[\+IJ7K7rrlceZdZdZdZdZy)TestBuildMetaLegacyBackendz setuptools.build_meta:__legacy__ctj|j|j}|j dyrY)rrsr-rorr0s rr1z@TestBuildMetaLegacyBackend.test_build_sdist_relative_path_imports0 4334..0 !!&)rctj|j|j}|j dyrY)rrsrZrorr0s rr\z4TestBuildMetaLegacyBackend.test_sys_argv_passthroughs0 4//0..0 !!&)rN)rrr rr1r\r!rrrkrks5L**rrkz/ignore::setuptools.SetuptoolsDeprecationWarningc|j|d}|dz jt|dtd}|j gk(sJy)zHSetuptools should be resilient to setup.py with ``sys.exit(0)`` (#3973).zr import sys, setuptools setuptools.setup(name='foo', version='0.0.0') sys.exit(0) rhrrrrnN)r] write_textr r#r| monkeypatchtmp_pathsetuppyrds rtest_sys_exit_0_in_setuppyrtsYh G  &&tG}w&G(?@G  / / 1R 77 7rc|j|d}|dz j|dtjtd5t d}|j dddy#1swYyxYw) Nz"import sys; sys.exit('some error')rhrrz some errorr+rrn)r]ror<r. SystemExitr#r|rps rtest_system_exit_in_setuppyrwsgh2G &&w&A z 6/,CD,,.///s A++A4).rKr`r2rbr rOsysrr concurrentrpathlibrtypingrrrrr<jaracorpackaging.requirementsr setuptools.warningsr textwrapr riintgetenvr8builtin_module_namesrBrgskipifplatform pytestmarkrr#r4r"rlrkrrtrwr!rrrs   .<6 ibii.6 7 00 0[[  LLG'   )) P# PF3)3,     &     (     . D  4     (   7  Q| ~t 7t 7n*!5*$MN 8O 8/r