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
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
Ë
@ñúh\Öãó—UdZddlmZddlZddlZddlZddlZddlZddlm    Z    m
Z
m Z m Z ddl mZmZmZmZmZmZddlmZddlmZdd    lmZdd
lmZdd lmZmZdd lm Z dd l!m!Z!ddl"m#Z#m$Z$m%Z%ddlm&Z&m'Z'm(Z(erddl)m*Z*m+Z+m,Z,e+d«Z-ee.e/e.e/ee/dfffZ0de1d<edd¬«Z2edd¬«Z3Gd„d«Z4dZ5d)d*d„Z6ddd d!d"d#d$œZ7d+d%„Z8                    d,                                            d-d&„Z9                        d.d'„Z:                                        d/d(„Z;y)0z‡distutils.ccompiler
 
Contains Compiler, an abstract base class that defines the interface
for the Distutils compiler abstraction model.é)Ú annotationsN)ÚCallableÚIterableÚMutableSequenceÚSequence)Ú TYPE_CHECKINGÚClassVarÚLiteralÚTypeVarÚUnionÚoverload)Úalways_iterableé)Úlog)Ú newer_group)Úmkpath)ÚDistutilsModuleErrorÚDistutilsPlatformError)Ú    move_file)Úspawn)ÚexecuteÚis_mingwÚ split_quotedé)Ú CompileErrorÚ    LinkErrorÚUnknownFileType)Ú    TypeAliasÚ TypeVarTupleÚUnpackÚ_TsrÚ_MacroÚ    _StrPathTústr | os.PathLike[str])ÚboundÚ _BytesPathTúbytes | os.PathLike[bytes]cóø—eZdZUdZdZded<ded<dZded<dZd    ed
<dZd    ed <dZ    d    ed <dZ
d    ed <dZ d    ed<dZ d    ed<ddddddœZ ded<gd¢Zded<gZded<    gZded<        d\                            d]d„Zd^d„Zd„Zd„Zd „Zd!„Zed_d"„«Zd_d`d#„Zdad$„Zdbd%„Zdcd&„Zddd'„Zded(„Zdbd)„Zdcd*„Z dbd+„Z!dcd,„Z"dfd-„Z#dgd.„Z$                        dhd/„Z%d0„Z&                                did1„Z'd_d2„Z(                        djd3„Z)                                dkd4„Z*d5„Z+dld6„Z,                    dm                                            dnd7„Z-                            do                                                                    dpd8„Z.d9„Z/            dq                                            drd:„Z0d;Z1d<Z2d=Z3                                        ds                                                                                                    dtd>„Z4                                        ds                                                                                            dud?„Z5                                        ds                                                                                            dvd@„Z6                                dw                                                                            dxdA„Z7dydB„Z8dydC„Z9dzdD„Z:                d{                                            d|dE„Z;    d}                            d~dF„Z<        d                            d€dG„Z=e>dH„«Z?dI„Z@eAdJ„«ZBeddK„«ZCeD        d                            d‚dL„«ZEeD    dƒ                            d„dM„«ZE        d                            d…dN„ZEeD        d                            d‚dO„«ZFeD    dƒ                            d„dP„«ZF        d                            d…dQ„ZF            d†                            d‡dR„ZGdˆd‰dS„ZHdŠdT„ZIdŠdU„ZJ        d‹                                    dŒdV„ZK                ddW„ZLeD                        dŽdX„«ZMeD                        ddY„«ZM                        ddZ„ZMd‘d[„ZNy)’ÚCompileraŸAbstract base class to define the interface that must be implemented
    by real compiler classes.  Also has some utility methods used by
    several compiler classes.
 
    The basic idea behind a compiler abstraction class is that each
    instance can be used for all the compile/link steps in building a
    single project.  Thus, attributes common to all of those compile and
    link steps -- include directories, macros to define, libraries to link
    against, etc. -- are attributes of the compiler instance.  To allow for
    variability in how individual files are treated, most of those
    attributes may be varied on a per-compilation or per-link basis.
    Nz ClassVar[str]Ú compiler_typezClassVar[dict]Ú executableszClassVar[list[str] | None]Úsrc_extensionszClassVar[str | None]Ú obj_extensionÚstatic_lib_extensionÚshared_lib_extensionÚstatic_lib_formatÚshared_lib_formatÚ exe_extensionÚcúc++Úobjc)ú.cz.ccz.cppz.cxxz.mzClassVar[dict[str, str]]Ú language_map)r4r5r3zClassVar[list[str]]Úlanguage_orderú    list[str]Ú include_dirsÚ library_dirscó —||_||_||_d|_g|_g|_g|_g|_g|_g|_    |jj«D]!}|j||j|«Œ#y©N) Údry_runÚforceÚverboseÚ
output_dirÚmacrosr:Ú    librariesr;Úruntime_library_dirsÚobjectsr+ÚkeysÚset_executable)Úselfr@r>r?Úkeys     úYH:\Change_password\venv_build\Lib\site-packages\setuptools/_distutils/compilers/C/base.pyÚ__init__zCompiler.__init__…s”€ðˆŒ ؈Œ
؈Œ ð'+ˆŒð %'ˆŒ ðˆÔð%'ˆŒðˆÔð02ˆÔ!ð#%ˆŒ à×#Ñ#×(Ñ(Ó*ò    <ˆCØ × Ñ   T×%5Ñ%5°cÑ%:Õ ;ñ    <óc ó¢—|D]J}||jvr%td|›d|jj›«‚|j    |||«ŒLy)a‹Define the executables (and options for them) that will be run
        to perform the various stages of compilation.  The exact set of
        executables that may be specified here depends on the compiler
        class (via the 'executables' class attribute), but most will have:
          compiler      the C/C++ compiler
          linker_so     linker used to create shared objects and libraries
          linker_exe    linker used to create binary executables
          archiver      static library creator
 
        On platforms with a command-line (Unix, DOS/Windows), each of these
        is a string that will be split into executable name and (optional)
        list of arguments.  (Splitting the string is done similarly to how
        Unix shells operate: words are delimited by spaces, but quotes and
        backslashes can override this.  See
        'distutils.util.split_quoted()'.)
        zunknown executable 'z ' for class N)r+Ú
