hyb
2026-01-09 4cb426cb3ae31e772a09d4ade5b2f0242aaeefa0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
Ë
Añúhs'ãóô—ddlmZddlZddlZddlmZddlZddlm    Z    ddl
m Z m Z ddl mZddlmZddlmZd    d
lmZd    d lmZddlmcm Zdd lmZd ej8vZGd„d«ZGd„d«Zd„Z y)é)Ú annotationsN)Úcache_from_source)Úpath)Ú    build_extÚget_abi3_suffix)Ú Distribution)Ú CompileError)Ú    Extensioné)Ú environment)ÚDALS)Úget_config_varÚ__pypy__có0—eZdZd„Zd„Zd„Zd„Zd„Zd„Zy)Ú TestBuildExtcó¼—t«}t|«}d|jd<|jd«}tjj|d«}||k(sJ‚y)z…
        Setuptools needs to give back the same
        result as distutils, even if the fullname
        is not in ext_map.
        Úzfoo/barÚfooN)rrÚext_mapÚget_ext_filenameÚorig)ÚselfÚdistÚcmdÚresÚwanteds     úRH:\Change_password\venv_build\Lib\site-packages\setuptools/tests/test_build_ext.pyÚtest_get_ext_filenamez"TestBuildExt.test_get_ext_filenamesT€ô ‹~ˆÜ˜‹oˆØ!#ˆ ‰ IÑØ×"Ñ" 5Ó)ˆÜ—‘×0Ñ0°°eÓ<ˆØfŠ}Љ}ócó”—tt««tddgd¬«}tt    |g¬««}t |«}|j «d|jvsJ‚|jd«}t«s|jtd««sJ‚y
tjdk(r|jd«sJ‚y
d    |vsJ‚y
) z}
        Filename needs to be loadable by several versions
        of Python 3 if 'is_abi3' is truthy on Extension()
        ú    spam.eggsúeggs.cT©Úpy_limited_api©Ú ext_modulesÚ
EXT_SUFFIXÚwin32zeggs.pydÚabi3N) Úprintrr
rÚdictrÚfinalize_optionsrrÚendswithrÚsysÚplatform)rÚ    extensionrrrs     rÚtest_abi3_filenamezTestBuildExt.test_abi3_filename&s®€ô
    ŒoÓÔ ä˜k¨H¨:ÀdÔKˆ    ÜœD¨i¨[Ô9Ó:ˆÜ˜‹oˆØ ×ÑÔØ˜cŸk™kÑ)Ð)Ð)Ø×"Ñ" ;Ó/ˆäÔ Ø—<‘<¤¨|Ó <Ô=Ð =Ñ=Ü \‰\˜WÒ $Ø—<‘< 
