summaryrefslogtreecommitdiffstats
path: root/Include
diff options
context:
space:
mode:
authorEric Snow <ericsnowcurrently@gmail.com>2017-09-14 18:18:12 (GMT)
committerGitHub <noreply@github.com>2017-09-14 18:18:12 (GMT)
commitd393c1b227f22fb9af66040b2b367c99a4d1fa9a (patch)
tree2bb1bb4f8b59d3c6ffa8dabbc43dc30357e2b25f /Include
parent8dcf22f442320e4c1a5408e67b4c9002ad105f17 (diff)
downloadcpython-d393c1b227f22fb9af66040b2b367c99a4d1fa9a.zip
cpython-d393c1b227f22fb9af66040b2b367c99a4d1fa9a.tar.gz
cpython-d393c1b227f22fb9af66040b2b367c99a4d1fa9a.tar.bz2
bpo-28411: Isolate PyInterpreterState.modules (#3575)
A bunch of code currently uses PyInterpreterState.modules directly instead of PyImport_GetModuleDict(). This complicates efforts to make changes relative to sys.modules. This patch switches to using PyImport_GetModuleDict() uniformly. Also, a number of related uses of sys.modules are updated for uniformity for the same reason. Note that this code was already reviewed and merged as part of #1638. I reverted that and am now splitting it up into more focused parts.
Diffstat (limited to 'Include')
-rw-r--r--Include/import.h17
-rw-r--r--Include/modsupport.h4
2 files changed, 18 insertions, 3 deletions
diff --git a/Include/import.h b/Include/import.h
index 7e83985..95c52b0 100644
--- a/Include/import.h
+++ b/Include/import.h
@@ -38,11 +38,17 @@ PyAPI_FUNC(PyObject *) PyImport_ExecCodeModuleObject(
);
#endif
PyAPI_FUNC(PyObject *) PyImport_GetModuleDict(void);
+#ifndef Py_LIMITED_API
+PyAPI_FUNC(int) _PyImport_IsInitialized(PyInterpreterState *);
+#endif
#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
PyAPI_FUNC(PyObject *) PyImport_AddModuleObject(
PyObject *name
);
#endif
+#ifndef Py_LIMITED_API
+PyAPI_FUNC(PyObject *) _PyImport_AddModuleObject(PyObject *, PyObject *);
+#endif
PyAPI_FUNC(PyObject *) PyImport_AddModule(
const char *name /* UTF-8 encoded string */
);
@@ -92,14 +98,19 @@ PyAPI_FUNC(int) _PyImport_ReleaseLock(void);
PyAPI_FUNC(void) _PyImport_ReInitLock(void);
PyAPI_FUNC(PyObject *) _PyImport_FindBuiltin(
- const char *name /* UTF-8 encoded string */
+ const char *name, /* UTF-8 encoded string */
+ PyObject *modules
);
PyAPI_FUNC(PyObject *) _PyImport_FindExtensionObject(PyObject *, PyObject *);
+PyAPI_FUNC(PyObject *) _PyImport_FindExtensionObjectEx(PyObject *, PyObject *,
+ PyObject *);
PyAPI_FUNC(int) _PyImport_FixupBuiltin(
PyObject *mod,
- const char *name /* UTF-8 encoded string */
+ const char *name, /* UTF-8 encoded string */
+ PyObject *modules
);
-PyAPI_FUNC(int) _PyImport_FixupExtensionObject(PyObject*, PyObject *, PyObject *);
+PyAPI_FUNC(int) _PyImport_FixupExtensionObject(PyObject*, PyObject *,
+ PyObject *, PyObject *);
struct _inittab {
const char *name; /* ASCII encoded string */
diff --git a/Include/modsupport.h b/Include/modsupport.h
index 8c7cf39..73d86a9 100644
--- a/Include/modsupport.h
+++ b/Include/modsupport.h
@@ -191,6 +191,10 @@ PyAPI_FUNC(int) PyModule_ExecDef(PyObject *module, PyModuleDef *def);
PyAPI_FUNC(PyObject *) PyModule_Create2(struct PyModuleDef*,
int apiver);
+#ifndef Py_LIMITED_API
+PyAPI_FUNC(PyObject *) _PyModule_CreateInitialized(struct PyModuleDef*,
+ int apiver);
+#endif
#ifdef Py_LIMITED_API
#define PyModule_Create(module) \