| 1 | use crate::object::PyObject; |
| 2 | use std::os::raw::{c_char, c_int, c_long}; |
| 3 | |
| 4 | unsafeextern "C" { |
| 5 | pub unsafefn PyImport_GetMagicNumber() -> c_long; |
| 6 | pub unsafefn PyImport_GetMagicTag() -> *const c_char; |
| 7 | #[cfg_attr (PyPy, link_name = "PyPyImport_ExecCodeModule" )] |
| 8 | pub unsafefn PyImport_ExecCodeModule(name: *const c_char, co: *mut PyObject) -> *mut PyObject; |
| 9 | #[cfg_attr (PyPy, link_name = "PyPyImport_ExecCodeModuleEx" )] |
| 10 | pub unsafefn PyImport_ExecCodeModuleEx( |
| 11 | name: *const c_char, |
| 12 | co: *mut PyObject, |
| 13 | pathname: *const c_char, |
| 14 | ) -> *mut PyObject; |
| 15 | pub unsafefn PyImport_ExecCodeModuleWithPathnames( |
| 16 | name: *const c_char, |
| 17 | co: *mut PyObject, |
| 18 | pathname: *const c_char, |
| 19 | cpathname: *const c_char, |
| 20 | ) -> *mut PyObject; |
| 21 | pub unsafefn PyImport_ExecCodeModuleObject( |
| 22 | name: *mut PyObject, |
| 23 | co: *mut PyObject, |
| 24 | pathname: *mut PyObject, |
| 25 | cpathname: *mut PyObject, |
| 26 | ) -> *mut PyObject; |
| 27 | #[cfg_attr (PyPy, link_name = "PyPyImport_GetModuleDict" )] |
| 28 | pub unsafefn PyImport_GetModuleDict() -> *mut PyObject; |
| 29 | // skipped Python 3.7 / ex-non-limited PyImport_GetModule |
| 30 | pub unsafefn PyImport_AddModuleObject(name: *mut PyObject) -> *mut PyObject; |
| 31 | #[cfg_attr (PyPy, link_name = "PyPyImport_AddModule" )] |
| 32 | pub unsafefn PyImport_AddModule(name: *const c_char) -> *mut PyObject; |
| 33 | #[cfg (Py_3_13)] |
| 34 | #[cfg_attr (PyPy, link_name = "PyPyImport_AddModuleRef" )] |
| 35 | pub fn PyImport_AddModuleRef(name: *const c_char) -> *mut PyObject; |
| 36 | #[cfg_attr (PyPy, link_name = "PyPyImport_ImportModule" )] |
| 37 | pub unsafefn PyImport_ImportModule(name: *const c_char) -> *mut PyObject; |
| 38 | #[cfg_attr (PyPy, link_name = "PyPyImport_ImportModuleNoBlock" )] |
| 39 | pub unsafefn PyImport_ImportModuleNoBlock(name: *const c_char) -> *mut PyObject; |
| 40 | #[cfg_attr (PyPy, link_name = "PyPyImport_ImportModuleLevel" )] |
| 41 | pub unsafefn PyImport_ImportModuleLevel( |
| 42 | name: *const c_char, |
| 43 | globals: *mut PyObject, |
| 44 | locals: *mut PyObject, |
| 45 | fromlist: *mut PyObject, |
| 46 | level: c_int, |
| 47 | ) -> *mut PyObject; |
| 48 | #[cfg_attr (PyPy, link_name = "PyPyImport_ImportModuleLevelObject" )] |
| 49 | pub unsafefn PyImport_ImportModuleLevelObject( |
| 50 | name: *mut PyObject, |
| 51 | globals: *mut PyObject, |
| 52 | locals: *mut PyObject, |
| 53 | fromlist: *mut PyObject, |
| 54 | level: c_int, |
| 55 | ) -> *mut PyObject; |
| 56 | } |
| 57 | |
| 58 | #[inline ] |
| 59 | pub unsafe fn PyImport_ImportModuleEx( |
| 60 | name: *const c_char, |
| 61 | globals: *mut PyObject, |
| 62 | locals: *mut PyObject, |
| 63 | fromlist: *mut PyObject, |
| 64 | ) -> *mut PyObject { |
| 65 | PyImport_ImportModuleLevel(name, globals, locals, fromlist, level:0) |
| 66 | } |
| 67 | |
| 68 | unsafeextern "C" { |
| 69 | pub unsafefn PyImport_GetImporter(path: *mut PyObject) -> *mut PyObject; |
| 70 | #[cfg_attr (PyPy, link_name = "PyPyImport_Import" )] |
| 71 | pub unsafefn PyImport_Import(name: *mut PyObject) -> *mut PyObject; |
| 72 | #[cfg_attr (PyPy, link_name = "PyPyImport_ReloadModule" )] |
| 73 | pub unsafefn PyImport_ReloadModule(m: *mut PyObject) -> *mut PyObject; |
| 74 | #[cfg (not(Py_3_9))] |
| 75 | #[deprecated (note = "Removed in Python 3.9 as it was \"For internal use only \"." )] |
| 76 | pub fn PyImport_Cleanup(); |
| 77 | pub unsafefn PyImport_ImportFrozenModuleObject(name: *mut PyObject) -> c_int; |
| 78 | pub unsafefn PyImport_ImportFrozenModule(name: *const c_char) -> c_int; |
| 79 | |
| 80 | pub unsafefn PyImport_AppendInittab( |
| 81 | name: *const c_char, |
| 82 | initfunc: Option<unsafe extern "C" fn() -> *mut PyObject>, |
| 83 | ) -> c_int; |
| 84 | } |
| 85 | |