ValueErrorÚ    __class__Ú__name__rG)rHÚkwargsrIs   rJÚset_executableszCompiler.set_executables«s_€ð4ò    2ˆCؘ$×*Ñ*Ñ*Ü Ø*¨3¨%¨|¸D¿N¹N×<SÑ<SÐ;TÐUóðð × Ñ   V¨C¡[Õ 1ñ     2rLcól—t|t«rt||t|««yt|||«yr=)Ú
isinstanceÚstrÚsetattrr)rHrIÚvalues   rJrGzCompiler.set_executableÌs)€Ü eœSÔ !Ü D˜#œ|¨EÓ2Õ 3ä D˜#˜uÕ %rLcóL—d}|jD]}|d|k(r|cS|dz }Œy)Nrr)rB)rHÚnameÚiÚdefns    rJÚ _find_macrozCompiler._find_macroÒs8€Ø ˆØ—K‘Kò    ˆDؐA‰w˜$ŠØ’Ø ‰F‰Að    ðrLcó0—|D]}|j|ŽŒy)z4Ensure that every element of 'definitions' is valid.N)Ú_check_macro_definition)rHÚ definitionsr[s   rJÚ_check_macro_definitionsz!Compiler._check_macro_definitionsÚs!€àò    0ˆDØ (ˆD× (Ñ (¨$Ò /ñ    0rLcó`—t|t«r|j|Žstd|›d«‚y)z‹
        Raise a TypeError if defn is not valid.
 
        A valid definition is either a (name, value) 2-tuple or a (name,) tuple.
        zinvalid macro definition 'z?': must be tuple (string,), (string, string), or (string, None)N)rTÚtupleÚ_is_valid_macroÚ    TypeError)rHr[s  rJr^z Compiler._check_macro_definitionßsD€ô ˜$¤Ô&Ð.B¨d×.BÑ.BÀDÑ.IÜØ,¨T¨Fð3OðOóð ð/JrLcó\—t|t«xrt|ttd«f«S)z‘
        A valid macro is a ``name : str`` and a ``value : str | None``.
 
        >>> Compiler._is_valid_macro('foo', None)
        True
        N)rTrUÚtype)rYrWs  rJrczCompiler._is_valid_macroës&€ô˜$¤Ó$ÒM¬°E¼CÄÀdÃÐ;LÓ)MÐMrLcó~—|j|«}| |j|=|jj||f«y)a_Define a preprocessor macro for all compilations driven by this
        compiler object.  The optional parameter 'value' should be a
        string; if it is not supplied, then the macro will be defined
        without an explicit value and the exact outcome depends on the
        compiler used (XXX true? does ANSI say anything about this?)
        N©r\rBÚappend)rHrYrWrZs    rJÚ define_macrozCompiler.define_macro÷s:€ð × Ñ ˜TÓ "ˆØ ˆ=Ø— ‘ ˜Aà  ‰ ×јD %˜=Õ)rLcó€—|j|«}| |j|=|f}|jj|«y)a³Undefine a preprocessor macro for all compilations driven by
        this compiler object.  If the same macro is defined by
        'define_macro()' and undefined by 'undefine_macro()' the last call
        takes precedence (including multiple redefinitions or
        undefinitions).  If the macro is redefined/undefined on a
        per-compilation basis (ie. in the call to 'compile()'), then that
        takes precedence.
        Nrh)rHrYrZÚundefns    rJÚundefine_macrozCompiler.undefine_macros=€ð × Ñ ˜TÓ "ˆØ ˆ=Ø— ‘ ˜AàˆØ  ‰ ×ј6Õ"rLcó:—|jj|«y)zóAdd 'dir' to the list of directories that will be searched for
        header files.  The compiler is instructed to search directories in
        the order in which they are supplied by successive calls to
        'add_include_dir()'.
        N)r:ri©rHÚdirs  rJÚadd_include_dirzCompiler.add_include_diró€ð      ×Ñ× Ñ  Õ%rLcó—|dd|_y)aySet the list of directories that will be searched to 'dirs' (a
        list of strings).  Overrides any preceding calls to
        'add_include_dir()'; subsequence calls to 'add_include_dir()' add
        to the list passed to 'set_include_dirs()'.  This does not affect
        any list of standard include directories that the compiler may
        search by default.
        N©r:©rHÚdirss  rJÚset_include_dirszCompiler.set_include_dirs s€ð!¡˜GˆÕrLcó:—|jj|«y)a¿Add 'libname' to the list of libraries that will be included in
        all links driven by this compiler object.  Note that 'libname'
        should *not* be the name of a file containing a library, but the
        name of the library itself: the actual filename will be inferred by
        the linker, the compiler, or the compiler class (depending on the
        platform).
 
        The linker will be instructed to link against libraries in the
        order they were supplied to 'add_library()' and/or
        'set_libraries()'.  It is perfectly valid to duplicate library
        names; the linker will be instructed to link against libraries as
        many times as they are mentioned.
        N)rCri)rHÚlibnames  rJÚ add_libraryzCompiler.add_library*s€ð     ‰×јgÕ&rLcó—|dd|_y)zôSet the list of libraries to be included in all links driven by
        this compiler object to 'libnames' (a list of strings).  This does
        not affect any standard system libraries that the linker may
        include by default.
        N)rC)rHÚlibnamess  rJÚ set_librarieszCompiler.set_libraries:s€ð "¡!˜ˆrLcó:—|jj|«y)a'Add 'dir' to the list of directories that will be searched for
        libraries specified to 'add_library()' and 'set_libraries()'.  The
        linker will be instructed to search for libraries in the order they
        are supplied to 'add_library_dir()' and/or 'set_library_dirs()'.
        N)r;riros  rJÚadd_library_dirzCompiler.add_library_dirBrrrLcó—|dd|_y)zÀSet the list of library search directories to 'dirs' (a list of
        strings).  This does not affect any standard library search path
        that the linker may search by default.
        N)r;rus  rJÚset_library_dirszCompiler.set_library_dirsJs€ð
!¡˜GˆÕrLcó:—|jj|«y)zlAdd 'dir' to the list of directories that will be searched for
        shared libraries at runtime.
        N)rDriros  rJÚadd_runtime_library_dirz Compiler.add_runtime_library_dirQs€ð     ×!Ñ!×(Ñ(¨Õ-rLcó—|dd|_y)zãSet the list of directories to search for shared libraries at
        runtime to 'dirs' (a list of strings).  This does not affect any
        standard search path that the runtime linker may search by
        default.
        N)rDrus  rJÚset_runtime_library_dirsz!Compiler.set_runtime_library_dirsWs€ð %)© GˆÕ!rLcó:—|jj|«y)zãAdd 'object' to the list of object files (or analogues, such as
        explicitly named library files or the output of "resource
        compilers") to be included in every link driven by this compiler
        object.
        N)rEri)rHÚobjects  rJÚadd_link_objectzCompiler.add_link_object_s€ð       ‰ ×јFÕ#rLcó—|dd|_y)zêSet the list of object files (or analogues) to be included in
        every link to 'objects'.  This does not affect any standard object
        files that the linker may include by default (such as system
        libraries).
        N)rE)rHrEs  rJÚset_link_objectszCompiler.set_link_objectsgs€ð ™qzˆ rLcó°—|j|||«\}}}|€g}|j|d|¬«}t|«t|«k(sJ‚t||«}i}    t    t|««D]c}
