K i+Z 8ddlmZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl m Z ddlmZddlmZddlZddlZddlmZddlZddlmZmZddlmZdd lmZdd lm Z hd Z!hd Z"d dhZ#dZ$e$ddide%jMe"e#zdedddedddideddddedddddddddiided ddd!d"ed#d$d%ed&dd'd(diid)d*Z'e j d+k7red,d-d.d/e'd0<d1Z(d2Z)ejTd34d5Z+ejTd6Z,ejTd7Z-d8Z.d9Z/d:Z0d;Z1d<Z2d=Z3ejhjkd>d?d@dAe$jmdBdCfgdDZ7dEZ8dFZ9dGZ:dHZ;dIZdummy_dist-1.0.dist-info/WHEEL&dummy_dist-1.0.dist-info/top_level.txtdummy_dist-1.0.dist-info/RECORD!dummy_dist-1.0.dist-info/METADATA> COPYING.md NOTICE.rst AUTHORS.txt LICENCE.txtNOTICEAUTHORSCOPYINGLICENCELICENSE LICENSE.txtzLICENSE~zAUTHORS~zQfrom setuptools import setup setup( name='dummy_dist', version='1.0', ) DUMMYFILE)setup.py licenses_diru from setuptools import setup setup( name="simple.dist", version="0.1", description="A testing distribution ☃", extras_require={"voting": ["beaglevote"]}, ) )r simpledistui from setuptools import setup setup( name="complex-dist", version="0.1", description="Another testing distribution ☃", long_description="Another testing distribution ☃", author="Illustrious Author", author_email="illustrious@example.org", url="http://example.org/exemplary", packages=["complexdist"], setup_requires=["setuptools"], install_requires=["quux", "splort"], extras_require={"simple": ["simple.dist"]}, entry_points={ "console_scripts": [ "complex-dist=complexdist:main", "complex-dist2=complexdist:main", ], }, ) __init__.pyzdef main(): return)r complexdistz from setuptools import setup setup( name="headers.dist", version="0.1", description="A distribution with headers", headers=["header.h"], ) )rzheadersdist.pyzheader.hak from setuptools import setup setup( name="testrepo", version="0.1", packages=["mypackage"], description="A test package with commas in file names", include_package_data=True, package_data={"mypackage.data": ["*"]}, ) )r z 1,2,3.txt)r data mypackage)rr#ztestrepo-0.1.0u from setuptools import setup setup( name="unicode.dist", version="0.1", description="A testing distribution ☃", packages=["unicodedist"], zip_safe=True, ) )r åäö_日本語.py)r unicodedistu [metadata] name = utf8-metadata-dist version = 42 author_email = "John X. Ãørçeč" , Γαμα קּ 東 long_description = file: README.rst UTF-8 描述 説明) setup.cfgz README.rstz [metadata] name = licenses-dist version = 1.0 license_files = **/LICENSE vendorr)r'rsrc) dummy-distz simple-distz complex-distz headers-distzcommasinfilenames-distz unicode-distzutf8-metadata-dist licenses-distwin32u from setuptools import Extension, setup setup( name="extension.dist", version="0.1", description="A testing distribution ☃", ext_modules=[ Extension( name="extension", sources=["extension.c"], py_limited_api=True ) ], ) z![bdist_wheel] py_limited_api=cp32z5#define Py_LIMITED_API 0x03020000 #include )rr' extension.czabi3extension-distc tjjdr tddn t ddi}|j t |}|jD]\}}t||||j|S)zHRun command in the same process so that it is easier to collect coveragerinit) stop_after script_namez%%build_meta%%) ospathexistsr r parse_config_filesritemssetattrfinalize_options)kwargsdist_objcmdattrvalues g/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/setuptools/tests/test_bdist_wheel.pybdist_wheel_cmdr?s 77>>* % *0 =*:; <  ! h C||~" eT5!" Jc|j|}tjjt|t ||S)Nprefix)mktempjaracor3buildEXAMPLESstr)tmp_path_factorynamebasedirs r> mkexamplerLs6%%d+G KKhtnS\: Nr@session)scopec|jd}|jd}tD]v}t||}||z }tjj j |5tt|t|jdddxtd|jdDS#1swYxYw)NrFdist bdist_dirdist_dirc32K|]}t|ywN)rH).0fnames r> zwheel_paths..sA#e*Asz*.whl) rDrGrLrEr3DirectoryStackcontextr?rHrunsortedglob)rI build_baserSrJ example_dir build_dirs r> wheel_pathsras!((1J&&v.HT 0$7 % [[ ' ' ) 1 1+ > T c)ns8} M Q Q S T TT A(--*@A AA T Ts *.CC ct|dS)Nr*rLrIs r> dummy_distres %| 44r@ct|dS)Nr+rcrds r> licenses_distrgs % 77r@ctd|D}t|jD]}d|jvrJy)z0Make sure entry point scripts are not generated.c3*K|] }d|vs| yw) complex_distNrVr3s r>rXz"test_no_scripts..G$0FG z.data/scripts/N)nextrinfolistfilename)rar3entrys r>test_no_scriptsrss@ GG GD'')6u~~5556r@ctd|D}t|5}|jd}ddddjvsJy#1swYxYw)Nc3*K|] }d|vs| yw) unicode_distNrkrls r>rXz&test_unicode_record.. rmrnz!unicode_dist-0.1.dist-info/RECORDr$)rorreadencode)rar3zfrecords r>test_unicode_recordr{ sX GG GD >"<=> ! ' ' )V 33 3>>s A  AuMetadata-Version: 2.1 Name: helloworld Version: 42 Author-email: "John X. Ãørçeč" , Γαμα קּ 東 UTF-8 描述 説明 cR|j||dz }|dz }|j|dz jtd|dz j Gddt }|}|j |||d z jd}d |vsJd |vsJd |vsJy) Nzdummy_dist.egg-infodummy_dist.dist-infozPKG-INFOutf-8encodingzdependency_links.txtc&eZdZdZdZedZy);test_preserve_unicode_metadata..simpler_bdist_wheelz1Avoid messing with setuptools/distutils internalscyrUrkselfs r>__init__zDtest_preserve_unicode_metadata..simpler_bdist_wheel.__init__*s r@cgSrUrkrs r> license_pathszItest_preserve_unicode_metadata..simpler_bdist_wheel.license_paths-sIr@N)__name__ __module__ __qualname____doc__rpropertyrrkr@r>simpler_bdist_wheelr's?     r@rMETADATAu"Author-email: "John X. Ãørçeč"uΓαμα קּ 東 r&)chdirmkdir write_text UTF8_PKG_INFOtouchregg2dist read_text) monkeypatchtmp_pathegginfodistinforcmd_objmetadatas r>test_preserve_unicode_metadatarsh..G00H MMO z%%mg%F %%,,.k"#G Wh':%00'0BH /8 ;; ; ( ** * H ,, ,r@c.|j|tt|jt d5}t Dchc]}d|z }}t |jt|zk(sJ dddycc}w#1swYyxYw)NrR$dist/dummy_dist-1.0-py3-none-any.whl"dummy_dist-1.0.dist-info/licenses/) rr?rHr[rDEFAULT_LICENSE_FILESsetnamelist DEFAULT_FILES)rerrwfrW license_filess r>test_licenses_defaultr:sj!c(m,002 7 8CB/  15 8  2;;=!]]%BBBB CC CCs B  B'B B  BcB|jdjdd|j|tt |j t d5}dh}t|jt|zk(sJ dddy#1swYyxYw)Nr'z.[metadata] license_file=licenses_dir/DUMMYFILEr~rrrz8dummy_dist-1.0.dist-info/licenses/licenses_dir/DUMMYFILE joinpathrrr?rHr[rrrr)rerrrrs r>test_licenses_deprecatedrEs $//9G0j!c(m,002 7 8CBST 2;;=!]]%BBBBCCCs ")BB) config_fileconfig)r'z1[metadata] license_files=licenses_dir/* LICENSE)r'z0[metadata] license_files=licenses_dir/*, LICENSEr)z6 license_files=['licenses_dir/DUMMYFILE', 'LICENSE'])c|j|j|d|j|tt |j t d5}dDchc]}d|z }}t|jt|zk(sJ|jdjd}d |vsJd |vsJ dddycc}w#1swYyxYw) Nr~rrr>licenses_dir/DUMMYFILErrrutf8z$License-File: licenses_dir/DUMMYFILELicense-File: LICENSE) rrrr?rHr[rrrrrwdecode) rerrrrrrWrrs r>test_licenses_overriderRs $///Ij!c(m,002 7 83B?  15 8  2;;=!]]%BBBB77>?FFvN5AAA&(22233 33s"C' C3ACCCc|j|tt|jt t j dtd5}tDchc]}|jdd}}ddh}t|j||zk(sJ|jdjd }d |vsJd |vsJ dddycc}w#1swYyxYw) NrrPz'dist/licenses_dist-1.0-py3-none-any.whldummy_ licenses_z,licenses_dist-1.0.dist-info/licenses/LICENSEz7licenses_dist-1.0.dist-info/licenses/src/vendor/LICENSEz$licenses_dist-1.0.dist-info/METADATArz License-File: src/vendor/LICENSEr)rr?rHr[printr2listdirrrreplacerrrwr)rgrrrrJ default_filesrrs r>'test_licenses_preserve_folder_structurernsm$c(m,002 "**V  : ; 3rIVWh <W W : E 2;;=!]]%BBBB77ABII&Q1X===&(222 3 3W 3 3s C"'CAC"C""C+c6|jdjdd|j|tt |j t d5}t|jtk(sJ dddy#1swYyxYw)Nr'z[metadata] license_files= r~rrrr)rerrrs r>test_licenses_disabledr~s $//&0j!c(m,002 7 83B2;;=!]222333s "#BBc|j|tt|djt d5}t |j }d|vsJd|vsJ dddy#1swYyxYw)N2rR build_numberz&dist/dummy_dist-1.0-2-py3-none-any.whlrr)rr?rHr[rrr)rerrr filenamess r>test_build_numberrswj!c(m#>BBD 9 :@b & 0I===2i???@@@s &A11A:c|j|tjtd5t t |dj dddtjjdsJy#1swY+xYw)Nz.*universal is deprecatedmatchT)rR universalz(dist/dummy_dist-1.0-py2.py3-none-any.whl) rpytestwarnsr r?rHr[r2r3r4)rerrs r>test_universal_deprecatedrsij! 2:U VG#h-4@DDFG 77>>D EE E GGs %A<<Ba&#include static PyMethodDef methods[] = { { NULL, NULL, 0, NULL } }; static struct PyModuleDef module_def = { PyModuleDef_HEAD_INIT, "extension", "Dummy extension module", -1, methods }; PyMODINIT_FUNC PyInit_extension(void) { return PyModule_Create(&module_def); } ufrom __future__ import annotations from setuptools import Extension, setup setup( name="extension.dist", version="0.1", description="A testing distribution ☃", ext_modules=[Extension(name="extension", sources=["extension.c"])], ) zEonce:Config variable '.*' is unset.*, Python ABI tag may be incorrectcN|jd}|dz jtd|dz jtd|j d}|j d}|j |t t|t|jy ) z=Test that building a binary wheel with the limited ABI works.extension_distrr~rr-rFrPrQN) rDrEXTENSION_SETUPPYEXTENSION_EXAMPLErrr?rHr[)rrrI source_dirr`rSs r>test_limited_abirs "(()9:J*(():W(M-++,=+P!!'*I  (Hj!c)ns8}EIIKr@ct|jd}tjt|||j |t j |D]O\}}}|D]D}t jt jj||tjFQtjy)Ndummy)rHrshutilcopytreerr2walkchmodr3joinstatS_IREADr?r[)rerrrKroot_dirsfilesrWs r>test_build_from_readonly_treers(##G,-G OOC OW-g!ggg.>eU >E HHRWW\\$. = >>r@)option compress_type)idsc>|j|tt||jt d5}t |j }d|vsJd|vsJ|jD]}|j|k(rJ dddy#1swYyxYw)N)rR compressionrrr) rr?rHr[rrrfilelistr)rerrrrrrzinfos r>test_compressionrs j!c(m@DDF 7 88B & 0I===2i???[[ 8E&&-7 77 8 888sABBBc|D]J}t|5}td|jD}|j|}d|vsJ dddLy#1swYWxYw)Nc3XK|]"}|jjds|$yw)WHEELN)rqendswith)rVfns r>rXz.test_wheelfile_line_endings..s!WB9M9Mg9VRWs ** )rrorrw)rar3r wheelfilewheelfile_contentss r>test_wheelfile_line_endingsrsf3 T] 3bW"++WWI!#!3  22 22 3 33 3 3s 4AA c|jdd|j|tt|dj t d5}|j D]}|jdk\rJ dddy#1swYyxYw)NSOURCE_DATE_EPOCH02arz'dist/dummy_dist-1.0-2a-py3-none-any.whl)irrrr)setenvrr?rHr[rr date_time)rerrrrs r>test_unix_epoch_timestampsrs~*C0j!c(m$?CCE : ;z*test_get_abi_tag_windows..r@get_config_varcy)Nzcp313-win_amd64rkxs r>rz*test_get_abi_tag_windows..rr@cp313gettotalrefcountcy)Nrrkrkr@r>rz*test_get_abi_tag_windows..rr@Fcp313dcy)Nzcp313t-win_amd64rkrs r>rz*test_get_abi_tag_windows..rr@cp313tdcp313t)r7r sysconfigr sysdelattrrs r>test_get_abi_tag_windowsrs0,? #35PQ =G ## #/EB =H $$ $ #35QR =I %% %/0 =H $$ $r@c|jtdd|jtddtdk(sJy)NrcyNpprkrkr@r>rz+test_get_abi_tag_pypy_old..rr@rcy)Nz pypy36-pp73rkrs r>rz+test_get_abi_tag_pypy_old..rr@ pypy36_pp73)r7rr r r s r>test_get_abi_tag_pypy_oldrs90,? #35LM =M )) )r@c|jtdd|jtddtdk(sJy)Nrcy)Nzpypy37-pp73-darwinrkrs r>rz+test_get_abi_tag_pypy_new.. rr@rcyrrkrkr@r>rz+test_get_abi_tag_pypy_new.. rr@ pypy37_pp73r7r rr r s r>test_get_abi_tag_pypy_newr s9 #35ST0,? =M )) )r@c|jtdd|jtddtdk(sJy)Nrcy)Nz"graalpy231-310-native-x86_64-linuxrkrs r>rz*test_get_abi_tag_graalpy..rr@rcy)Ngraalpyrkrkr@r>rz*test_get_abi_tag_graalpy..rr@graalpy231_310_nativerr s r>test_get_abi_tag_graalpyr!s@#%S02CD =3 33 3r@c|jtdd|jtddtdk(sJy)Nrcy)Nzunknown-python-310rkrs r>rz+test_get_abi_tag_fallback..rr@rcy)Nzunknown-pythonrkrkr@r>rz+test_get_abi_tag_fallback..rr@unknown_python_310rr s r>test_get_abi_tag_fallbackr&s; #35ST02JK =0 00 0r@cZ|j|tdjy)z>Ensure building on platforms with a space in the name succeed.z isilon onefs) plat_nameN)rr?r[)rers r>test_platform_with_spacer)s!j!n-113r@c|j|ddddd}|jD]6\}}t|dd5}|jt |ddd8t j d }tjj|sJtt|j}d D]}||vrJd D]} | |vrJy#1swYxYw) z Setuptools allow authors to set PEP 440's local version segments using ``egg_info.tag_build``. This should be reflected not only in the ``.whl`` file name, but also in the ``.dist-info`` and ``.data`` dirs. See pypa/setuptools#3997. z] from setuptools import setup setup(headers=["hello.h"]) z [metadata] name = test version = 1.0 [options.data_files] hello/world = file.txt [egg_info] tag_build = +what tag_date = 0 r)rr'zfile.txtzhello.hwr~rNz#dist/test-1.0+what-py3-none-any.whl)z"test-1.0+what.data/headers/hello.hz,test-1.0+what.data/data/hello/world/file.txtz test-1.0+what.dist-info/METADATAztest-1.0+what.dist-info/WHEEL)ztest.data/headers/hello.hz'test-1.0.data/data/hello/world/file.txtztest.dist-info/METADATAztest-1.0.dist-info/WHEEL) rr6openwriterr?r[r2r3r4rrr) rrrfilecontentfh wheel_pathentriesexpected not_expecteds r>test_data_dir_with_tag_buildr5#sh % E(( g $g . (" HHXg& ' ( ((7J 77>>* %% %'*%..01G# 7""" #+ 7*** +# ( (s CC# )reportedr3)z linux-x86_64 linux_i686)z linux-aarch64 linux_armv7lLinuxz!Only makes sense to test on Linux)reasonc|jtddtj}t |}||_d|_|j\}}}||k(sJy)Ncalcsizecy)Nrkrs r>rz'test_platform_linux32..brr@F)r7struct setuptoolsr rr( root_is_pureget_tag)r6r3rrPr;_actuals r>test_platform_linux32rEZs\ K8  " " $D d CCMC;;=LAq& X  r@crdd}tt5|jtjdddd|j t d|tjtd5ddl }ddd|jtjdddl }y#1swYmxYw#1swY:xYw) NcZ|dk(rtd|tj|g|i|S)NctypeszNo module named )ModuleNotFoundError importlib __import__)rJargsr9s r> _fake_importz$test_no_ctypes.._fake_importls8 8 %(8&?@ @##D:4:6::r@zwheel.macosx_libfilerKzNo module named ctypesrrzsetuptools.command.bdist_wheel)rJrH) rKeyErrordelitemr modulesr7builtinsrraisesrIwheel.macosx_libfilesetuptools.command.bdist_wheel)rrMwheelr@s r>test_no_ctypesrVks; ( ACKK)?@A, = *2J K$#$  %EF)AA $$s!B!/B-!B*-B6c|j||dz }|j|dz jdd|dz jddtt |t |j d d h}t d 5}t|j}ddd|z tk(sJ|Dcgc]}d t |vs|c}rJy#1swYtest_dist_info_providedr\sj!00H NN &&'9G&L !!%'!:c(m3x=IMMO&)H 7 8)B"++-( ) k !SU ** *!,H c$i0GHH HH )) IsC$C0C0$C-c.ddtdtdddd}tjj|t ||j |d z d }t jt| 5tjdddtd 5}t|j}d dh}||ksJ|jdjd}d|vsJd|vsJ dddy#1swYoxYw#1swYyxYw)Nzparent licensez parent noticez [project] name = "test-proj" dynamic = ["version"] # <---- testing dynamic will not break [tool.setuptools.dynamic] version.file = "VERSION" z [metadata] license_files = ../LICENSE.txt ../NOTICE.txt 42)zpyproject.tomlr'VERSION)rz NOTICE.txtpythonrBr`z'Pattern '../.*.txt' cannot contain '..'rz"dist/test_proj-42-py3-none-any.whlz+test_proj-42.dist-info/licenses/LICENSE.txtz*test_proj-42.dist-info/licenses/NOTICE.txtztest_proj-42.dist-info/METADATArzLicense-File: LICENSE.txtzLicense-File: NOTICE.txt)rrEr3rFrHrrrr r?r[rrrrwr)rrrmsgrr[expected_filesrs r>0test_allow_grace_period_parent_directory_licensercs'(%&"%  E0 KKeCM2h)* 3C 2# >  5 6 6""++-( 9 8 ,,,77<=DDVL*h666)X555 6 6   6 6s8C?$AD ?D D)returnNone)T __future__rrQrJos.pathr2platformrrr?r r  contextlibrinspectrzipfiler jaraco.pathrEr packagingrr@rTrr setuptools.distr setuptools.warningsr distutils.corer rrOTHER_IGNORED_FILESSETUPPY_EXAMPLEdictfromkeysrGr?rLfixturerarergrsr{rrrrmark parametrizerrrrrrrrfilterwarningsrrlistsupported_compressionsr6rrrrrrr!r&r)r5skipifsystemrErVr\rcrkr@r>r}s"  C(<$ $$b) ---0CCR H       2&';<5:   "   $&R8 -, '0   (*"E"  ,    y"o  iB J<<7  :O%&H !",  i  B! B558864 -8C CLJ   # #M     3  3 3 3@F& KLL  + + 1 1 34 [ / /0 8  83< %* * 41 4 4+n#%FGHOO )L *,I2*6r@