blob: 6ee91200c99f7b789a05e38e7b37bf8ef2333aeb [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 \
276 {"create_dynamic", (PyCFunction)_imp_create_dynamic, METH_VARARGS, _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 *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300282_imp_create_dynamic(PyObject *module, PyObject *args)
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
Nick Coghland5cacbb2015-05-23 22:24:10 +1000288 if (!PyArg_UnpackTuple(args, "create_dynamic",
289 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 }
Nick Coghland5cacbb2015-05-23 22:24:10 +1000293 return_value = _imp_create_dynamic_impl(module, spec, file);
Brett Cannonfd4d0502014-05-30 11:21:14 -0400294
295exit:
296 return return_value;
297}
298
299#endif /* defined(HAVE_DYNAMIC_LOADING) */
300
Nick Coghland5cacbb2015-05-23 22:24:10 +1000301#if defined(HAVE_DYNAMIC_LOADING)
302
303PyDoc_STRVAR(_imp_exec_dynamic__doc__,
304"exec_dynamic($module, mod, /)\n"
305"--\n"
306"\n"
307"Initialize an extension module.");
308
309#define _IMP_EXEC_DYNAMIC_METHODDEF \
310 {"exec_dynamic", (PyCFunction)_imp_exec_dynamic, METH_O, _imp_exec_dynamic__doc__},
311
312static int
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300313_imp_exec_dynamic_impl(PyObject *module, PyObject *mod);
Nick Coghland5cacbb2015-05-23 22:24:10 +1000314
315static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300316_imp_exec_dynamic(PyObject *module, PyObject *mod)
Nick Coghland5cacbb2015-05-23 22:24:10 +1000317{
318 PyObject *return_value = NULL;
319 int _return_value;
320
321 _return_value = _imp_exec_dynamic_impl(module, mod);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300322 if ((_return_value == -1) && PyErr_Occurred()) {
Nick Coghland5cacbb2015-05-23 22:24:10 +1000323 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300324 }
Nick Coghland5cacbb2015-05-23 22:24:10 +1000325 return_value = PyLong_FromLong((long)_return_value);
326
327exit:
328 return return_value;
329}
330
331#endif /* defined(HAVE_DYNAMIC_LOADING) */
332
Larry Hastings1df0b352015-08-24 19:53:56 -0700333PyDoc_STRVAR(_imp_exec_builtin__doc__,
334"exec_builtin($module, mod, /)\n"
335"--\n"
336"\n"
Larry Hastings01b1ff62015-08-24 20:23:27 -0700337"Initialize a built-in module.");
Larry Hastings1df0b352015-08-24 19:53:56 -0700338
339#define _IMP_EXEC_BUILTIN_METHODDEF \
340 {"exec_builtin", (PyCFunction)_imp_exec_builtin, METH_O, _imp_exec_builtin__doc__},
341
342static int
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300343_imp_exec_builtin_impl(PyObject *module, PyObject *mod);
Larry Hastings1df0b352015-08-24 19:53:56 -0700344
345static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300346_imp_exec_builtin(PyObject *module, PyObject *mod)
Larry Hastings1df0b352015-08-24 19:53:56 -0700347{
348 PyObject *return_value = NULL;
349 int _return_value;
350
351 _return_value = _imp_exec_builtin_impl(module, mod);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300352 if ((_return_value == -1) && PyErr_Occurred()) {
Larry Hastings1df0b352015-08-24 19:53:56 -0700353 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300354 }
Larry Hastings1df0b352015-08-24 19:53:56 -0700355 return_value = PyLong_FromLong((long)_return_value);
356
357exit:
358 return return_value;
359}
360
Nick Coghland5cacbb2015-05-23 22:24:10 +1000361#ifndef _IMP_CREATE_DYNAMIC_METHODDEF
362 #define _IMP_CREATE_DYNAMIC_METHODDEF
363#endif /* !defined(_IMP_CREATE_DYNAMIC_METHODDEF) */
364
365#ifndef _IMP_EXEC_DYNAMIC_METHODDEF
366 #define _IMP_EXEC_DYNAMIC_METHODDEF
367#endif /* !defined(_IMP_EXEC_DYNAMIC_METHODDEF) */
Victor Stinner259f0e42017-01-17 01:35:17 +0100368/*[clinic end generated code: output=5a3f012344950548 input=a9049054013a1b77]*/