||
} ||
} t
j j| «d} |jt
j j| ««| | f|    | <Œe|||||    fS)z;Process arguments and decide which source files to compile.F)Ú    strip_dirrAr)
Ú_fix_compile_argsÚobject_filenamesÚlenÚgen_preprocess_optionsÚrangeÚosÚpathÚsplitextrÚdirname)rHÚoutdirrBÚincdirsÚsourcesÚdependsÚextrarEÚpp_optsÚbuildrZÚsrcÚobjÚexts              rJÚ_setup_compilezCompiler._setup_compiletså€ð#'×"8Ñ"8¸ÀÈÓ"Qш˜à ˆ=؈Eð×'Ñ'¨¸5ÈVÐ'ÓTˆÜ7‹|œs 7›|Ò+Ð+Ð+ä(¨°Ó9ˆàˆÜ”s˜7“|Ó$ò    $ˆAؘ!‘*ˆCؘ!‘*ˆCÜ—'‘'×"Ñ" 3Ó'¨Ñ*ˆCØ K‰KœŸ™Ÿ™¨Ó,Ô -ؘs˜ˆE#ŠJð     $ðw  w°Ð5Ð5rLcó0—|dgz}|rdg|dd|r||dd|S)Nz-cz-gr©)rHr›ÚdebugÚbeforeÚcc_argss     rJÚ _get_cc_argszCompiler._get_cc_args“s1€à˜T˜FÑ"ˆÙ ؘ&ˆGBQˆKÙ Ø ˆGBQˆK؈rLcóÌ—|€ |j}nt|t«s td«‚|€t    |j
«}n/t|t«r||j
xsgz}n td«‚|€t    |j «}n>t|ttf«rt    |«|j xsgz}n td«‚||jj z }|||fS)a'Typecheck and fix-up some of the arguments to the 'compile()'
        method, and return fixed-up values.  Specifically: if 'output_dir'
        is None, replaces it with 'self.output_dir'; ensures that 'macros'
        is a list, and augments it with 'self.macros'; ensures that
        'include_dirs' is a list, and augments it with 'self.include_dirs'.
        Guarantees that the returned values are of the correct type,
        i.e. for 'output_dir' either string or None, and for 'macros' and
        'include_dirs' either list or None.
        ú%'output_dir' must be a string or Nonez/'macros' (if supplied) must be a list of tuplesz6'include_dirs' (if supplied) must be a list of strings)    rArTrUrdÚlistrBr:rbrO)rHrArBr:s    rJrzCompiler._fix_compile_argsœsҀð Ð ØŸ™‰JܘJ¬Ô,ÜÐCÓDÐ Dà ˆ>ܘ$Ÿ+™+Ó&‰FÜ ˜¤Ô %ؘtŸ{™{Ò0¨bÑ1‰FäÐMÓNÐ Nà Ð Ü × 1Ñ 1Ó2‰LÜ ˜ ¤t¬U mÔ 4Ü  Ó-°×1BÑ1BÒ1HÀbÑI‰LäÐTÓUÐ Uð    ˜Ÿ™×3Ñ3Ñ3ˆ à˜6 <Ð/Ð/rLcób—|j||¬«}t|«t|«k(sJ‚|ifS)a,Decide which source files must be recompiled.
 
        Determine the list of object files corresponding to 'sources',
        and figure out which ones really need to be recompiled.
        Return a list of all object files and a dictionary telling
        which source files can be skipped.
        ©rA)rŽr)rHr˜rAr™rEs     rJÚ _prep_compilezCompiler._prep_compileÃs;€ð×'Ñ'¨¸JÐ'ÓGˆÜ7‹|œs 7›|Ò+Ð+Ð+ð˜ˆ{ÐrLcó¼—t|ttf«s td«‚t|«}|€|j}||fSt|t
«s td«‚||fS)zûTypecheck and fix up some arguments supplied to various methods.
        Specifically: ensure that 'objects' is a list; if output_dir is
        None, replace with self.output_dir.  Return fixed versions of
        'objects' and 'output_dir'.
        z,'objects' must be a list or tuple of stringsr¨)rTr©rbrdrArU)rHrErAs   rJÚ_fix_object_argszCompiler._fix_object_argsÓsf€ô˜'¤D¬% =Ô1ÜÐJÓKÐ Kܐw“-ˆà Ð ØŸ™ˆJð˜Ð$Ð$ô˜J¬Ô,ÜÐCÓDÐ Dà˜Ð$Ð$rLcóB—|€t|j«}n>t|ttf«rt|«|jxsgz}n t    d«‚|€t|j
«}n>t|ttf«rt|«|j
xsgz}n t    d«‚||j j
z }|€t|j«}n>t|ttf«rt|«|jxsgz}n t    d«‚|||fS)a;Typecheck and fix up some of the arguments supplied to the
        'link_*' methods.  Specifically: ensure that all arguments are
        lists, and augment them with their permanent versions
        (eg. 'self.libraries' augments 'libraries').  Return a tuple with
        fixed versions of all arguments.
        z3'libraries' (if supplied) must be a list of stringsz6'library_dirs' (if supplied) must be a list of stringsz>'runtime_library_dirs' (if supplied) must be a list of strings)r©rCrTrbrdr;rOrD)rHrCr;rDs    rJÚ _fix_lib_argszCompiler._fix_lib_argsæs€ð РܘTŸ^™^Ó,‰IÜ ˜    ¤D¬% =Ô 1ܘY›¨4¯>©>Ò+?¸RÑ@‰IäÐQÓRÐ Rà Ð Ü × 1Ñ 1Ó2‰LÜ ˜ ¤t¬U mÔ 4Ü  Ó-°×1BÑ1BÒ1HÀbÑI‰LäÐTÓUÐ Uð    ˜Ÿ™×3Ñ3Ñ3ˆ à Ð 'Ü#'¨×(AÑ(AÓ#BÑ  Ü Ð,¬t´U¨mÔ <Ü#'Ð(<Ó#=Ø×)Ñ)Ò/¨Rñ$Ñ  ôØPóð ð˜<Ð)=Ð>Ð>rLcóp—|jry|jrt||d¬«}|St||«}|S)zjReturn true if we need to relink the files listed in 'objects'
        to recreate 'output_file'.
        TÚnewer)Úmissing)r?r>r)rHrEÚ output_filer²s    rJÚ
