blob: 9d28f3afa2b9a499246a79414d4be96c2d6a5759 [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
91 if (!PyArg_ParseTuple(args,
92 "O!U:_fix_co_filename",
93 &PyCode_Type, &code, &path))
94 goto exit;
95 return_value = _imp__fix_co_filename_impl(module, code, path);
96
97exit:
98 return return_value;
99}
100
101PyDoc_STRVAR(_imp_extension_suffixes__doc__,
102"extension_suffixes($module, /)\n"
103"--\n"
104"\n"
105"Returns the list of file suffixes used to identify extension modules.");
106
107#define _IMP_EXTENSION_SUFFIXES_METHODDEF \
108 {"extension_suffixes", (PyCFunction)_imp_extension_suffixes, METH_NOARGS, _imp_extension_suffixes__doc__},
109
110static PyObject *
111_imp_extension_suffixes_impl(PyModuleDef *module);
112
113static PyObject *
114_imp_extension_suffixes(PyModuleDef *module, PyObject *Py_UNUSED(ignored))
115{
116 return _imp_extension_suffixes_impl(module);
117}
118
119PyDoc_STRVAR(_imp_init_builtin__doc__,
120"init_builtin($module, name, /)\n"
121"--\n"
122"\n"
123"Initializes a built-in module.");
124
125#define _IMP_INIT_BUILTIN_METHODDEF \
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300126 {"init_builtin", (PyCFunction)_imp_init_builtin, METH_O, _imp_init_builtin__doc__},
Brett Cannonfd4d0502014-05-30 11:21:14 -0400127
128static PyObject *
129_imp_init_builtin_impl(PyModuleDef *module, PyObject *name);
130
131static PyObject *
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300132_imp_init_builtin(PyModuleDef *module, PyObject *arg)
Brett Cannonfd4d0502014-05-30 11:21:14 -0400133{
134 PyObject *return_value = NULL;
135 PyObject *name;
136
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300137 if (!PyArg_Parse(arg,
Brett Cannonfd4d0502014-05-30 11:21:14 -0400138 "U:init_builtin",
139 &name))
140 goto exit;
141 return_value = _imp_init_builtin_impl(module, name);
142
143exit:
144 return return_value;
145}
146
147PyDoc_STRVAR(_imp_init_frozen__doc__,
148"init_frozen($module, name, /)\n"
149"--\n"
150"\n"
151"Initializes a frozen module.");
152
153#define _IMP_INIT_FROZEN_METHODDEF \
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300154 {"init_frozen", (PyCFunction)_imp_init_frozen, METH_O, _imp_init_frozen__doc__},
Brett Cannonfd4d0502014-05-30 11:21:14 -0400155
156static PyObject *
157_imp_init_frozen_impl(PyModuleDef *module, PyObject *name);
158
159static PyObject *
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300160_imp_init_frozen(PyModuleDef *module, PyObject *arg)
Brett Cannonfd4d0502014-05-30 11:21:14 -0400161{
162 PyObject *return_value = NULL;
163 PyObject *name;
164
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300165 if (!PyArg_Parse(arg,
Brett Cannonfd4d0502014-05-30 11:21:14 -0400166 "U:init_frozen",
167 &name))
168 goto exit;
169 return_value = _imp_init_frozen_impl(module, name);
170
171exit:
172 return return_value;
173}
174
175PyDoc_STRVAR(_imp_get_frozen_object__doc__,
176"get_frozen_object($module, name, /)\n"
177"--\n"
178"\n"
179"Create a code object for a frozen module.");
180
181#define _IMP_GET_FROZEN_OBJECT_METHODDEF \
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300182 {"get_frozen_object", (PyCFunction)_imp_get_frozen_object, METH_O, _imp_get_frozen_object__doc__},
Brett Cannonfd4d0502014-05-30 11:21:14 -0400183
184static PyObject *
185_imp_get_frozen_object_impl(PyModuleDef *module, PyObject *name);
186
187static PyObject *
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300188_imp_get_frozen_object(PyModuleDef *module, PyObject *arg)
Brett Cannonfd4d0502014-05-30 11:21:14 -0400189{
190 PyObject *return_value = NULL;
191 PyObject *name;
192
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300193 if (!PyArg_Parse(arg,
Brett Cannonfd4d0502014-05-30 11:21:14 -0400194 "U:get_frozen_object",
195 &name))
196 goto exit;
197 return_value = _imp_get_frozen_object_impl(module, name);
198
199exit:
200 return return_value;
201}
202
203PyDoc_STRVAR(_imp_is_frozen_package__doc__,
204"is_frozen_package($module, name, /)\n"
205"--\n"
206"\n"
207"Returns True if the module name is of a frozen package.");
208
209#define _IMP_IS_FROZEN_PACKAGE_METHODDEF \
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300210 {"is_frozen_package", (PyCFunction)_imp_is_frozen_package, METH_O, _imp_is_frozen_package__doc__},
Brett Cannonfd4d0502014-05-30 11:21:14 -0400211
212static PyObject *
213_imp_is_frozen_package_impl(PyModuleDef *module, PyObject *name);
214
215static PyObject *
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300216_imp_is_frozen_package(PyModuleDef *module, PyObject *arg)
Brett Cannonfd4d0502014-05-30 11:21:14 -0400217{
218 PyObject *return_value = NULL;
219 PyObject *name;
220
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300221 if (!PyArg_Parse(arg,
Brett Cannonfd4d0502014-05-30 11:21:14 -0400222 "U:is_frozen_package",
223 &name))
224 goto exit;
225 return_value = _imp_is_frozen_package_impl(module, name);
226
227exit:
228 return return_value;
229}
230
231PyDoc_STRVAR(_imp_is_builtin__doc__,
232"is_builtin($module, name, /)\n"
233"--\n"
234"\n"
235"Returns True if the module name corresponds to a built-in module.");
236
237#define _IMP_IS_BUILTIN_METHODDEF \
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300238 {"is_builtin", (PyCFunction)_imp_is_builtin, METH_O, _imp_is_builtin__doc__},
Brett Cannonfd4d0502014-05-30 11:21:14 -0400239
240static PyObject *
241_imp_is_builtin_impl(PyModuleDef *module, PyObject *name);
242
243static PyObject *
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300244_imp_is_builtin(PyModuleDef *module, PyObject *arg)
Brett Cannonfd4d0502014-05-30 11:21:14 -0400245{
246 PyObject *return_value = NULL;
247 PyObject *name;
248
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300249 if (!PyArg_Parse(arg,
Brett Cannonfd4d0502014-05-30 11:21:14 -0400250 "U:is_builtin",
251 &name))
252 goto exit;
253 return_value = _imp_is_builtin_impl(module, name);
254
255exit:
256 return return_value;
257}
258
259PyDoc_STRVAR(_imp_is_frozen__doc__,
260"is_frozen($module, name, /)\n"
261"--\n"
262"\n"
263"Returns True if the module name corresponds to a frozen module.");
264
265#define _IMP_IS_FROZEN_METHODDEF \
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300266 {"is_frozen", (PyCFunction)_imp_is_frozen, METH_O, _imp_is_frozen__doc__},
Brett Cannonfd4d0502014-05-30 11:21:14 -0400267
268static PyObject *
269_imp_is_frozen_impl(PyModuleDef *module, PyObject *name);
270
271static PyObject *
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300272_imp_is_frozen(PyModuleDef *module, PyObject *arg)
Brett Cannonfd4d0502014-05-30 11:21:14 -0400273{
274 PyObject *return_value = NULL;
275 PyObject *name;
276
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300277 if (!PyArg_Parse(arg,
Brett Cannonfd4d0502014-05-30 11:21:14 -0400278 "U:is_frozen",
279 &name))
280 goto exit;
281 return_value = _imp_is_frozen_impl(module, name);
282
283exit:
284 return return_value;
285}
286
287#if defined(HAVE_DYNAMIC_LOADING)
288
289PyDoc_STRVAR(_imp_load_dynamic__doc__,
290"load_dynamic($module, name, path, file=None, /)\n"
291"--\n"
292"\n"
293"Loads an extension module.");
294
295#define _IMP_LOAD_DYNAMIC_METHODDEF \
296 {"load_dynamic", (PyCFunction)_imp_load_dynamic, METH_VARARGS, _imp_load_dynamic__doc__},
297
298static PyObject *
Larry Hastings89964c42015-04-14 18:07:59 -0400299_imp_load_dynamic_impl(PyModuleDef *module, PyObject *name, PyObject *path,
300 PyObject *file);
Brett Cannonfd4d0502014-05-30 11:21:14 -0400301
302static PyObject *
303_imp_load_dynamic(PyModuleDef *module, PyObject *args)
304{
305 PyObject *return_value = NULL;
306 PyObject *name;
307 PyObject *path;
308 PyObject *file = NULL;
309
310 if (!PyArg_ParseTuple(args,
311 "UO&|O:load_dynamic",
312 &name, PyUnicode_FSDecoder, &path, &file))
313 goto exit;
314 return_value = _imp_load_dynamic_impl(module, name, path, file);
315
316exit:
317 return return_value;
318}
319
320#endif /* defined(HAVE_DYNAMIC_LOADING) */
321
322#ifndef _IMP_LOAD_DYNAMIC_METHODDEF
323 #define _IMP_LOAD_DYNAMIC_METHODDEF
324#endif /* !defined(_IMP_LOAD_DYNAMIC_METHODDEF) */
Larry Hastings89964c42015-04-14 18:07:59 -0400325/*[clinic end generated code: output=b64fe33fe76591cf input=a9049054013a1b77]*/