Coverage Report

Created: 2022-07-08 09:39

/home/mdboom/Work/builds/cpython/Python/clinic/import.c.h
Line
Count
Source (jump to first uncovered line)
1
/*[clinic input]
2
preserve
3
[clinic start generated code]*/
4
5
PyDoc_STRVAR(_imp_lock_held__doc__,
6
"lock_held($module, /)\n"
7
"--\n"
8
"\n"
9
"Return True if the import lock is currently held, else False.\n"
10
"\n"
11
"On platforms without threads, return False.");
12
13
#define _IMP_LOCK_HELD_METHODDEF    \
14
    {"lock_held", (PyCFunction)_imp_lock_held, METH_NOARGS, _imp_lock_held__doc__},
15
16
static PyObject *
17
_imp_lock_held_impl(PyObject *module);
18
19
static PyObject *
20
_imp_lock_held(PyObject *module, PyObject *Py_UNUSED(ignored))
21
{
22
    return _imp_lock_held_impl(module);
23
}
24
25
PyDoc_STRVAR(_imp_acquire_lock__doc__,
26
"acquire_lock($module, /)\n"
27
"--\n"
28
"\n"
29
"Acquires the interpreter\'s import lock for the current thread.\n"
30
"\n"
31
"This lock should be used by import hooks to ensure thread-safety when importing\n"
32
"modules. On platforms without threads, this function does nothing.");
33
34
#define _IMP_ACQUIRE_LOCK_METHODDEF    \
35
    {"acquire_lock", (PyCFunction)_imp_acquire_lock, METH_NOARGS, _imp_acquire_lock__doc__},
36
37
static PyObject *
38
_imp_acquire_lock_impl(PyObject *module);
39
40
static PyObject *
41
_imp_acquire_lock(PyObject *module, PyObject *Py_UNUSED(ignored))
42
{
43
    return _imp_acquire_lock_impl(module);
44
}
45
46
PyDoc_STRVAR(_imp_release_lock__doc__,
47
"release_lock($module, /)\n"
48
"--\n"
49
"\n"
50
"Release the interpreter\'s import lock.\n"
51
"\n"
52
"On platforms without threads, this function does nothing.");
53
54
#define _IMP_RELEASE_LOCK_METHODDEF    \
55
    {"release_lock", (PyCFunction)_imp_release_lock, METH_NOARGS, _imp_release_lock__doc__},
56
57
static PyObject *
58
_imp_release_lock_impl(PyObject *module);
59
60
static PyObject *
61
_imp_release_lock(PyObject *module, PyObject *Py_UNUSED(ignored))
62
{
63
    return _imp_release_lock_impl(module);
64
}
65
66
PyDoc_STRVAR(_imp__fix_co_filename__doc__,
67
"_fix_co_filename($module, code, path, /)\n"
68
"--\n"
69
"\n"
70
"Changes code.co_filename to specify the passed-in file path.\n"
71
"\n"
72
"  code\n"
73
"    Code object to change.\n"
74
"  path\n"
75
"    File path to use.");
76
77
#define _IMP__FIX_CO_FILENAME_METHODDEF    \
78
    {"_fix_co_filename", _PyCFunction_CAST(_imp__fix_co_filename), METH_FASTCALL, _imp__fix_co_filename__doc__},
79
80
static PyObject *
81
_imp__fix_co_filename_impl(PyObject *module, PyCodeObject *code,
82
                           PyObject *path);