_need_linkzCompiler._need_links=€ð :Š:Øà|Š|Ü# G¨[À'ÔJðˆLô$ G¨[Ó9ØˆLrLcóJ—t|t«s|g}d}t|j«}|D]d}tj
j |«\}}|jj|«}    |jj|«}||kr|}|}Œf|S#t$rYŒtwxYw)z|Detect the language of a given file, or list of files. Uses
        language_map, and language_order to do the job.
        N) rTr©rr8r’r“r”r7ÚgetÚindexrN)    rHr˜Úlangr¸ÚsourceÚbaserŸÚextlangÚextindexs             rJÚdetect_languagezCompiler.detect_languages°€ô˜'¤4Ô(ؐiˆG؈ܐD×'Ñ'Ó(ˆØò        ˆFÜŸ™×(Ñ(¨Ó0‰IˆD#Ø×'Ñ'×+Ñ+¨CÓ0ˆGð Ø×.Ñ.×4Ñ4°WÓ=Ø˜eÒ#Ø"DØ$Eøð        ðˆ øôò Ùð úsÁ.$B    B"Â!B"có—y)aÕPreprocess a single C/C++ source file, named in 'source'.
        Output will be written to file named 'output_file', or stdout if
        'output_file' not supplied.  'macros' is a list of macro
        definitions as for 'compile()', which will augment the macros set
        with 'define_macro()' and 'undefine_macro()'.  'include_dirs' is a
        list of directory names that will be added to the default list.
 
        Raises PreprocessError on failure.
        Nr¢)rHrºr´rBr:Ú extra_preargsÚextra_postargss       rJÚ
preprocesszCompiler.preprocess4s€ð$     rLc        óΗ|j||||||«\}}    }}
} |j|
||«} |    D]!}     | | \}}|j| ||| ||
«Œ#|    S#t$rYŒ1wxYw)aK    Compile one or more source files.
 
        'sources' must be a list of filenames, most likely C/C++
        files, but in reality anything that can be handled by a
        particular compiler and compiler class (eg. MSVCCompiler can
        handle resource files in 'sources').  Return a list of object
        filenames, one per source filename in 'sources'.  Depending on
        the implementation, not all source files will necessarily be
        compiled, but all corresponding object filenames will be
        returned.
 
        If 'output_dir' is given, object files will be put under it, while
        retaining their original path component.  That is, "foo/bar.c"
        normally compiles to "foo/bar.o" (for a Unix implementation); if
        'output_dir' is "build", then it would compile to
        "build/foo/bar.o".
 
        'macros', if given, must be a list of macro definitions.  A macro
        definition is either a (name, value) 2-tuple or a (name,) 1-tuple.
        The former defines a macro; if the value is None, the macro is
        defined without an explicit value.  The 1-tuple case undefines a
        macro.  Later definitions/redefinitions/ undefinitions take
        precedence.
 
        'include_dirs', if given, must be a list of strings, the
        directories to add to the default include file search path for this
        compilation only.
 
        'debug' is a boolean; if true, the compiler will be instructed to
        output debug symbols in (or alongside) the object file(s).
 
        'extra_preargs' and 'extra_postargs' are implementation- dependent.
        On platforms that have the notion of a command-line (e.g. Unix,
        DOS/Windows), they are most likely lists of strings: extra
        command-line arguments to prepend/append to the compiler command
        line.  On other platforms, consult the implementation class
        documentation.  In any event, they are intended as an escape hatch
        for those occasions when the abstract compiler framework doesn't
        cut the mustard.
 
        'depends', if given, is a list of filenames that all targets
        depend on.  If a source file is older than any file in
        depends, then the source file will be recompiled.  This
        supports dependency tracking, but only at a coarse
        granularity.
 
        Raises CompileError on failure.
        )r r¦ÚKeyErrorÚ_compile)rHr˜rArBr:r£rÀrÁr™rEr›rœr¥ržrrŸs                rJÚcompilezCompiler.compileHs™€ðz;?×:MÑ:MØ ˜  ¨g°wÀó;
Ñ7ˆ˜¨°%ð×#Ñ# G¨U°MÓBˆàò    KˆCð Ø  ™:‘Sð M‰M˜#˜s C¨°.À'Õ Jð     Kðˆøô ò Ùð ús¶AÁ    A$Á#A$có—y)zCompile 'src' to product 'obj'.Nr¢)rHržrrŸr¥rÁr›s       rJrÅzCompiler._compile”s€ð     rLcó—y)a&Link a bunch of stuff together to create a static library file.
        The "bunch of stuff" consists of the list of object files supplied
        as 'objects', the extra object files supplied to
        'add_link_object()' and/or 'set_link_objects()', the libraries
        supplied to 'add_library()' and/or 'set_libraries()', and the
        libraries supplied as 'libraries' (if any).
 
        'output_libname' should be a library name, not a filename; the
        filename will be inferred from the library name.  'output_dir' is
        the directory where the library file will be put.
 
        'debug' is a boolean; if true, debugging information will be
        included in the library (note that on most platforms, it is the
        compile step where this matters: the 'debug' flag is included here
        just for consistency).
 
        'target_lang' is the target language for which the given objects
        are being compiled. This allows specific linkage time treatment of
        certain languages.
 
        Raises LibError on failure.
        Nr¢)rHrEÚoutput_libnamerAr£Ú target_langs      rJÚcreate_static_libzCompiler.create_static_libšs€ð<     rLÚ shared_objectÚshared_libraryÚ
executablecó—t‚)auLink a bunch of stuff together to create an executable or
        shared library file.
 
        The "bunch of stuff" consists of the list of object files supplied
        as 'objects'.  'output_filename' should be a filename.  If
        'output_dir' is supplied, 'output_filename' is relative to it
        (i.e. 'output_filename' can provide directory components if
        needed).
 
        'libraries' is a list of libraries to link against.  These are
        library names, not filenames, since they're translated into
        filenames in a platform-specific way (eg. "foo" becomes "libfoo.a"
        on Unix and "foo.lib" on DOS/Windows).  However, they can include a
        directory component, which means the linker will look in that
        specific directory rather than searching all the normal locations.
 
        'library_dirs', if supplied, should be a list of directories to
        search for libraries that were specified as bare library names
        (ie. no directory component).  These are on top of the system
        default and those supplied to 'add_library_dir()' and/or
        'set_library_dirs()'.  'runtime_library_dirs' is a list of
        directories that will be embedded into the shared library and used
        to search for other shared libraries that *it* depends on at
        run-time.  (This may only be relevant on Unix.)
 
        'export_symbols' is a list of symbols that the shared library will
        export.  (This appears to be relevant only on Windows.)
 
        'debug' is as for 'compile()' and 'create_static_lib()', with the
        slight distinction that it actually matters on most platforms (as
        opposed to 'create_static_lib()', which includes a 'debug' flag
        mostly for form's sake).
 
        'extra_preargs' and 'extra_postargs' are as for 'compile()' (except
        of course that they supply command-line arguments for the
        particular linker being used).
 
        'target_lang' is the target language for which the given objects
        are being compiled. This allows specific linkage time treatment of
        certain languages.
 
        Raises LinkError on failure.
        ©ÚNotImplementedError)rHÚ target_descrEÚoutput_filenamerArCr;rDÚexport_symbolsr£rÀrÁÚ
