blob: 53b5b171eefb69ceb7f219cecf376e6006315eca [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 *
17_imp_lock_held_impl(PyModuleDef *module);
18
19static PyObject *
20_imp_lock_held(PyModuleDef *module, PyObject *Py_UNUSED(ignored))
21{
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 *
38_imp_acquire_lock_impl(PyModuleDef *module);
39
40static PyObject *
41_imp_acquire_lock(PyModuleDef *module, PyObject *Py_UNUSED(ignored))
42{
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 *
58_imp_release_lock_impl(PyModuleDef *module);
59
60static PyObject *
61_imp_release_lock(PyModuleDef *module, PyObject *Py_UNUSED(ignored))
62{
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 \
78 {"_fix_co_filename", (PyCFunction)_imp__fix_co_filename, METH_VARARGS, _imp__fix_co_filename__doc__},
79
80static PyObject *
Larry Hastings89964c42015-04-14 18:07:59 -040081_imp__fix_co_filename_impl(PyModuleDef *module, PyCodeObject *code,
82 PyObject *path);
Brett Cannonfd4d0502014-05-30 11:21:14 -040083
84static PyObject *
85_imp__fix_co_filename(PyModuleDef *module, PyObject *args)
86{
87 PyObject *return_value = NULL;
88 PyCodeObject *code;
89 PyObject *path;
90
Serhiy Storchaka247789c2015-04-24 00:40:51 +030091 if (!PyArg_ParseTuple(args, "O!U:_fix_co_filename",
Brett Cannonfd4d0502014-05-30 11:21:14 -040092 &PyCode_Type, &code, &path))
93 goto exit;
94 return_value = _imp__fix_co_filename_impl(module, code, path);
95
96exit:
97 return return_value;
98}
99
Nick Coghland5cacbb2015-05-23 22:24:10 +1000100PyDoc_STRVAR(_imp_create_builtin__doc__,
101"create_builtin($module, spec, /)\n"
102"--\n"
103"\n"
104"Create an extension module.");
105
106#define _IMP_CREATE_BUILTIN_METHODDEF \
107 {"create_builtin", (PyCFunction)_imp_create_builtin, METH_O, _imp_create_builtin__doc__},
108
Brett Cannonfd4d0502014-05-30 11:21:14 -0400109PyDoc_STRVAR(_imp_extension_suffixes__doc__,
110"extension_suffixes($module, /)\n"
111"--\n"
112"\n"
113"Returns the list of file suffixes used to identify extension modules.");
114
115#define _IMP_EXTENSION_SUFFIXES_METHODDEF \
116 {"extension_suffixes", (PyCFunction)_imp_extension_suffixes, METH_NOARGS, _imp_extension_suffixes__doc__},
117
118static PyObject *
119_imp_extension_suffixes_impl(PyModuleDef *module);
120
121static PyObject *
122_imp_extension_suffixes(PyModuleDef *module, PyObject *Py_UNUSED(ignored))
123{
124 return _imp_extension_suffixes_impl(module);
125}
126
Brett Cannonfd4d0502014-05-30 11:21:14 -0400127PyDoc_STRVAR(_imp_init_frozen__doc__,
128"init_frozen($module, name, /)\n"
129"--\n"
130"\n"
131"Initializes a frozen module.");
132
133#define _IMP_INIT_FROZEN_METHODDEF \
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300134 {"init_frozen", (PyCFunction)_imp_init_frozen, METH_O, _imp_init_frozen__doc__},
Brett Cannonfd4d0502014-05-30 11:21:14 -0400135
136static PyObject *
137_imp_init_frozen_impl(PyModuleDef *module, PyObject *name);
138
139static PyObject *
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300140_imp_init_frozen(PyModuleDef *module, PyObject *arg)
Brett Cannonfd4d0502014-05-30 11:21:14 -0400141{
142 PyObject *return_value = NULL;
143 PyObject *name;
144
Serhiy Storchaka247789c2015-04-24 00:40:51 +0300145 if (!PyArg_Parse(arg, "U:init_frozen", &name))
Brett Cannonfd4d0502014-05-30 11:21:14 -0400146 goto exit;
147 return_value = _imp_init_frozen_impl(module, name);
148
149exit:
150 return return_value;
151}
152
153PyDoc_STRVAR(_imp_get_frozen_object__doc__,
154"get_frozen_object($module, name, /)\n"
155"--\n"
156"\n"
157"Create a code object for a frozen module.");
158
159#define _IMP_GET_FROZEN_OBJECT_METHODDEF \
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300160 {"get_frozen_object", (PyCFunction)_imp_get_frozen_object, METH_O, _imp_get_frozen_object__doc__},
Brett Cannonfd4d0502014-05-30 11:21:14 -0400161
162static PyObject *
163_imp_get_frozen_object_impl(PyModuleDef *module, PyObject *name);
164
165static PyObject *
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300166_imp_get_frozen_object(PyModuleDef *module, PyObject *arg)
Brett Cannonfd4d0502014-05-30 11:21:14 -0400167{
168 PyObject *return_value = NULL;
169 PyObject *name;
170
Serhiy Storchaka247789c2015-04-24 00:40:51 +0300171 if (!PyArg_Parse(arg, "U:get_frozen_object", &name))
Brett Cannonfd4d0502014-05-30 11:21:14 -0400172 goto exit;
173 return_value = _imp_get_frozen_object_impl(module, name);
174
175exit:
176 return return_value;
177}
178
179PyDoc_STRVAR(_imp_is_frozen_package__doc__,
180"is_frozen_package($module, name, /)\n"
181"--\n"
182"\n"
183"Returns True if the module name is of a frozen package.");
184
185#define _IMP_IS_FROZEN_PACKAGE_METHODDEF \
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300186 {"is_frozen_package", (PyCFunction)_imp_is_frozen_package, METH_O, _imp_is_frozen_package__doc__},
Brett Cannonfd4d0502014-05-30 11:21:14 -0400187
188static PyObject *
189_imp_is_frozen_package_impl(PyModuleDef *module, PyObject *name);
190
191static PyObject *
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300192_imp_is_frozen_package(PyModuleDef *module, PyObject *arg)
Brett Cannonfd4d0502014-05-30 11:21:14 -0400193{
194 PyObject *return_value = NULL;
195 PyObject *name;
196
Serhiy Storchaka247789c2015-04-24 00:40:51 +0300197 if (!PyArg_Parse(arg, "U:is_frozen_package", &name))
Brett Cannonfd4d0502014-05-30 11:21:14 -0400198 goto exit;
199 return_value = _imp_is_frozen_package_impl(module, name);
200
201exit:
202 return return_value;
203}
204
205PyDoc_STRVAR(_imp_is_builtin__doc__,
206"is_builtin($module, name, /)\n"
207"--\n"
208"\n"
209"Returns True if the module name corresponds to a built-in module.");
210
211#define _IMP_IS_BUILTIN_METHODDEF \
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300212 {"is_builtin", (PyCFunction)_imp_is_builtin, METH_O, _imp_is_builtin__doc__},
Brett Cannonfd4d0502014-05-30 11:21:14 -0400213
214static PyObject *
215_imp_is_builtin_impl(PyModuleDef *module, PyObject *name);
216
217static PyObject *
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300218_imp_is_builtin(PyModuleDef *module, PyObject *arg)
Brett Cannonfd4d0502014-05-30 11:21:14 -0400219{
220 PyObject *return_value = NULL;
221 PyObject *name;
222
Serhiy Storchaka247789c2015-04-24 00:40:51 +0300223 if (!PyArg_Parse(arg, "U:is_builtin", &name))
Brett Cannonfd4d0502014-05-30 11:21:14 -0400224 goto exit;
225 return_value = _imp_is_builtin_impl(module, name);
226
227exit:
228 return return_value;
229}
230
231PyDoc_STRVAR(_imp_is_frozen__doc__,
232"is_frozen($module, name, /)\n"
233"--\n"
234"\n"
235"Returns True if the module name corresponds to a frozen module.");
236
237#define _IMP_IS_FROZEN_METHODDEF \
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300238 {"is_frozen", (PyCFunction)_imp_is_frozen, METH_O, _imp_is_frozen__doc__},
Brett Cannonfd4d0502014-05-30 11:21:14 -0400239
240static PyObject *
241_imp_is_frozen_impl(PyModuleDef *module, PyObject *name);
242
243static PyObject *
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300244_imp_is_frozen(PyModuleDef *module, PyObject *arg)
Brett Cannonfd4d0502014-05-30 11:21:14 -0400245{
246 PyObject *return_value = NULL;
247 PyObject *name;
248
Serhiy Storchaka247789c2015-04-24 00:40:51 +0300249 if (!PyArg_Parse(arg, "U:is_frozen", &name))
Brett Cannonfd4d0502014-05-30 11:21:14 -0400250 goto exit;
251 return_value = _imp_is_frozen_impl(module, name);
252
253exit:
254 return return_value;
255}
256
257#if defined(HAVE_DYNAMIC_LOADING)
258
Nick Coghland5cacbb2015-05-23 22:24:10 +1000259PyDoc_STRVAR(_imp_create_dynamic__doc__,
260"create_dynamic($module, spec, file=None, /)\n"
Brett Cannonfd4d0502014-05-30 11:21:14 -0400261"--\n"
262"\n"
Nick Coghland5cacbb2015-05-23 22:24:10 +1000263"Create an extension module.");
Brett Cannonfd4d0502014-05-30 11:21:14 -0400264
Nick Coghland5cacbb2015-05-23 22:24:10 +1000265#define _IMP_CREATE_DYNAMIC_METHODDEF \
266 {"create_dynamic", (PyCFunction)_imp_create_dynamic, METH_VARARGS, _imp_create_dynamic__doc__},
Brett Cannonfd4d0502014-05-30 11:21:14 -0400267
268static PyObject *
Nick Coghland5cacbb2015-05-23 22:24:10 +1000269_imp_create_dynamic_impl(PyModuleDef *module, PyObject *spec, PyObject *file);
Brett Cannonfd4d0502014-05-30 11:21:14 -0400270
271static PyObject *
Nick Coghland5cacbb2015-05-23 22:24:10 +1000272_imp_create_dynamic(PyModuleDef *module, PyObject *args)
Brett Cannonfd4d0502014-05-30 11:21:14 -0400273{
274 PyObject *return_value = NULL;
Nick Coghland5cacbb2015-05-23 22:24:10 +1000275 PyObject *spec;
Brett Cannonfd4d0502014-05-30 11:21:14 -0400276 PyObject *file = NULL;
277
Nick Coghland5cacbb2015-05-23 22:24:10 +1000278 if (!PyArg_UnpackTuple(args, "create_dynamic",
279 1, 2,
280 &spec, &file))
Brett Cannonfd4d0502014-05-30 11:21:14 -0400281 goto exit;
Nick Coghland5cacbb2015-05-23 22:24:10 +1000282 return_value = _imp_create_dynamic_impl(module, spec, file);
Brett Cannonfd4d0502014-05-30 11:21:14 -0400283
284exit:
285 return return_value;
286}
287
288#endif /* defined(HAVE_DYNAMIC_LOADING) */
289
Nick Coghland5cacbb2015-05-23 22:24:10 +1000290#if defined(HAVE_DYNAMIC_LOADING)
291
292PyDoc_STRVAR(_imp_exec_dynamic__doc__,
293"exec_dynamic($module, mod, /)\n"
294"--\n"
295"\n"
296"Initialize an extension module.");
297
298#define _IMP_EXEC_DYNAMIC_METHODDEF \
299 {"exec_dynamic", (PyCFunction)_imp_exec_dynamic, METH_O, _imp_exec_dynamic__doc__},
300
301static int
302_imp_exec_dynamic_impl(PyModuleDef *module, PyObject *mod);
303
304static PyObject *
305_imp_exec_dynamic(PyModuleDef *module, PyObject *mod)
306{
307 PyObject *return_value = NULL;
308 int _return_value;
309
310 _return_value = _imp_exec_dynamic_impl(module, mod);
311 if ((_return_value == -1) && PyErr_Occurred())
312 goto exit;
313 return_value = PyLong_FromLong((long)_return_value);
314
315exit:
316 return return_value;
317}
318
319#endif /* defined(HAVE_DYNAMIC_LOADING) */
320
321#ifndef _IMP_CREATE_DYNAMIC_METHODDEF
322 #define _IMP_CREATE_DYNAMIC_METHODDEF
323#endif /* !defined(_IMP_CREATE_DYNAMIC_METHODDEF) */
324
325#ifndef _IMP_EXEC_DYNAMIC_METHODDEF
326 #define _IMP_EXEC_DYNAMIC_METHODDEF
327#endif /* !defined(_IMP_EXEC_DYNAMIC_METHODDEF) */
328/*[clinic end generated code: output=0f1059766dd58f88 input=a9049054013a1b77]*/