mirror of
https://github.com/python/cpython.git
synced 2026-01-02 21:43:49 +00:00
Specific changes: * move the import lock to PyInterpreterState * move the "find_and_load" diagnostic state to PyInterpreterState Note that the import lock exists to keep multiple imports of the same module in the same interpreter (but in different threads) from stomping on each other. Independently, we use a distinct global lock to protect globally shared import state, especially related to loaded extension modules. For now we can rely on the GIL as that lock but with a per-interpreter GIL we'll need a new global lock. The remaining state in _PyRuntimeState.imports will (probably) continue being global. https://github.com/python/cpython/issues/100227
46 lines
1.6 KiB
C
46 lines
1.6 KiB
C
#ifndef Py_CPYTHON_IMPORT_H
|
|
# error "this header file must not be included directly"
|
|
#endif
|
|
|
|
PyMODINIT_FUNC PyInit__imp(void);
|
|
|
|
PyAPI_FUNC(int) _PyImport_IsInitialized(PyInterpreterState *);
|
|
|
|
PyAPI_FUNC(PyObject *) _PyImport_GetModuleId(_Py_Identifier *name);
|
|
PyAPI_FUNC(int) _PyImport_SetModule(PyObject *name, PyObject *module);
|
|
PyAPI_FUNC(int) _PyImport_SetModuleString(const char *name, PyObject* module);
|
|
|
|
PyAPI_FUNC(void) _PyImport_AcquireLock(PyInterpreterState *interp);
|
|
PyAPI_FUNC(int) _PyImport_ReleaseLock(PyInterpreterState *interp);
|
|
|
|
PyAPI_FUNC(int) _PyImport_FixupBuiltin(
|
|
PyObject *mod,
|
|
const char *name, /* UTF-8 encoded string */
|
|
PyObject *modules
|
|
);
|
|
PyAPI_FUNC(int) _PyImport_FixupExtensionObject(PyObject*, PyObject *,
|
|
PyObject *, PyObject *);
|
|
|
|
struct _inittab {
|
|
const char *name; /* ASCII encoded string */
|
|
PyObject* (*initfunc)(void);
|
|
};
|
|
// This is not used after Py_Initialize() is called.
|
|
PyAPI_DATA(struct _inittab *) PyImport_Inittab;
|
|
PyAPI_FUNC(int) PyImport_ExtendInittab(struct _inittab *newtab);
|
|
|
|
struct _frozen {
|
|
const char *name; /* ASCII encoded string */
|
|
const unsigned char *code;
|
|
int size;
|
|
int is_package;
|
|
PyObject *(*get_code)(void);
|
|
};
|
|
|
|
/* Embedding apps may change this pointer to point to their favorite
|
|
collection of frozen modules: */
|
|
|
|
PyAPI_DATA(const struct _frozen *) PyImport_FrozenModules;
|
|
|
|
PyAPI_DATA(PyObject *) _PyImport_GetModuleAttr(PyObject *, PyObject *);
|
|
PyAPI_DATA(PyObject *) _PyImport_GetModuleAttrString(const char *, const char *);
|