]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
gh-101758: Clean Up Uses of Import State (gh-101919)
authorEric Snow <ericsnowcurrently@gmail.com>
Wed, 15 Feb 2023 22:32:31 +0000 (15:32 -0700)
committerGitHub <noreply@github.com>
Wed, 15 Feb 2023 22:32:31 +0000 (15:32 -0700)
commitb2fc5492789623d656953d458f3eeaac03c1ef56
treeef2614bd53b935d48170ae2d936ca873ffc92cfc
parentc1ce0d178fe57b50f37578b285a343d77485ac02
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
20 files changed:
Include/internal/pycore_import.h
Include/internal/pycore_interp.h
Include/internal/pycore_pylifecycle.h
Include/internal/pycore_pystate.h
Include/internal/pycore_runtime_init.h
Include/internal/pycore_sysmodule.h
Lib/test/test_imp.py
Lib/test/test_stable_abi_ctypes.py
Misc/stable_abi.toml
Objects/moduleobject.c
PC/python3dll.c
Python/_warnings.c
Python/ceval.c
Python/dynload_shlib.c
Python/import.c
Python/importdl.c
Python/pylifecycle.c
Python/pystate.c
Python/pythonrun.c
Python/sysmodule.c