File indexing completed on 2025-11-19 09:50:48
0001 #ifndef Py_INTERNAL_MODULEOBJECT_H
0002 #define Py_INTERNAL_MODULEOBJECT_H
0003 #ifdef __cplusplus
0004 extern "C" {
0005 #endif
0006
0007 #ifndef Py_BUILD_CORE
0008 # error "this header requires Py_BUILD_CORE define"
0009 #endif
0010
0011 extern void _PyModule_Clear(PyObject *);
0012 extern void _PyModule_ClearDict(PyObject *);
0013 extern int _PyModuleSpec_IsInitializing(PyObject *);
0014 extern int _PyModuleSpec_GetFileOrigin(PyObject *, PyObject **);
0015 extern int _PyModule_IsPossiblyShadowing(PyObject *);
0016
0017 extern int _PyModule_IsExtension(PyObject *obj);
0018
0019 typedef struct {
0020 PyObject_HEAD
0021 PyObject *md_dict;
0022 PyModuleDef *md_def;
0023 void *md_state;
0024 PyObject *md_weaklist;
0025
0026 PyObject *md_name;
0027 #ifdef Py_GIL_DISABLED
0028 void *md_gil;
0029 #endif
0030 } PyModuleObject;
0031
0032 static inline PyModuleDef* _PyModule_GetDef(PyObject *mod) {
0033 assert(PyModule_Check(mod));
0034 return ((PyModuleObject *)mod)->md_def;
0035 }
0036
0037 static inline void* _PyModule_GetState(PyObject* mod) {
0038 assert(PyModule_Check(mod));
0039 return ((PyModuleObject *)mod)->md_state;
0040 }
0041
0042 static inline PyObject* _PyModule_GetDict(PyObject *mod) {
0043 assert(PyModule_Check(mod));
0044 PyObject *dict = ((PyModuleObject *)mod) -> md_dict;
0045
0046 assert(dict != NULL);
0047 return dict;
0048 }
0049
0050 PyObject* _Py_module_getattro_impl(PyModuleObject *m, PyObject *name, int suppress);
0051 PyObject* _Py_module_getattro(PyModuleObject *m, PyObject *name);
0052
0053 #ifdef __cplusplus
0054 }
0055 #endif
0056 #endif