build_temprÊs              rJÚlinkz Compiler.link¿s €ôv"Ð!rLc ó|—|jtj||j|d¬«|||||||    |
| | « y)NÚshared)Úlib_type)rÖr)ÚSHARED_LIBRARYÚlibrary_filename) rHrErÉrArCr;rDrÔr£rÀrÁrÕrÊs              rJÚlink_shared_libzCompiler.link_shared_libþsM€ð         ‰    Ü × #Ñ #Ø Ø × !Ñ ! .¸8Ð !Ó DØ Ø Ø Ø  Ø Ø Ø Ø Ø Ø õ    
rLc óZ—|jtj|||||||||    |
| | « yr=)rÖr)Ú SHARED_OBJECT) rHrErÓrArCr;rDrÔr£rÀrÁrÕrÊs              rJÚlink_shared_objectzCompiler.link_shared_objects=€ð         ‰    Ü × "Ñ "Ø Ø Ø Ø Ø Ø  Ø Ø Ø Ø Ø Ø õ    
rLc óx—|jtj||j|«||||d|||    d|
« yr=)rÖr)Ú
EXECUTABLEÚexecutable_filename) rHrEÚoutput_prognamerArCr;rDr£rÀrÁrÊs            rJÚlink_executablezCompiler.link_executable<sH€ð         ‰    Ü × Ñ Ø Ø × $Ñ $ _Ó 5Ø Ø Ø Ø  Ø Ø Ø Ø Ø Ø õ    
rLcó—t‚)zkReturn the compiler option to add 'dir' to the list of
        directories searched for libraries.
        rÐros  rJÚlibrary_dir_optionzCompiler.library_dir_option^ó
€ô"Ð!rLcó—t‚)zsReturn the compiler option to add 'dir' to the list of
        directories searched for runtime libraries.
        rÐros  rJÚruntime_library_dir_optionz#Compiler.runtime_library_dir_optiondrçrLcó—t‚)zReturn the compiler option to add 'lib' to the list of libraries
        linked into the shared library or executable.
        rÐ)rHÚlibs  rJÚlibrary_optionzCompiler.library_optionjrçrLcóô—ddl}|€g}ntjdt«|€g}ntjdt«|€g}|€g}|j    d|d¬«\}}t j |dd    ¬
«5}    |D]}
|    jd |
›d «Œ|s|    jd |›d«|    jd|›d«ddd«    |j|g|¬«}     t j|«    |j| d||¬«t j|jd|jxsd¬««    | D]} t j| «Œy#1swYŒœxYw#t$rYt j|«ywxYw#t j|«wxYw#ttf$rY| D]} t j| «ŒywxYw#| D]} t j| «ŒwxYw)aRReturn a boolean indicating whether funcname is provided as
        a symbol on the current platform.  The optional arguments can
        be used to augment the compilation environment.
 
        The libraries argument is a list of flags to be passed to the
        linker to make additional symbol definitions available for
        linking.
 
        The includes and include_dirs arguments are deprecated.
        Usually, supplying include files with function declarations
        will cause function detection to fail even in cases where the
        symbol is available for linking.
 
        rNzincludes is deprecatedzinclude_dirs is deprecatedr6T)ÚtextÚwzutf-8)Úencodingz
#include "z"
z*#ifdef __cplusplus
extern "C"
#endif
char z(void);
z'int main (int argc, char **argv) {
    z();
    return 0;
}
rtFza.out)rCr;Úr«)ÚtempfileÚwarningsÚwarnÚDeprecationWarningÚmkstempr’ÚfdopenÚwriterÆrÚremoverärârArrd) rHÚfuncnameÚincludesr:rCr;ròÚfdÚfnameÚfÚinclrEÚfns              rJÚ has_functionzCompiler.has_functionps€ó2    à Р؉Hä M‰MÐ2Ô4FÔ GØ Ð Ø‰Lä M‰MÐ6Ô8JÔ KØ Ð ØˆIØ Ð ØˆLØ×$Ñ$ T¨8¸$Ð$Ó?‰    ˆˆEÜ Y‰Yr˜3¨Ô 1ð    °QØ ò 4Ø—‘˜J t f¨CÐ2Õ3ð 4áð—‘ðð€Zðð    ôð G‰Gðà €Jððô ÷'    ð8    Ø—l‘l E 7¸lÓF‰Gô I‰IeÔ ð     Ø ×  Ñ  Ø˜¨IÀLð !ô ô I‰IØ×(Ñ(¨¸T¿_¹_Ò=RÐPRÐ(ÓSõ ðò Ü—    ‘    ˜"• ð à÷a    ð    ûô<ò    Øä I‰IeÕ ð    ûô I‰IeÕ ûô œ9Ð%ò    Øð ò Ü—    ‘    ˜"• ñ ð    ûðò Ü—    ‘    ˜"• ñ ús[Á:A    Eà E*Ã7F(Ä 4GÅE'Å*    F Å3FÆ
F Æ FÆF%Æ(GÆ7GÇGÇGÇG7có—t‚)aHSearch the specified list of directories for a static or shared
        library file 'lib' and return the full path to that file.  If
        'debug' true, look for a debugging version (if that makes sense on
        the current platform).  Return None if 'lib' wasn't found in any of
        the specified directories.
        rÐ)rHrvrër£s    rJÚfind_library_filezCompiler.find_library_fileÊs
€ô"Ð!rLcó<‡‡‡—‰€dŠtˆˆˆfd„|D««S)Nrñc3óD•K—|]}‰j‰‰|«–—Œy­wr=)Ú_make_out_path)Ú.0Úsrc_namerArHrŒs  €€€rJú    <genexpr>z,Compiler.object_filenames.<locals>.<genexpr>ÿs(øèø€ò
àð × Ñ  
¨I°x× @ñ
ùsƒ )r©)rHÚsource_filenamesrŒrAs` ``rJrŽzCompiler.object_filenames÷s*ú€ð Р؈JÜõ
à,ô
ó
ð    
rLcóV—tj|j|j«Sr=)ÚdictÚfromkeysr,r-)rHs rJÚout_extensionszCompiler.out_extensionss€ä}‰}˜T×0Ñ0°$×2DÑ2DÓEÐErLcó>—|j||||j«Sr=)Ú_make_out_path_extsr)rHrArŒrs    rJrzCompiler._make_out_paths$€Ø×'Ñ'Ø ˜     8¨T×-@Ñ-@ó
ð    
rLcó`—tj|«}|j|«}    ||j}|rtj|j «}tjj||j|««S#t$rt d|j›d|›d«‚wxYw)a
        >>> exts = {'.c': '.o'}
        >>> Compiler._make_out_path_exts('.', False, '/foo/bar.c', exts).replace('\\', '/')
        './foo/bar.o'
        >>> Compiler._make_out_path_exts('.', True, '/foo/bar.c', exts).replace('\\', '/')
        './bar.o'
        zunknown file type 'z    ' (from 'z')) ÚpathlibÚPurePathÚ_make_relativeÚsuffixÚ LookupErrorrrYr’r“ÚjoinÚ with_suffix)ÚclsrArŒrÚ