83
84
static PyObject *
85
_imp__fix_co_filename(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
86
{
87
    PyObject *return_value = NULL;
88
    PyCodeObject *code;
89
    PyObject *path;
90
91
    if (!_PyArg_CheckPositional("_fix_co_filename", nargs, 2, 2)) {
92
        goto exit;
93
    }
94
    if (!PyObject_TypeCheck(args[0], &PyCode_Type)) {
  Branch (94:9): [True: 0, False: 4.62k]
95
        _PyArg_BadArgument("_fix_co_filename", "argument 1", (&PyCode_Type)->tp_name, args[0]);
96
        goto exit;
97
    }
98
    code = (PyCodeObject *)args[0];
99
    if (!PyUnicode_Check(args[1])) {
  Branch (99:9): [True: 0, False: 4.62k]
100
        _PyArg_BadArgument("_fix_co_filename", "argument 2", "str", args[1]);
101
        goto exit;
102
    }
103
    if (PyUnicode_READY(args[1]) == -1) {
  Branch (103:9): [True: 0, False: 4.62k]
104
        goto exit;
105
    }
106
    path = args[1];
107
    return_value = _imp__fix_co_filename_impl(module, code, path);
108
109
exit:
110
    return return_value;
111
}
112
113
PyDoc_STRVAR(_imp_create_builtin__doc__,
114
"create_builtin($module, spec, /)\n"
115
"--\n"
116
"\n"
117
"Create an extension module.");
118
119
#define _IMP_CREATE_BUILTIN_METHODDEF    \
120
    {"create_builtin", (PyCFunction)_imp_create_builtin, METH_O, _imp_create_builtin__doc__},
121
122
PyDoc_STRVAR(_imp_extension_suffixes__doc__,
123
"extension_suffixes($module, /)\n"
124
"--\n"
125
"\n"
126
"Returns the list of file suffixes used to identify extension modules.");
127
128
#define _IMP_EXTENSION_SUFFIXES_METHODDEF    \
129
    {"extension_suffixes", (PyCFunction)_imp_extension_suffixes, METH_NOARGS, _imp_extension_suffixes__doc__},
130
131
static PyObject *
132
_imp_extension_suffixes_impl(PyObject *module);
133
134
static PyObject *
135
_imp_extension_suffixes(PyObject *module, PyObject *Py_UNUSED(ignored))
136
{
137
    return _imp_extension_suffixes_impl(module);
138
}
139
140
PyDoc_STRVAR(_imp_init_frozen__doc__,
141
"init_frozen($module, name, /)\n"
142
"--\n"
143
"\n"
144
"Initializes a frozen module.");
145
146
#define _IMP_INIT_FROZEN_METHODDEF    \
147
    {"init_frozen", (PyCFunction)_imp_init_frozen, METH_O, _imp_init_frozen__doc__},
148
149
static PyObject *
150
_imp_init_frozen_impl(PyObject *module, PyObject *name);
151
152
static PyObject *
153
_imp_init_frozen(PyObject *module, PyObject *arg)
154
{
155
    PyObject *return_value = NULL;
156
    PyObject *name;
157
158
    if (!PyUnicode_Check(arg)) {
  Branch (158:9): [True: 0, False: 0]
159
        _PyArg_BadArgument("init_frozen", "argument", "str", arg);
160
        goto exit;
161
    }
162
    if (PyUnicode_READY(arg) == -1) {
  Branch (162:9): [True: 0, False: 0]
163
        goto exit;
164
    }
165
    name = arg;
166
    return_value = _imp_init_frozen_impl(module, name);
167
168
exit:
169
    return return_value;
170
}
171
172
PyDoc_STRVAR(_imp_find_frozen__doc__,
173
"find_frozen($module, name, /, *, withdata=False)\n"
174
"--\n"
175
"\n"
176
"Return info about the corresponding frozen module (if there is one) or None.\n"
177
"\n"
178
"The returned info (a 2-tuple):\n"
179
"\n"
180
" * data         the raw marshalled bytes\n"
181
" * is_package   whether or not it is a package\n"
182
" * origname     the originally frozen module\'s name, or None if not\n"
183
"                a stdlib module (this will usually be the same as\n"
184
"                the module\'s current name)");
185
186
#define _IMP_FIND_FROZEN_METHODDEF    \
187
    {"find_frozen", _PyCFunction_CAST(_imp_find_frozen), METH_FASTCALL|METH_KEYWORDS, _imp_find_frozen__doc__},
188
189
static PyObject *
190
_imp_find_frozen_impl(PyObject *module, PyObject *name, int withdata);
191
192
static PyObject *
193
_imp_find_frozen(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
194
{
195
    PyObject *return_value = NULL;
196
    static const char * const _keywords[] = {"", "withdata", NULL};
197
    static _PyArg_Parser _parser = {NULL, _keywords, "find_frozen", 0};
198
    PyObject *argsbuf[2];
199
    Py_ssize_t noptargs = nargs + (kwnames ? 
PyTuple_GET_SIZE0
(kwnames) : 0) - 1;
  Branch (199:36): [True: 0, False: 15.3k]
200
    PyObject *name;
201
    int withdata = 0;
202
203
    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
204
    if (!args) {
  Branch (204:9): [True: 0, False: 15.3k]
205
        goto exit;
206
    }
207
    if (!PyUnicode_Check(args[0])) {
  Branch (207:9): [True: 0, False: 15.3k]
208
        _PyArg_BadArgument("find_frozen", "argument 1", "str", args[0]);
209
        goto exit;
210
    }
211
    if (PyUnicode_READY(args[0]) == -1) {
  Branch (211:9): [True: 0, False: 15.3k]
212
        goto exit;
213
    }
214
    name = args[0];
215
    if (!noptargs) {
  Branch (215:9): [True: 15.3k, False: 0]
216
        goto skip_optional_kwonly;
217
    }
218
    withdata = PyObject_IsTrue(args[1]);
219
    if (withdata < 0) {
  Branch (219:9): [True: 0, False: 0]
220
        goto exit;
221
    }
222
skip_optional_kwonly:
223
    return_value = _imp_find_frozen_impl(module, name, withdata);
224
225
exit:
226
    return return_value;
227
}
228
229
PyDoc_STRVAR(_imp_get_frozen_object__doc__,
230
"get_frozen_object($module, name, data=None, /)\n"
231
"--\n"
232
"\n"
233
"Create a code object for a frozen module.");
234
235
#define _IMP_GET_FROZEN_OBJECT_METHODDEF    \
236
    {"get_frozen_object", _PyCFunction_CAST(_imp_get_frozen_object), METH_FASTCALL, _imp_get_frozen_object__doc__},
237
238
static PyObject *
239
_imp_get_frozen_object_impl(PyObject *module, PyObject *name,
240
                            PyObject *dataobj);
241
242
static PyObject *
243
_imp_get_frozen_object(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
244
{
245
    PyObject *return_value = NULL;
246
    PyObject *name;
247
    PyObject *dataobj = Py_None;
248
249
    if (!_PyArg_CheckPositional("get_frozen_object", nargs, 1, 2)) {
250
        goto exit;
251
    }
252
    if (!PyUnicode_Check(args[0])) {
  Branch (252:9): [True: 0, False: 3.36k]
253
        _PyArg_BadArgument("get_frozen_object", "argument 1", "str", args[0]);
254
        goto exit;
255
    }
256
    if (PyUnicode_READY(args[0]) == -1) {
  Branch (256:9): [True: 0, False: 3.36k]
257
        goto exit;
258
    }
259
    name = args[0];
260
    if (nargs < 2) {
  Branch (260:9): [True: 3.36k, False: 0]
261
        goto skip_optional;
262
    }
263
    dataobj = args[1];
264
skip_optional:
265
    return_value = _imp_get_frozen_object_impl(module, name, dataobj);
266
267
exit:
268
    return return_value;
269
}
270
271
PyDoc_STRVAR(_imp_is_frozen_package__doc__,
272
"is_frozen_package($module, name, /)\n"
273
"--\n"
274
"\n"
275
"Returns True if the module name is of a frozen package.");
276
277
#define _IMP_IS_FROZEN_PACKAGE_METHODDEF    \
278
    {"is_frozen_package", (PyCFunction)_imp_is_frozen_package, METH_O, _imp_is_frozen_package__doc__},
279
280
static PyObject *
281
_imp_is_frozen_package_impl(PyObject *module, PyObject *name);
282
283
static PyObject *
284
_imp_is_frozen_package(PyObject *module, PyObject *arg)
285
{
286
    PyObject *return_value = NULL;
287
    PyObject *name;
288
289
    if (!PyUnicode_Check(arg)) {
  Branch (289:9): [True: 0, False: 318]
290
        _PyArg_BadArgument("is_frozen_package", "argument", "str", arg);
291
        goto exit;
292
    }
293
    if (PyUnicode_READY(arg) == -1) {
  Branch (293:9): [True: 0, False: 318]
294
        goto exit;
295
    }
296
    name = arg;
297
    return_value = _imp_is_frozen_package_impl(module, name);
298
299
exit:
300
    return return_value;
301
}
302
303
PyDoc_STRVAR(_imp_is_builtin__doc__,
304
"is_builtin($module, name, /)\n"
305
"--\n"
306
"\n"
307
"Returns True if the module name corresponds to a built-in module.");
308
309
#define _IMP_IS_BUILTIN_METHODDEF    \
310
    {"is_builtin", (PyCFunction)_imp_is_builtin, METH_O, _imp_is_builtin__doc__},
311
312
static PyObject *
313
_imp_is_builtin_impl(PyObject *module, PyObject *name);
314
315
static PyObject *
316
_imp_is_builtin(PyObject *module, PyObject *arg)
317
{
318
    PyObject *return_value = NULL;
319
    PyObject *name;
320
321
    if (!PyUnicode_Check(arg)) {
  Branch (321:9): [True: 0, False: 15.5k]
322
        _PyArg_BadArgument("is_builtin", "argument", "str", arg);
323
        goto exit;
324
    }
325
    if (PyUnicode_READY(arg) == -1) {
  Branch (325:9): [True: 0, False: 15.5k]
326
        goto exit;
327
    }
328
    name = arg;
329
    return_value = _imp_is_builtin_impl(module, name);
330
331
exit:
332
    return return_value;
333
}
334
335
PyDoc_STRVAR(_imp_is_frozen__doc__,
336
"is_frozen($module, name, /)\n"
337
"--\n"
338
"\n"
339
"Returns True if the module name corresponds to a frozen module.");
340
341
#define _IMP_IS_FROZEN_METHODDEF    \
342
    {"is_frozen", (PyCFunction)_imp_is_frozen, METH_O, _imp_is_frozen__doc__},
343
344
static PyObject *
345
_imp_is_frozen_impl(PyObject *module, PyObject *name);
346
347
static PyObject *
348
_imp_is_frozen(PyObject *module, PyObject *arg)
349
{
350
    PyObject *return_value = NULL;
351
    PyObject *name;
352
353
    if (!PyUnicode_Check(arg)) {
  Branch (353:9): [True: 0, False: 45.1k]
354
        _PyArg_BadArgument("is_frozen", "argument", "str", arg);
355
        goto exit;
356
    }
357
    if (PyUnicode_READY(arg) == -1) {
  Branch (357:9): [True: 0, False: 45.1k]
358
        goto exit;
359
    }
360
    name = arg;
361
    return_value = _imp_is_frozen_impl(module, name);
362
363
exit:
364
    return return_value;
365
}
366
367
PyDoc_STRVAR(_imp__frozen_module_names__doc__,
368
"_frozen_module_names($module, /)\n"
369
"--\n"
370
"\n"
371
"Returns the list of available frozen modules.");
372
373
#define _IMP__FROZEN_MODULE_NAMES_METHODDEF    \
374
    {"_frozen_module_names", (PyCFunction)_imp__frozen_module_names, METH_NOARGS, _imp__frozen_module_names__doc__},
375
376
static PyObject *
377
_imp__frozen_module_names_impl(PyObject *module);
378
379
static PyObject *
380
_imp__frozen_module_names(PyObject *module, PyObject *Py_UNUSED(ignored))
381
{
382
    return _imp__frozen_module_names_impl(module);
383
}
384
385
PyDoc_STRVAR(_imp__override_frozen_modules_for_tests__doc__,
386
"_override_frozen_modules_for_tests($module, override, /)\n"
387
"--\n"
388
"\n"
389
"(internal-only) Override PyConfig.use_frozen_modules.\n"
390
"\n"
391
"(-1: \"off\", 1: \"on\", 0: no override)\n"
392
"See frozen_modules() in Lib/test/support/import_helper.py.");
393
394
#define _IMP__OVERRIDE_FROZEN_MODULES_FOR_TESTS_METHODDEF    \
395
    {"_override_frozen_modules_for_tests", (PyCFunction)_imp__override_frozen_modules_for_tests, METH_O, _imp__override_frozen_modules_for_tests__doc__},
396
397
static PyObject *
398
_imp__override_frozen_modules_for_tests_impl(PyObject *module, int override);
399
400
static PyObject *
401
_imp__override_frozen_modules_for_tests(PyObject *module, PyObject *arg)
402
{
403
    PyObject *return_value = NULL;
404
    int override;
405
406
    override = _PyLong_AsInt(arg);
407
    if (override == -1 && 
PyErr_Occurred()191
) {
  Branch (407:9): [True: 191, False: 553]
  Branch (407:27): [True: 0, False: 191]
408
        goto exit;
409
    }
410
    return_value = _imp__override_frozen_modules_for_tests_impl(module, override);
411
412
exit:
413
    return return_value;
414
}
415
416
#if defined(HAVE_DYNAMIC_LOADING)
417
418
PyDoc_STRVAR(_imp_create_dynamic__doc__,
419
"create_dynamic($module, spec, file=<unrepresentable>, /)\n"
420
"--\n"
421
"\n"
422
"Create an extension module.");
423
424
#define _IMP_CREATE_DYNAMIC_METHODDEF    \
425
    {"create_dynamic", _PyCFunction_CAST(_imp_create_dynamic), METH_FASTCALL, _imp_create_dynamic__doc__},
426
427
static PyObject *
428
_imp_create_dynamic_impl(PyObject *module, PyObject *spec, PyObject *file);
429
430
static PyObject *
431
_imp_create_dynamic(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
432
{
433
    PyObject *return_value = NULL;
434
    PyObject *spec;
435
    PyObject *file = NULL;
436
437
    if (!_PyArg_CheckPositional("create_dynamic", nargs, 1, 2)) {
438
        goto exit;
439
    }
440
    spec = args[0];
441
    if (nargs < 2) {
  Branch (441:9): [True: 362, False: 0]
442
        goto skip_optional;
443
    }
444
    file = args[1];
445
skip_optional:
446
    return_value = _imp_create_dynamic_impl(module, spec, file);
447
448
exit:
449
    return return_value;
450
}
451
452
#endif /* defined(HAVE_DYNAMIC_LOADING) */
453
454
#if defined(HAVE_DYNAMIC_LOADING)
455
456
PyDoc_STRVAR(_imp_exec_dynamic__doc__,
457
"exec_dynamic($module, mod, /)\n"
458
"--\n"
459
"\n"
460
"Initialize an extension module.");
461
462
#define _IMP_EXEC_DYNAMIC_METHODDEF    \
463
    {"exec_dynamic", (PyCFunction)_imp_exec_dynamic, METH_O, _imp_exec_dynamic__doc__},
464
465
static int
466
_imp_exec_dynamic_impl(PyObject *module, PyObject *mod);
467
468
static PyObject *
469
_imp_exec_dynamic(PyObject *module, PyObject *mod)
470
{
471
    PyObject *return_value = NULL;
472
    int _return_value;
473
474
    _return_value = _imp_exec_dynamic_impl(module, mod);
475
    if ((_return_value == -1) && 
PyErr_Occurred()6
) {
  Branch (475:9): [True: 6, False: 330]
  Branch (475:34): [True: 6, False: 0]
476
        goto exit;
477
    }
478
    return_value = PyLong_FromLong((long)_return_value);
479
480
exit:
481
    return return_value;
482
}
483
484
#endif /* defined(HAVE_DYNAMIC_LOADING) */
485
486
PyDoc_STRVAR(_imp_exec_builtin__doc__,
487
"exec_builtin($module, mod, /)\n"
488
"--\n"
489
"\n"
490
"Initialize a built-in module.");
491
492
#define _IMP_EXEC_BUILTIN_METHODDEF    \
493
    {"exec_builtin", (PyCFunction)_imp_exec_builtin, METH_O, _imp_exec_builtin__doc__},
494
495
static int
496
_imp_exec_builtin_impl(PyObject *module, PyObject *mod);
497
498
static PyObject *
499
_imp_exec_builtin(PyObject *module, PyObject *mod)
500
{
501
    PyObject *return_value = NULL;
502
    int _return_value;
503
504
    _return_value = _imp_exec_builtin_impl(module, mod);
505
    if ((_return_value == -1) && 
PyErr_Occurred()0
) {
  Branch (505:9): [True: 0, False: 3.37k]
  Branch (505:34): [True: 0, False: 0]
506
        goto exit;
507
    }
508
    return_value = PyLong_FromLong((long)_return_value);
509
510
exit:
511
    return return_value;
512
}
513
514
PyDoc_STRVAR(_imp_source_hash__doc__,
515
"source_hash($module, /, key, source)\n"
516
"--\n"
517
"\n");
518
519
#define _IMP_SOURCE_HASH_METHODDEF    \
520
    {"source_hash", _PyCFunction_CAST(_imp_source_hash), METH_FASTCALL|METH_KEYWORDS, _imp_source_hash__doc__},
521
522
static PyObject *
523
_imp_source_hash_impl(PyObject *module, long key, Py_buffer *source);
524
525
static PyObject *
526
_imp_source_hash(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
527
{
528
    PyObject *return_value = NULL;
529
    static const char * const _keywords[] = {"key", "source", NULL};
530
    static _PyArg_Parser _parser = {NULL, _keywords, "source_hash", 0};
531
    PyObject *argsbuf[2];
532
    long key;
533
    Py_buffer source = {NULL, NULL};
534
535
    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 2, 0, argsbuf);
536
    if (!args) {
  Branch (536:9): [True: 0, False: 173]
537
        goto exit;
538
    }
539
    key = PyLong_AsLong(args[0]);
540
    if (key == -1 && 
PyErr_Occurred()0
) {
  Branch (540:9): [True: 0, False: 173]
  Branch (540:22): [True: 0, False: 0]
541
        goto exit;
542
    }
543
    if (PyObject_GetBuffer(args[1], &source, PyBUF_SIMPLE) != 0) {
  Branch (543:9): [True: 0, False: 173]
544
        goto exit;
545
    }
546
    if (!PyBuffer_IsContiguous(&source, 'C')) {
  Branch (546:9): [True: 0, False: 173]
547
        _PyArg_BadArgument("source_hash", "argument 'source'", "contiguous buffer", args[1]);
548
        goto exit;
549
    }
550
    return_value = _imp_source_hash_impl(module, key, &source);
551
552
exit:
553
    /* Cleanup for source */
554
    if (source.obj) {
  Branch (554:9): [True: 173, False: 0]
555
       PyBuffer_Release(&source);
556
    }
557
558
    return return_value;
559
}
560
561
#ifndef _IMP_CREATE_DYNAMIC_METHODDEF
562
    #define _IMP_CREATE_DYNAMIC_METHODDEF
563
#endif /* !defined(_IMP_CREATE_DYNAMIC_METHODDEF) */
564
565
#ifndef _IMP_EXEC_DYNAMIC_METHODDEF
566
    #define _IMP_EXEC_DYNAMIC_METHODDEF
567
#endif /* !defined(_IMP_EXEC_DYNAMIC_METHODDEF) */
568
/*[clinic end generated code: output=8d0f4305b1d0714b input=a9049054013a1b77]*/