ffi: Add definition for PyType_GetModuleByDef
This API is available starting in 3.11. It is not part of the Stable ABI. PyType_GetModuleByDef searches the MRO of the given type for a module matching the given module spec. It can be useful for users use that `pyo3_ffi` directly and want to support multiple interpreters/per interpreter GIL. It is useful to obtain access to the module state from special methods like `tp_new` that can't use the METH_METHOD calling convention. This API is not supported on PyPy yet, but guess the symbol name for the future.
This commit is contained in:
parent
f8878a7440
commit
83f0f22efe
|
@ -0,0 +1 @@
|
||||||
|
Add definition for `PyType_GetModuleByDef` to `pyo3_ffi`.
|
|
@ -1,5 +1,7 @@
|
||||||
#[cfg(Py_3_8)]
|
#[cfg(Py_3_8)]
|
||||||
use crate::vectorcallfunc;
|
use crate::vectorcallfunc;
|
||||||
|
#[cfg(Py_3_11)]
|
||||||
|
use crate::PyModuleDef;
|
||||||
use crate::{object, PyGetSetDef, PyMemberDef, PyMethodDef, PyObject, Py_ssize_t};
|
use crate::{object, PyGetSetDef, PyMemberDef, PyMethodDef, PyObject, Py_ssize_t};
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use std::os::raw::{c_char, c_int, c_uint, c_ulong, c_void};
|
use std::os::raw::{c_char, c_int, c_uint, c_ulong, c_void};
|
||||||
|
@ -339,9 +341,12 @@ pub unsafe fn PyHeapType_GET_MEMBERS(etype: *mut PyHeapTypeObject) -> *mut PyMem
|
||||||
// skipped _PyType_CalculateMetaclass
|
// skipped _PyType_CalculateMetaclass
|
||||||
// skipped _PyType_GetDocFromInternalDoc
|
// skipped _PyType_GetDocFromInternalDoc
|
||||||
// skipped _PyType_GetTextSignatureFromInternalDoc
|
// skipped _PyType_GetTextSignatureFromInternalDoc
|
||||||
// skipped _PyType_GetModuleByDef
|
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
#[cfg(Py_3_11)]
|
||||||
|
#[cfg_attr(PyPy, link_name = "PyPyType_GetModuleByDef")]
|
||||||
|
pub fn PyType_GetModuleByDef(ty: *mut PyTypeObject, def: *mut PyModuleDef) -> *mut PyObject;
|
||||||
|
|
||||||
#[cfg(Py_3_12)]
|
#[cfg(Py_3_12)]
|
||||||
pub fn PyType_GetDict(o: *mut PyTypeObject) -> *mut PyObject;
|
pub fn PyType_GetDict(o: *mut PyTypeObject) -> *mut PyObject;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue