1use crate::object::PyObject;
2use std::ffi::{c_char, c_int, c_long};
3
4extern_libpython! {
5 pub fn PyImport_GetMagicNumber() -> c_long;
6 pub fn PyImport_GetMagicTag() -> *const c_char;
7 pub fn PyImport_ExecCodeModule(name: *const c_char, co: *mut PyObject) -> *mut PyObject;
8 pub fn PyImport_ExecCodeModuleEx(
9 name: *const c_char,
10 co: *mut PyObject,
11 pathname: *const c_char,
12 ) -> *mut PyObject;
13 pub fn PyImport_ExecCodeModuleWithPathnames(
14 name: *const c_char,
15 co: *mut PyObject,
16 pathname: *const c_char,
17 cpathname: *const c_char,
18 ) -> *mut PyObject;
19 pub fn PyImport_ExecCodeModuleObject(
20 name: *mut PyObject,
21 co: *mut PyObject,
22 pathname: *mut PyObject,
23 cpathname: *mut PyObject,
24 ) -> *mut PyObject;
25 pub fn PyImport_GetModuleDict() -> *mut PyObject;
26 pub fn PyImport_GetModule(name: *mut PyObject) -> *mut PyObject;
27 pub fn PyImport_AddModuleObject(name: *mut PyObject) -> *mut PyObject;
28 pub fn PyImport_AddModule(name: *const c_char) -> *mut PyObject;
29 #[cfg(Py_3_13)]
30 pub fn PyImport_AddModuleRef(name: *const c_char) -> *mut PyObject;
31 pub fn PyImport_ImportModule(name: *const c_char) -> *mut PyObject;
32 #[deprecated(note = "Python 3.13")]
33 pub fn PyImport_ImportModuleNoBlock(name: *const c_char) -> *mut PyObject;
34 pub fn PyImport_ImportModuleLevel(
35 name: *const c_char,
36 globals: *mut PyObject,
37 locals: *mut PyObject,
38 fromlist: *mut PyObject,
39 level: c_int,
40 ) -> *mut PyObject;
41 pub fn PyImport_ImportModuleLevelObject(
42 name: *mut PyObject,
43 globals: *mut PyObject,
44 locals: *mut PyObject,
45 fromlist: *mut PyObject,
46 level: c_int,
47 ) -> *mut PyObject;
48}
49
50#[inline]
51pub unsafe fn PyImport_ImportModuleEx(
52 name: *const c_char,
53 globals: *mut PyObject,
54 locals: *mut PyObject,
55 fromlist: *mut PyObject,
56) -> *mut PyObject {
57 PyImport_ImportModuleLevel(name, globals, locals, fromlist, 0)
58}
59
60extern_libpython! {
61 pub fn PyImport_GetImporter(path: *mut PyObject) -> *mut PyObject;
62 pub fn PyImport_Import(name: *mut PyObject) -> *mut PyObject;
63 pub fn PyImport_ReloadModule(m: *mut PyObject) -> *mut PyObject;
64 pub fn PyImport_ImportFrozenModuleObject(name: *mut PyObject) -> c_int;
65 pub fn PyImport_ImportFrozenModule(name: *const c_char) -> c_int;
66
67 pub fn PyImport_AppendInittab(
68 name: *const c_char,
69 initfunc: Option<unsafe extern "C" fn() -> *mut PyObject>,
70 ) -> c_int;
71}