blob: 0165b7c4e19324254ecbae168a6212e8be141af8 [file] [log] [blame]
Brett Cannonfd4d0502014-05-30 11:21:14 -04001/*[clinic input]
2preserve
3[clinic start generated code]*/
4
5PyDoc_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
16static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +030017_imp_lock_held_impl(PyObject *module);
Brett Cannonfd4d0502014-05-30 11:21:14 -040018
19static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +030020_imp_lock_held(PyObject *module, PyObject *Py_UNUSED(ignored))
Brett Cannonfd4d0502014-05-30 11:21:14 -040021{
22 return _imp_lock_held_impl(module);
23}
24
25PyDoc_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
37static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +030038_imp_acquire_lock_impl(PyObject *module);
Brett Cannonfd4d0502014-05-30 11:21:14 -040039
40static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +030041_imp_acquire_lock(PyObject *module, PyObject *Py_UNUSED(ignored))
Brett Cannonfd4d0502014-05-30 11:21:14 -040042{
43 return _imp_acquire_lock_impl(module);
44}
45
46PyDoc_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
57static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +030058_imp_release_lock_impl(PyObject *module);
Brett Cannonfd4d0502014-05-30 11:21:14 -040059
60static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +030061_imp_release_lock(PyObject *module, PyObject *Py_UNUSED(ignored))
Brett Cannonfd4d0502014-05-30 11:21:14 -040062{
63 return _imp_release_lock_impl(module);
64}
65
66PyDoc_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 \
Victor Stinner259f0e42017-01-17 01:35:17 +010078 {"_fix_co_filename", (PyCFunction)_imp__fix_co_filename, METH_FASTCALL, _imp__fix_co_filename__doc__},
Brett Cannonfd4d0502014-05-30 11:21:14 -040079
80static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +030081_imp__fix_co_filename_impl(PyObject *module, PyCodeObject *code,
Larry Hastings89964c42015-04-14 18:07:59 -040082 PyObject *path);
Brett Cannonfd4d0502014-05-30 11:21:14 -040083
84static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +010085_imp__fix_co_filename(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Brett Cannonfd4d0502014-05-30 11:21:14 -040086{
87 PyObject *return_value = NULL;
88 PyCodeObject *code;
89 PyObject *path;
90
Victor Stinner259f0e42017-01-17 01:35:17 +010091 if (!_PyArg_ParseStack(args, nargs, "O!U:_fix_co_filename",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +030092 &PyCode_Type, &code, &path)) {
Brett Cannonfd4d0502014-05-30 11:21:14 -040093 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +030094 }
Victor Stinner259f0e42017-01-17 01:35:17 +010095
96 if (!_PyArg_NoStackKeywords("_fix_co_filename", kwnames)) {
97 goto exit;
98 }
Brett Cannonfd4d0502014-05-30 11:21:14 -040099 return_value = _imp__fix_co_filename_impl(module, code, path);
100
101exit:
102 return return_value;
103}
104
Nick Coghland5cacbb2015-05-23 22:24:10 +1000105PyDoc_STRVAR(_imp_create_builtin__doc__,
106"create_builtin($module, spec, /)\n"
107"--\n"
108"\n"
109"Create an extension module.");
110
111#define _IMP_CREATE_BUILTIN_METHODDEF \
112 {"create_builtin", (PyCFunction)_imp_create_builtin, METH_O, _imp_create_builtin__doc__},
113
Brett Cannonfd4d0502014-05-30 11:21:14 -0400114PyDoc_STRVAR(_imp_extension_suffixes__doc__,
115"extension_suffixes($module, /)\n"
116"--\n"
117"\n"
118"Returns the list of file suffixes used to identify extension modules.");
119
120#define _IMP_EXTENSION_SUFFIXES_METHODDEF \
121 {"extension_suffixes", (PyCFunction)_imp_extension_suffixes, METH_NOARGS, _imp_extension_suffixes__doc__},
122
123static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300124_imp_extension_suffixes_impl(PyObject *module);
Brett Cannonfd4d0502014-05-30 11:21:14 -0400125
126static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300127_imp_extension_suffixes(PyObject *module, PyObject *Py_UNUSED(ignored))
Brett Cannonfd4d0502014-05-30 11:21:14 -0400128{
129 return _imp_extension_suffixes_impl(module);
130}
131
Brett Cannonfd4d0502014-05-30 11:21:14 -0400132PyDoc_STRVAR(_imp_init_frozen__doc__,
133"init_frozen($module, name, /)\n"
134"--\n"
135"\n"
136"Initializes a frozen module.");
137
138#define _IMP_INIT_FROZEN_METHODDEF \
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300139 {"init_frozen", (PyCFunction)_imp_init_frozen, METH_O, _imp_init_frozen__doc__},
Brett Cannonfd4d0502014-05-30 11:21:14 -0400140
141static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300142_imp_init_frozen_impl(PyObject *module, PyObject *name);
Brett Cannonfd4d0502014-05-30 11:21:14 -0400143
144static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300145_imp_init_frozen(PyObject *module, PyObject *arg)
Brett Cannonfd4d0502014-05-30 11:21:14 -0400146{
147 PyObject *return_value = NULL;
148 PyObject *name;
149
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300150 if (!PyArg_Parse(arg, "U:init_frozen", &name)) {
Brett Cannonfd4d0502014-05-30 11:21:14 -0400151 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300152 }
Brett Cannonfd4d0502014-05-30 11:21:14 -0400153 return_value = _imp_init_frozen_impl(module, name);
154
155exit:
156 return return_value;
157}
158
159PyDoc_STRVAR(_imp_get_frozen_object__doc__,
160"get_frozen_object($module, name, /)\n"
161"--\n"
162"\n"
163"Create a code object for a frozen module.");
164
165#define _IMP_GET_FROZEN_OBJECT_METHODDEF \
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300166 {"get_frozen_object", (PyCFunction)_imp_get_frozen_object, METH_O, _imp_get_frozen_object__doc__},
Brett Cannonfd4d0502014-05-30 11:21:14 -0400167
168static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300169_imp_get_frozen_object_impl(PyObject *module, PyObject *name);
Brett Cannonfd4d0502014-05-30 11:21:14 -0400170
171static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300172_imp_get_frozen_object(PyObject *module, PyObject *arg)
Brett Cannonfd4d0502014-05-30 11:21:14 -0400173{
174 PyObject *return_value = NULL;
175 PyObject *name;
176
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300177 if (!PyArg_Parse(arg, "U:get_frozen_object", &name)) {
Brett Cannonfd4d0502014-05-30 11:21:14 -0400178 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300179 }
Brett Cannonfd4d0502014-05-30 11:21:14 -0400180 return_value = _imp_get_frozen_object_impl(module, name);
181
182exit:
183 return return_value;
184}
185
186PyDoc_STRVAR(_imp_is_frozen_package__doc__,
187"is_frozen_package($module, name, /)\n"
188"--\n"
189"\n"
190"Returns True if the module name is of a frozen package.");
191
192#define _IMP_IS_FROZEN_PACKAGE_METHODDEF \
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300193 {"is_frozen_package", (PyCFunction)_imp_is_frozen_package, METH_O, _imp_is_frozen_package__doc__},
Brett Cannonfd4d0502014-05-30 11:21:14 -0400194
195static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300196_imp_is_frozen_package_impl(PyObject *module, PyObject *name);
Brett Cannonfd4d0502014-05-30 11:21:14 -0400197
198static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300199_imp_is_frozen_package(PyObject *module, PyObject *arg)
Brett Cannonfd4d0502014-05-30 11:21:14 -0400200{
201 PyObject *return_value = NULL;
202 PyObject *name;
203
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300204 if (!PyArg_Parse(arg, "U:is_frozen_package", &name)) {
Brett Cannonfd4d0502014-05-30 11:21:14 -0400205 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300206 }
Brett Cannonfd4d0502014-05-30 11:21:14 -0400207 return_value = _imp_is_frozen_package_impl(module, name);
208
209exit:
210 return return_value;
211}
212
213PyDoc_STRVAR(_imp_is_builtin__doc__,
214"is_builtin($module, name, /)\n"
215"--\n"
216"\n"
217"Returns True if the module name corresponds to a built-in module.");
218
219#define _IMP_IS_BUILTIN_METHODDEF \
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300220 {"is_builtin", (PyCFunction)_imp_is_builtin, METH_O, _imp_is_builtin__doc__},
Brett Cannonfd4d0502014-05-30 11:21:14 -0400221
222static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300223_imp_is_builtin_impl(PyObject *module, PyObject *name);
Brett Cannonfd4d0502014-05-30 11:21:14 -0400224
225static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300226_imp_is_builtin(PyObject *module, PyObject *arg)
Brett Cannonfd4d0502014-05-30 11:21:14 -0400227{
228 PyObject *return_value = NULL;
229 PyObject *name;
230
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300231 if (!PyArg_Parse(arg, "U:is_builtin", &name)) {
Brett Cannonfd4d0502014-05-30 11:21:14 -0400232 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300233 }
Brett Cannonfd4d0502014-05-30 11:21:14 -0400234 return_value = _imp_is_builtin_impl(module, name);
235
236exit:
237 return return_value;
238}
239
240PyDoc_STRVAR(_imp_is_frozen__doc__,
241"is_frozen($module, name, /)\n"
242"--\n"
243"\n"
244"Returns True if the module name corresponds to a frozen module.");
245
246#define _IMP_IS_FROZEN_METHODDEF \
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300247 {"is_frozen", (PyCFunction)_imp_is_frozen, METH_O, _imp_is_frozen__doc__},
Brett Cannonfd4d0502014-05-30 11:21:14 -0400248
249static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300250_imp_is_frozen_impl(PyObject *module, PyObject *name);
Brett Cannonfd4d0502014-05-30 11:21:14 -0400251
252static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300253_imp_is_frozen(PyObject *module, PyObject *arg)
Brett Cannonfd4d0502014-05-30 11:21:14 -0400254{
255 PyObject *return_value = NULL;
256 PyObject *name;
257
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300258 if (!PyArg_Parse(arg, "U:is_frozen", &name)) {
Brett Cannonfd4d0502014-05-30 11:21:14 -0400259 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300260 }
Brett Cannonfd4d0502014-05-30 11:21:14 -0400261 return_value = _imp_is_frozen_impl(module, name);
262
263exit:
264 return return_value;
265}
266
267#if defined(HAVE_DYNAMIC_LOADING)
268
Nick Coghland5cacbb2015-05-23 22:24:10 +1000269PyDoc_STRVAR(_imp_create_dynamic__doc__,
270"create_dynamic($module, spec, file=None, /)\n"
Brett Cannonfd4d0502014-05-30 11:21:14 -0400271"--\n"
272"\n"
Nick Coghland5cacbb2015-05-23 22:24:10 +1000273"Create an extension module.");
Brett Cannonfd4d0502014-05-30 11:21:14 -0400274
Nick Coghland5cacbb2015-05-23 22:24:10 +1000275#define _IMP_CREATE_DYNAMIC_METHODDEF \
Victor Stinner0c4a8282017-01-17 02:21:47 +0100276 {"create_dynamic", (PyCFunction)_imp_create_dynamic, METH_FASTCALL, _imp_create_dynamic__doc__},
Brett Cannonfd4d0502014-05-30 11:21:14 -0400277
278static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300279_imp_create_dynamic_impl(PyObject *module, PyObject *spec, PyObject *file);
Brett Cannonfd4d0502014-05-30 11:21:14 -0400280
281static PyObject *
Victor Stinner0c4a8282017-01-17 02:21:47 +0100282_imp_create_dynamic(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Brett Cannonfd4d0502014-05-30 11:21:14 -0400283{
284 PyObject *return_value = NULL;
Nick Coghland5cacbb2015-05-23 22:24:10 +1000285 PyObject *spec;
Brett Cannonfd4d0502014-05-30 11:21:14 -0400286 PyObject *file = NULL;
287
Victor Stinner0c4a8282017-01-17 02:21:47 +0100288 if (!_PyArg_UnpackStack(args, nargs, "create_dynamic",
Nick Coghland5cacbb2015-05-23 22:24:10 +1000289 1, 2,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300290 &spec, &file)) {
Brett Cannonfd4d0502014-05-30 11:21:14 -0400291 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300292 }
Victor Stinner0c4a8282017-01-17 02:21:47 +0100293
294 if (!_PyArg_NoStackKeywords("create_dynamic", kwnames)) {
295 goto exit;
296 }
Nick Coghland5cacbb2015-05-23 22:24:10 +1000297 return_value = _imp_create_dynamic_impl(module, spec, file);
Brett Cannonfd4d0502014-05-30 11:21:14 -0400298
299exit:
300 return return_value;
301}
302
303#endif /* defined(HAVE_DYNAMIC_LOADING) */
304
Nick Coghland5cacbb2015-05-23 22:24:10 +1000305#if defined(HAVE_DYNAMIC_LOADING)
306
307PyDoc_STRVAR(_imp_exec_dynamic__doc__,
308"exec_dynamic($module, mod, /)\n"
309"--\n"
310"\n"
311"Initialize an extension module.");
312
313#define _IMP_EXEC_DYNAMIC_METHODDEF \
314 {"exec_dynamic", (PyCFunction)_imp_exec_dynamic, METH_O, _imp_exec_dynamic__doc__},
315
316static int
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300317_imp_exec_dynamic_impl(PyObject *module, PyObject *mod);
Nick Coghland5cacbb2015-05-23 22:24:10 +1000318
319static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300320_imp_exec_dynamic(PyObject *module, PyObject *mod)
Nick Coghland5cacbb2015-05-23 22:24:10 +1000321{
322 PyObject *return_value = NULL;
323 int _return_value;
324
325 _return_value = _imp_exec_dynamic_impl(module, mod);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300326 if ((_return_value == -1) && PyErr_Occurred()) {
Nick Coghland5cacbb2015-05-23 22:24:10 +1000327 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300328 }
Nick Coghland5cacbb2015-05-23 22:24:10 +1000329 return_value = PyLong_FromLong((long)_return_value);
330
331exit:
332 return return_value;
333}
334
335#endif /* defined(HAVE_DYNAMIC_LOADING) */
336
Larry Hastings1df0b352015-08-24 19:53:56 -0700337PyDoc_STRVAR(_imp_exec_builtin__doc__,
338"exec_builtin($module, mod, /)\n"
339"--\n"
340"\n"
Larry Hastings01b1ff62015-08-24 20:23:27 -0700341"Initialize a built-in module.");
Larry Hastings1df0b352015-08-24 19:53:56 -0700342
343#define _IMP_EXEC_BUILTIN_METHODDEF \
344 {"exec_builtin", (PyCFunction)_imp_exec_builtin, METH_O, _imp_exec_builtin__doc__},
345
346static int
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300347_imp_exec_builtin_impl(PyObject *module, PyObject *mod);
Larry Hastings1df0b352015-08-24 19:53:56 -0700348
349static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300350_imp_exec_builtin(PyObject *module, PyObject *mod)
Larry Hastings1df0b352015-08-24 19:53:56 -0700351{
352 PyObject *return_value = NULL;
353 int _return_value;
354
355 _return_value = _imp_exec_builtin_impl(module, mod);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300356 if ((_return_value == -1) && PyErr_Occurred()) {
Larry Hastings1df0b352015-08-24 19:53:56 -0700357 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300358 }
Larry Hastings1df0b352015-08-24 19:53:56 -0700359 return_value = PyLong_FromLong((long)_return_value);
360
361exit:
362 return return_value;
363}
364
Nick Coghland5cacbb2015-05-23 22:24:10 +1000365#ifndef _IMP_CREATE_DYNAMIC_METHODDEF
366 #define _IMP_CREATE_DYNAMIC_METHODDEF
367#endif /* !defined(_IMP_CREATE_DYNAMIC_METHODDEF) */
368
369#ifndef _IMP_EXEC_DYNAMIC_METHODDEF
370 #define _IMP_EXEC_DYNAMIC_METHODDEF
371#endif /* !defined(_IMP_EXEC_DYNAMIC_METHODDEF) */
Victor Stinner0c4a8282017-01-17 02:21:47 +0100372/*[clinic end generated code: output=c1d0e65d04114958 input=a9049054013a1b77]*/