extensionsrr»Únew_exts        rJrzCompiler._make_out_path_exts s¤€ô×јxÓ(ˆà×!Ñ! #Ó&ˆð    VØ  §¡Ñ,ˆGñ Ü×#Ñ# D§I¡IÓ.ˆD܏w‰w|‰|˜J¨×(8Ñ(8¸Ó(AÓBÐBøô    ò    VÜ!Ð$7¸¿
¹
°|À9ÈSÈEÐQSÐ"TÓUÐ Uð    Vús ¨BÂ&B-có8—|j|j«Sr=)Ú relative_toÚanchor)r»s rJrzCompiler._make_relative!s€à×Ñ § ¡ Ó,Ð,rLcó—yr=r¢©rHÚbasenamerŒrAs    rJÚshared_object_filenamezCompiler.shared_object_filename%ó€ð rLcó—yr=r¢r s    rJr"zCompiler.shared_object_filename,r#rLcó¦—|€J‚|rtjj|«}tjj|||jz«Sr=)r’r“r!rr/r s    rJr"zCompiler.shared_object_filename3sG€ð Ð%Ð%Ð%Ù Ü—w‘w×'Ñ'¨Ó1ˆH܏w‰w|‰|˜J¨°4×3LÑ3LÑ(LÓMÐMrLcó—yr=r¢r s    rJrâzCompiler.executable_filename>r#rLcó—yr=r¢r s    rJrâzCompiler.executable_filenameEr#rLcó®—|€J‚|rtjj|«}tjj|||jxsdz«S)Nrñ)r’r“r!rr2r s    rJrâzCompiler.executable_filenameLsL€ð Ð%Ð%Ð%Ù Ü—w‘w×'Ñ'¨Ó1ˆH܏w‰w|‰|˜J¨°D×4FÑ4FÒ4LÈ"Ñ(MÓNÐNrLcó—|€J‚d}|t|«vrtd|›«‚t||dz«}t||dz«}tjj |«\}}    ||    |fz}
|rd}tjj |||
«S)Nz)"static", "shared", "dylib", "xcode_stub"z'lib_type' must be Ú _lib_formatÚ_lib_extensionrñ)ÚevalrNÚgetattrr’r“Úsplitr) rHryrÙrŒrAÚexpectedÚfmtrŸrpr»Úfilenames            rJrÛzCompiler.library_filenameWsš€ðÐ%Ð%Ð%Ø>ˆØ œ4 ›>Ñ )ÜÐ2°8°*Ð=Ó>Ð >ܐd˜H }Ñ4Ó5ˆÜd˜HÐ'7Ñ7Ó8ˆä—G‘G—M‘M 'Ó*‰    ˆˆTؘ$ ˜Ñ$ˆÙ ؈Cäw‰w|‰|˜J¨¨XÓ6Ð6rLcó.—tj|«yr=)rr£)rHÚmsgÚlevels   rJÚannouncezCompiler.announcens €Ü     ‰    #rLcó,—ddlm}|r t|«yy)Nr)ÚDEBUG)Údistutils.debugr7Úprint)rHr3r7s   rJÚ debug_printzCompiler.debug_printqs€Ý)á Ü #Jð rLcóJ—tjjd|›d«y)Nz    warning: ú
)ÚsysÚstderrrø)rHr3s  rJrôz Compiler.warnws€Ü 
‰
×ј9 S E¨Ð,Õ-rLcó4—t||||j«yr=)rr>)rHÚfuncÚargsr3r4s     rJrzCompiler.executezs€ô    d˜C §¡Õ.rLc ó4—t|fd|ji|¤Žy)Nr>)rr>)rHÚcmdrQs   rJrzCompiler.spawnƒs€ô    ˆcÑ2˜4Ÿ<™<Ð2¨6Ó2rLcó—yr=r¢©rHrÚdsts   rJrzCompiler.move_fileˆs€ðrLcó—yr=r¢rEs   rJrzCompiler.move_fileŒs€ð"rLcó2—t|||j¬«S©N)r>)rr>rEs   rJrzCompiler.move_files€ô
˜˜c¨4¯<©<Ô8Ð8rLcó4—t|||j¬«yrI)rr>)rHrYÚmodes   rJrzCompiler.mkpath—s€ÜˆtT 4§<¡<Ö0rL)FFF)r@Úboolr>rLr?rLÚreturnÚNone)rQrUrMrNr=)rYrUrWú
str | NonerMrN)rYrUrMrN)rprUrMrN)rvr9rMrN)ryrUrMrN)r|r9rMrN)r‡rUrMrN)rEr9rMrN)r–rOrBúlist[_Macro] | Noner—ú"list[str] | tuple[str, ...] | None)rArOrBrPr:rQrMz#tuple[str, list[_Macro], list[str]])rEúlist[str] | tuple[str, ...]rArOrMztuple[list[str], str])rCrQr;rQrDrQrMz&tuple[list[str], list[str], list[str]])r˜zstr | list[str]rMrO)NNNNN) rºr$r´ústr | os.PathLike[str] | NonerBrPr:rQrÀúlist[str] | NonerÁúIterable[str] | None)NNNFNNN)r˜z Sequence[str | os.PathLike[str]]rArOrBrPr:rQr£rLrÀrTrÁrTr™rQrMr9)NFN) rErRrÉrUrArOr£rLrÊrOrMrN)
NNNNNFNNNN)rÒrUrErRrÓrUrArOrCrQr;rQrDrQrÔrUr£rLrÀrTrÁrTrÕrSrÊrO)rErRrÉrUrArOrCrQr;rQrDrQrÔrUr£rLrÀrTrÁrTrÕrSrÊrO)rErRrÓrUrArOrCrQr;rQrDrQrÔrUr£rLrÀrTrÁrTrÕrSrÊrO)NNNNFNNN)rErRrãrUrArOrCrQr;rQrDrQr£rLrÀrTrÁrTrÊrO)rprUrMrU)rërUrMrU)NNNN) rúrUrûrUr:rQrCrTr;rQrMrL)F)rvú Iterable[str]rërUr£rLrMrO)Frñ)r
z Iterable[str | os.PathLike[str]]rŒrLrArSrMr9)r»z pathlib.Path)r!rUrŒzLiteral[False]rAr$rMrU)rñ)r!r$rŒz Literal[True]rAr$rMrU)r!r$rŒrLrAr$rMrU)ÚstaticFrñ)ryrUrÙrUrŒrLrAr$)r)r3r‡r4ÚintrMrN)r3r‡rMrN)Nr)
r@zCallable[[Unpack[_Ts]], object]rAztuple[Unpack[_Ts]]r3r‡r4rXrMrN)rCz/MutableSequence[bytes | str | os.PathLike[str]]rMrN)rr$rFr#rMz_StrPathT | str)rr'rFr&rMz_BytesPathT | bytes)rú3str | os.PathLike[str] | bytes | os.PathLike[bytes]rFrYrMrY)iÿ)OrPÚ
__module__Ú __qualname__Ú__doc__r*Ú__annotations__r,r-r.r/r0r1r2r7r8r:r;rKrRrGr\r`r^Ú staticmethodrcrjrmrqrwrzr}rrrƒr…rˆrŠr r¦rr¬r®r°rµr¾rÂrÆrÅrËrÞrÚrárÖrÜrßrärærérìrrrŽÚpropertyrrÚ classmethodrrr r"rârÛr5r:rôrrrrr¢rLrJr)r)3s#    …ñ ð*$(€M=Ó'ð, Óð
26€NÐ.Ó5Ø*.€MÐ'Ó.Ø15ÐÐ.Ó5Ø15ÐÐ.Ó5Ø.2ÐÐ+Ó2Ø.2ÐÐ+Ó2Ø*.€MÐ'Ó.ðØØØØñ .€LÐ*óò+?€NÐ'Ó>à €L)Ó ðð!€L)Ó ðð
KPð$<Øð$<Ø.2ð$<ØCGð$<à     ó$<óL2òB&ò ò0ò
 
ðòNóðNô *ó#ó$&ó$ó'ó %ó&ó$ó.ó ,ó$ó"ð6àð6ð$ð6ð4ó    6ò>ð%0àð%0ð$ð%0ð9ð    %0ð
 
-ó %0óNð %Ø2ð%Ø@Jð%à    ó%ð&(?à5ð(?ð9ð(?ðAð    (?ð
 
0ó (?òT óð46:Ø&*Ø;?Ø*.Ø/3ð à&ð ð3ð ð$ð     ð
9ð  ð (ð  ð-ó ð."&Ø&*Ø;?ØØ*.Ø+/Ø6:ðJà1ðJððJð$ð    Jð
9ð Jð ð Jð(ðJð)ðJð4ðJð
óJòX ð"&ØØ"&ð  à,ð ðð ðð     ð
ð  ð  ð  ð
ó ðB$€MØ%€NØ€Jð"&Ø8<Ø;?ØCGØ/3ØØ*.Ø+/Ø48Ø"&ð;"àð;"ð-ð;"ðð    ;"ð
ð ;"ð 6ð ;"ð9ð;"ðAð;"ð-ð;"ðð;"ð(ð;"ð)ð;"ð2ð;"ð ó;"ðF"&Ø8<Ø;?ØCGØ/3ØØ*.Ø+/Ø48Ø"&ð
à,ð
ðð
ðð    
ð
6ð 
ð 9ð 
ðAð
ð-ð
ðð
ð(ð
ð)ð
ð2ð
ð ó
ðF"&Ø8<Ø;?ØCGØ/3ØØ*.Ø+/Ø48Ø"&ð
à,ð
ðð
ðð    
ð
6ð 
ð 9ð 
ðAð
ð-ð
ðð
ð(ð
ð)ð
ð2ð
ð ó
ðF"&Ø8<Ø;?ØCGØØ*.Ø+/Ø"&ð
à,ð
ðð
ðð    
ð
6ð 
ð 9ð 
ðAð
ðð
ð(ð
ð)ð
ð ó
óD"ó "ó "ð*.Ø;?Ø&*Ø;?ð XàðXð'ðXð9ð    Xð
$ð Xð 9ð Xð
óXðv<Að    "Ø!ð    "Ø(+ð    "Ø48ð    "à    ó    "ð` Ø46ð     
à:ð 
ðð 
ð2ð     
ð
 
