diff options
author | Eric Snow <ericsnowcurrently@gmail.com> | 2023-02-15 15:32:31 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-15 15:32:31 -0700 |
commit | b2fc5492789623d656953d458f3eeaac03c1ef56 (patch) | |
tree | ef2614bd53b935d48170ae2d936ca873ffc92cfc /Python/pythonrun.c | |
parent | c1ce0d178fe57b50f37578b285a343d77485ac02 (diff) | |
download | cpython-git-b2fc5492789623d656953d458f3eeaac03c1ef56.tar.gz |
gh-101758: Clean Up Uses of Import State (gh-101919)
This change is almost entirely moving code around and hiding import state behind internal API. We introduce no changes to behavior, nor to non-internal API. (Since there was already going to be a lot of churn, I took this as an opportunity to re-organize import.c into topically-grouped sections of code.) The motivation is to simplify a number of upcoming changes.
Specific changes:
* move existing import-related code to import.c, wherever possible
* add internal API for interacting with import state (both global and per-interpreter)
* use only API outside of import.c (to limit churn there when changing the location, etc.)
* consolidate the import-related state of PyInterpreterState into a single struct field (this changes layout slightly)
* add macros for import state in import.c (to simplify changing the location)
* group code in import.c into sections
*remove _PyState_AddModule()
https://github.com/python/cpython/issues/101758
Diffstat (limited to 'Python/pythonrun.c')
-rw-r--r-- | Python/pythonrun.c | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/Python/pythonrun.c b/Python/pythonrun.c index 6a4d593768..ce993ea879 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -350,14 +350,8 @@ static int set_main_loader(PyObject *d, PyObject *filename, const char *loader_name) { PyInterpreterState *interp = _PyInterpreterState_GET(); - PyObject *bootstrap = PyObject_GetAttrString(interp->importlib, - "_bootstrap_external"); - if (bootstrap == NULL) { - return -1; - } - - PyObject *loader_type = PyObject_GetAttrString(bootstrap, loader_name); - Py_DECREF(bootstrap); + PyObject *loader_type = _PyImport_GetImportlibExternalLoader(interp, + loader_name); if (loader_type == NULL) { return -1; } |