Ô+Ð +Ñ+à˜S‘=Ð  ‘=rcó„—t«}t|«}tddgd¬«x|jd<}d|_t
s|j d«}nd}    dtjd<|j d    «}d
|k(sJ‚|j d«}||k(sJ‚    tjd=y #tjd=wxYw) zd
        SETUPTOOLS_EXT_SUFFIX variable always overrides
        default extension options.
        Úfor_abi3zs.cTr#Fzfor_abi3.test-suffixz .test-suffixÚSETUPTOOLS_EXT_SUFFIXÚnormalznormal.test-suffixN)    rrr
rÚ_links_to_dynamicÚIS_PYPYrÚosÚenviron)rrrÚextÚexpectrs      rÚtest_ext_suffix_overridez%TestBuildExt.test_ext_suffix_override;sƀô
‹~ˆÜ˜‹oˆÜ(1Ø Ø ˆGàô    )
ð    
ˆ ‰ JÑ #ð!&ˆÔåØ×)Ñ)¨*Ó5‰Fð,ˆFð    4Ø2@ŒBJ‰JÐ.Ñ /Ø×&Ñ& xÓ0ˆCØ'¨3Ò.Ð .Ð.Ø×&Ñ& zÓ2ˆCؘS’=Ð  ‘=ä—
‘
Ð2Ñ3ø”—
‘
Ð2Ñ3ús ÁAB,Â,B?cóÀ—ddddiiidddiidœ}tdd    g«}td
d g«}td d g«}tj|«td|||gddidœ«S)NÚmypkgÚsubpkgzext2.crÚext1zmain.c)Úsrcz c-extensionsz
mypkg.ext1zc-extensions/ext1/main.czmypkg.subpkg.ext2zsrc/mypkg/subpkg/ext2.cÚext3zc-extension/ext3.cz%test%rA)Ú script_namer&Ú package_dir)r
rÚbuildr)rÚfilesr@Úext2rBs     rÚdist_with_examplezTestBuildExt.dist_with_example[s‹€à˜h¨°2¨Ð7Ð8Ø# h° ^Ð4ñ
ˆô
˜Ð(BÐ'CÓDˆÜÐ,Ð/HÐ.IÓJˆÜ˜Ð"6Ð!7Ó8ˆä 
‰
5ÔÜØ#Ø  $¨Ð-Ø ˜;ñ
ó ð     rc    óL—|jdd«|jdd«|j«}|jd«}d|_|j
«|j jtjd«}|j«Dcgc]"}|jtjd«‘Œ$}}||›d|›d|›d    gk(sJ‚|j«ik(sJ‚|jd«d
|_|j
«|j«j«D    cic]D\}}    |jtjd«|    jtjd«“ŒF}
}}    |
|›dd |›dd |›d    d ik(sJ‚ycc}wcc}    }w)Nr4ú.mp3ú&setuptools.command.build_ext.use_stubsFrú/ú    /ext3.mp3ú/mypkg/ext1.mp3ú/mypkg/subpkg/ext2.mp3Tú src/ext3.mp3úsrc/mypkg/ext1.mp3úsrc/mypkg/subpkg/ext2.mp3)ÚsetenvÚsetattrrHÚget_command_objÚ editable_modeÚensure_finalizedÚ    build_libÚreplacer8ÚsepÚ get_outputsÚget_output_mappingÚreinitialize_commandÚitems) rÚ
tmpdir_cwdÚ monkeypatchrrrXÚxÚoutputsÚkÚvÚmappings            rÚtest_get_outputszTestBuildExt.test_get_outputsls¿€Ø×ÑÐ2°FÔ;Ø×ÑÐDÀeÔLØ×%Ñ%Ó'ˆð×(Ñ(¨Ó5ˆ    Ø"'ˆ    ÔØ"ˆ    ×"Ñ"Ô$Ø×'Ñ'×/Ñ/´·±¸Ó<ˆ    Ø3H°9×3HÑ3HÓ3JÖK¨a1—9‘9œRŸV™V SÕ)ÐKˆÐKØØˆk˜Ð #؈k˜Ð )؈kÐ/Ð 0ð
ò
ð    
ð
ð
,ˆy×+Ñ+Ó-°Ò3Ð3Ð3ð     ×!Ñ! +Ô.Ø"&ˆ    ÔØ"ˆ    ×"Ñ"Ô$ð5˜    ×4Ñ4Ó6×<Ñ<Ó>÷
ᐐ1ð I‰I”b—f‘f˜cÓ " A§I¡I¬b¯f©f°cÓ$:Ñ :ð
ˆñ
ð؈k˜Ð # ^؈k˜Ð )Ð+?؈kÐ/Ð 0Ð2Mð
ò
ð    
ñ
ùò!Lùó
s Â'FÄ8A    F c ór—|jdd«|jdd«|j«}|jd«}d|_|j
«|j D]}|j|dd«Œ|jjtjd«}|j«j«Dcic]D\}}|jtjd«|jtjd«“ŒF}    }}d„}
|    |
|›d    «|
d
«|›d d |
|›d «|
d«|›dd|
|›d«|
d«|›ddik(sJ‚|›d |    vsJ‚|›d|    vsJ‚|
|›d «} | |    vsJ‚| j|›d«sJ‚| jd«sJ‚ycc}}w)Nr4rJrKTrÚ _needs_stubrLcóT—t|«jtjd«S)zDMake it possible to do comparisons and tests in a OS-independent wayrL)Ú_compiled_file_namerYr8rZ)Úfiles rÚCz9TestBuildExt.test_get_output_mapping_with_stub.<locals>.Cžs€ä& tÓ,×4Ñ4´R·V±V¸SÓAÐ Arz/ext3.pyz src/ext3.pyrMrPz/mypkg/ext1.pyzsrc/mypkg/ext1.pyrNrQz/mypkg/subpkg/ext2.pyzsrc/mypkg/subpkg/ext2.pyrOrRz/mypkg/__pycache__/ext1z.pyc)rSrTrHrUrVrWÚ
extensionsrXrYr8rZr\r^Ú
startswithr-) rr_r`rrr:rXrcrdrerlÚ example_stubs             rÚ!test_get_output_mapping_with_stubz.TestBuildExt.test_get_output_mapping_with_stubŒs€Ø×ÑÐ2°FÔ;Ø×ÑÐDÀdÔKØ×%Ñ%Ó'ˆð×(Ñ(¨Ó5ˆ    Ø"&ˆ    ÔØ"ˆ    ×"Ñ"Ô$Ø×'Ñ'ò    :ˆCØ × Ñ   ]°DÕ 9ð    :ð×'Ñ'×/Ñ/´·±¸Ó<ˆ    ð5˜    ×4Ñ4Ó6×<Ñ<Ó>÷
ᐐ1ð I‰I”b—f‘f˜cÓ " A§I¡I¬b¯f©f°cÓ$:Ñ :ð
ˆñ
ò
    BðÙ  ˜8Ð$Ó %¡q¨Ó'7؈k˜Ð # ^Ù  ˜>Ð*Ó +©QÐ/BÓ-C؈k˜Ð )Ð+?Ù  Ð0Ð1Ó 2±AÐ6PÓ4Q؈kÐ/Ð 0Ð2Mð 
ò
ð    
ð
ð˜NÐ+°7Ñ:Ð:Ð:ؐÐ1Ð2¸'ÑAÐAÐAñ˜I˜; nÐ5Ó6ˆ ؘwÑ&Ð&Ð&Ø×&Ñ&¨)¨Ð4KÐ'LÔMÐMÐMØ×$Ñ$ VÔ,Ð,Ñ,ùó5
sÃA    F3N)    Ú__name__Ú
__module__Ú __qualname__rr1r<rHrfrp©rrrrs"„ò ò!ò*4ò@ ò"
ó@'-rrcó&—eZdZdd„Zd„Zd„Zd„Zy)ÚTestBuildExtInplacec ó
—diidœdœ}tj|«tddg|¬«}tt    |g¬««}d|_t |«}t|«jd d    d
d œ|¤Ž|j«|S) Nz#include missingheader.h
)ÚlibÚtmp)r"z.buildr!r")Úoptionalr%úsetup.pyz
.build/libz
.build/tmp)rXÚ
build_temprt)
rrEr
rr+rCrÚvarsÚupdaterW)rrzÚoptsrFr0rrs       rÚget_build_ext_cmdz%TestBuildExtInplace.get_build_ext_cmd·sƒ€à2Ø ¨Ñ,ñ=
ˆô     
‰
5Ôܘk¨H¨:ÀÔIˆ    ÜœD¨i¨[Ô9Ó:ˆØ%ˆÔܘ‹oˆØŒˆS‹    ×ÑÐQ <¸LÑQÈDÒQØ ×ÑÔØˆ
rcó¦—|j«}|jj«|jj«z|jzS)z½
        Historically, distutils "logged" by printing to sys.std*.
        Later versions adopted the logging framework. Grab
        messages regardless of how they were captured.
        )Ú
readouterrÚoutÚ
splitlinesÚerrÚmessages)rÚcaplogÚcapsysÚstds    rÚget_log_messagesz$TestBuildExtInplace.get_log_messagesÅs@€ð ×ÑÓ!ˆØw‰w×!Ñ!Ó# c§g¡g×&8Ñ&8Ó&:Ñ:¸V¿_¹_ÑLÐLrcó’—|jdd¬«}|j«td„|j||«D««sJ‚y)z‚
        If optional extensions fail to build, setuptools should show the error
        in the logs but not fail to build
        T©rzÚinplacec3ó K—|]}d–—Œy­w)z0build_ext: building extension "spam.eggs" failedNrt)Ú.0Úmsgs  rú    <genexpr>z4TestBuildExtInplace.test_optional.<locals>.<genexpr>Õsèø€ò
àô ?ñ
ùs‚ N)r€ÚrunÚanyrŠ)rr_r‡rˆrs     rÚ test_optionalz!TestBuildExtInplace.test_optionalÎsN€ð
×$Ñ$¨d¸DÐ$ÓAˆØ ‰Œ    Üñ
à×,Ñ,¨V°VÓ<ô
ô
ð    
ñ
rcó¦—|jdd¬«}tjt«5|j    «ddd«y#1swYyxYw)NFTrŒ)r€ÚpytestÚraisesr    r’)rr_rs   rÚtest_non_optionalz%TestBuildExtInplace.test_non_optionalÛsA€à×$Ñ$¨e¸TÐ$ÓBˆÜ ]‰]œ<Ó (ñ    Ø G‰GŒI÷    ÷    ñ    ús ­AÁAN)rzÚboolÚreturnr)rqrrrsr€rŠr”r˜rtrrrvrv¶s„ó òMò
 
órrvcóЗtd«td«td«dœ}tj|«tjdgd¬«\}\}}|dk(s Jd    |›d
|›«‚y) NzÚ
            from setuptools import Extension, setup
            setup(
                name='foo',
                version='0.0.0',
                ext_modules=[Extension('foo', ['foo.c'])],
            )
            aÜ
            #include "Python.h"
 
            #if PY_MAJOR_VERSION >= 3
 
            static struct PyModuleDef moduledef = {
                    PyModuleDef_HEAD_INIT,
                    "foo",
                    NULL,
                    0,
                    NULL,
                    NULL,
                    NULL,
                    NULL,
                    NULL
            };
 
            #define INITERROR return NULL
 
            PyMODINIT_FUNC PyInit_foo(void)
 
            #else
 
            #define INITERROR return
 
            void initfoo(void)
 
            #endif
            {
            #if PY_MAJOR_VERSION >= 3
                PyObject *module = PyModule_Create(&moduledef);
            #else
                PyObject *module = Py_InitModule("extension", NULL);
            #endif
                if (module == NULL)
                    INITERROR;
            #if PY_MAJOR_VERSION >= 3
                return module;
            #endif
            }
            zD
            [build]
            build_base = foo_build
            )r{zfoo.cz    setup.cfgrE)ré)rÚ data_streamrz    
STDOUT:
z    
STDERR:
)r rrEr Ú run_setup_py)r_rFÚcodeÚstdoutÚstderrs     rÚtest_build_ext_config_handlingr¢âs‡€äð ó    
ôð( ó*
ôVð ó
ñm< €Eôz    ‡JJˆuÔÜ(×5Ñ5Ø ˆIØôÑ€DÑ
ˆ66ð 1Š9Ð?˜  F 8¨;°v°hÐ?Ó?‰9r)!Ú
__future__rr8r.Úimportlib.utilrrjr–ÚjaracorÚsetuptools.command.build_extrrÚsetuptools.distrÚsetuptools.errorsr    Úsetuptools.extensionr
rr Útextwrapr Údistutils.command.build_extÚcommandrÚdistutils.sysconfigrÚbuiltin_module_namesr7rrvr¢rtrrú<module>r¯saðÝ"ã    Û
ÝCã ÝçCÝ(Ý*Ý*åÝç*Ð*Ý.à
˜×0Ñ0Ð
0€÷[-ñ[-÷|)ñ)óXC@r