ó 
ðñFóðFò
ð
ñCóðCð&ò-óð-ðð%*Ø-/ð    àðð"ðð+ð    ð
 
ò óðð ð
.0ð    à(ðð!ðð+ð    ð
 
ò óðð Ø-/ð        Nà(ð    Nðð    Nð+ð        Nð
 
ó     Nðð%*Ø-/ð    àðð"ðð+ð    ð
 
ò óðð ð
.0ð    à(ðð!ðð+ð    ð
 
ò óðð Ø-/ð        Oà(ð    Oðð    Oð+ð        Oð
 
ó     Oð!ØØ-/ð 7àð7ðð7ðð    7ð
+ó 7ô.óó .ðØð /à-ð/ð!ð/ðð    /ð
ð /ð
ó /ð3ØBð3à     ó3ð
ðØ)ðØ09ðà    òóððð"Ø-ð"Ø4?ð"à    ò"óð"ð9à @ð9ðAð9ð
=ó    9ô1rLr)))zcygwin.*Úunix)Úzosrb)Úposixra)ÚntÚmsvccóޗ|€tj}|€tj}t    «ryt
D]5\}}t j||«€t j||«€Œ3|cSy)a\Determine the default compiler to use for the given platform.
 
    osname should be one of the standard Python OS names (i.e. the
    ones returned by os.name) and platform the common value
    returned by sys.platform for the platform in question.
 
    The default values are os.name and sys.platform in case the
    parameters are not given.
    Úmingw32ra)r’rYr=ÚplatformrÚ_default_compilersÚreÚmatch)ÚosnamerhÚpatternÚcompilers    rJÚget_default_compilerro«sk€ð€~Ü—‘ˆØÐÜ—<‘<ˆô„zØÜ/òшä H‰HW˜hÓ 'Ð 3܏x‰x˜ Ó(Ñ4àŠOð ð rL)Ú unixccompilerÚ UnixCCompilerzstandard UNIX-style compiler)Ú _msvccompilerÚ MSVCCompilerzMicrosoft Visual C++)ÚcygwinccompilerÚCygwinCCompilerz'Cygwin port of GNU C Compiler for Win32)rtÚMingw32CCompilerz(Mingw32 port of GNU C Compiler for Win32)Ú bcppcompilerÚ BCPPCompilerzBorland C++ Compiler)Ú zosccompilerÚ zOSCCompilerzIBM XL C/C++ Compilers)rareÚcygwinrgÚbcpprbcóŠ—ddlm}td„tj    «D««}||«}|j d«y)zyPrint list of available compilers (used by the "--help-compiler"
    options to "build", "build_ext", "build_clib").
    r)Ú FancyGetoptc3ó@K—|]}d|zdt|df–—Œy­w)z    compiler=Né)Úcompiler_class)rrns  rJr    z!show_compilers.<locals>.<genexpr>ås.èø€òà ð
xÑ     ¤~°hÑ'?ÀÑ'BÔCñùs‚zList of available compilers:N)Údistutils.fancy_getoptr~ÚsortedrrFÚ
print_help)r~Ú    compilersÚpretty_printers   rJÚshow_compilersr‡ÜsB€õ3äñä&×+Ñ+Ó-ôó€Iñ! Ó+€NØ×ÑÐ<Õ=rLcó’—|€tj}    |€ t|«}t|\}}}    d|z}t |«tj|}    t|    «|}
|
d||«S#t$rd|›d}|    |d|›dz}t |«‚wxYw#t$rtd|›d«‚t$rtd|›d    |›d«‚wxYw)
a[Generate an instance of some CCompiler subclass for the supplied
    platform/compiler combination.  'plat' defaults to 'os.name'
    (eg. 'posix', 'nt'), and 'compiler' defaults to the default compiler
    for that platform.  Currently only 'posix' and 'nt' are supported, and
    the default compilers are "traditional Unix interface" (UnixCCompiler
    class) and Visual C++ (MSVCCompiler class).  Note that it's perfectly
    possible to ask for a Unix compiler object under Windows, and a
    Microsoft compiler object under Unix -- if you supply a value for
    'compiler', 'plat' is ignored.
    Nz2don't know how to compile C/C++ code on platform 'ú'z with 'z
' compilerz
distutils.z1can't compile C/C++ code: unable to load module 'z0can't compile C/C++ code: unable to find class 'z ' in module ') r’rYrorrÄrÚ
__import__r=ÚmodulesÚvarsÚ ImportErrorr) Úplatrnr@r>r?Ú module_nameÚ
class_nameÚlong_descriptionr3ÚmoduleÚklasss            rJÚ new_compilerr”ís€ð" €|܏w‰wˆð    *Ø Ð Ü+¨DÓ1ˆHä6DÀXÑ6NÑ3ˆjÐ"2ð 
Ø" [Ñ0ˆ ܐ;ÔÜ—‘˜[Ñ)ˆÜV“ ˜ZÑ(ˆñ w Ó &Ð&øô1 ò*ØBÀ4À&ÈÐJˆØ Рؘ' ( ¨:Ð6Ñ6ˆCÜ$ SÓ)Ð)ð    *ûô ò
Ü"Ø?À ¸}ÈAÐ Nó
ð    
ô ò
Ü"Ø>¸z¸lðKØ%˜ að )ó
ð    
ð
ús”A*¯1BÁ*&BÂ3Ccó’—g}|D]§}t|t«rdt|«cxkrdksntd|›d«‚t|«dk(r|j    d|d›«Œ^t|«dk(sŒm|d€|j    d|d›«ŒŠ|j    dj
|Ž«Œ©|j d    „|D««|S)
aGenerate C pre-processor options (-D, -U, -I) as used by at least
    two types of compilers: the typical Unix compiler and Visual C++.
    'macros' is the usual thing, a list of 1- or 2-tuples, where (name,)
    means undefine (-U) macro 'name', and (name,value) means define (-D)
    macro 'name' to 'value'.  'include_dirs' is just a list of directory
    names to be added to the header file search path (-I).  Returns a list
    of command-line options suitable for either Unix compilers or Visual
    C++.
    rr€zbad macro definition 'z8': each element of 'macros' list must be a 1- or 2-tuplez-Urz-Dz-D{}={}c3ó&K—|]    }d|›–—Œ y­w)z-INr¢)rrps  rJr    z)gen_preprocess_options.<locals>.<genexpr>Ksèø€Ò6 #R˜u”:Ñ6ùs‚)rTrbrrdriÚformatÚextend)rBr:r›Úmacros    rJrr!sՀð.€GØò9ˆÜ˜5¤%Ô(¨Q´#°e³*Ô-AÀÔ-AÜØ(¨¨ð0HðHóð ô
ˆu‹:˜Š?Ø N‰N˜R  a¡˜z˜?Õ +Ü ‹Z˜1‹_ؐQ‰xÐØ—‘  E¨!¡H :˜Õ/ð
—‘Ð/˜y×/Ñ/°Ð7Õ8ð!9ð$ ‡NNÑ6¨Ô6Ô6Ø €NrLcó¼—|Dcgc]}|j|«‘Œ}}|D]+}|jt|j|«««Œ-|D]ƒ}tj
j |«\}}|r=|j|g|«}    |    r|j|    «ŒN|jd|›d«Œd|j|j|««Œ…|Scc}w)acGenerate linker options for searching library directories and
    linking with specific libraries.  'libraries' and 'library_dirs' are,
    respectively, lists of library names (not filenames!) and search
    directories.  Returns a list of command-line options suitable for use
    with some compiler (depending on the two format strings passed in).
    z"no library file corresponding to 'z' found (skipping)) rær˜rrér’r“r.rrirôrì)
rnr;rDrCrpÚlib_optsrëÚlib_dirÚlib_nameÚlib_files
          rJÚgen_lib_optionsrŸOs݀ð=IÖI°S×+Ñ+¨CÕ0ÐI€HÐIà#òSˆØ‰œ¨×(KÑ(KÈCÓ(PÓQÕRðSðò :ˆÜ Ÿg™gŸm™m¨CÓ0ш(Ù Ø×1Ñ1°7°)¸XÓFˆHÙØ—‘ Õ)à— ‘ Ø8¸¸Ð=OÐPõð O‰O˜H×3Ñ3°CÓ8Õ 9ð :ð €Oùò/Js…C)NN)rlrOrhrOrMrU)rMrN)NNFFF) rŽrOrnrOr@rLr>rLr?rLrMr))rBzIterable[_Macro]r:rVrMr9)
rnr)r;rVrDrVrCrVrMr9)<r\Ú
__future__rr’rrjr=róÚcollections.abcrrrrÚtypingrr    r
r r r Úmore_itertoolsrÚ_logrÚ    _modifiedrÚdir_utilrÚerrorsrrÚ    file_utilrrÚutilrrrrrrÚtyping_extensionsrrr r!rbrUr"r]r#r&r)rirorr‡r”rrŸr¢rLrJú<module>r«s–ðò1õ
#ã    ÛÛ    Û
ÛßIÓI÷÷õ+åÝ$Ý÷õ#Ýß3Ñ3÷ññ ßAÑAá
uÓ
€Cà˜% ™* e¨C°°s¸D°yÑ1AÐ,AÑ&BÐBÑC€ˆ    ÓCÙ KÐ'?Ô @€    ÙmÐ+GÔH€ ÷e1ñe1ðX#    Ðôð@ OØ Eðð
ð
EØ Eñ€ó$>ð$ØØØØð 1'Ø
ð1'àð1'ðð1'ðð    1'ð
ð 1'ð ó 1'ðh+Ø ð+Ø,9ð+àó+ð\#Øð#àð#ð(ð#ðð    #ð
ô #rL