mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
gh-98040: Remove just the imp
module (#98573)
This commit is contained in:
parent
79b9db9295
commit
e1f14643dc
24 changed files with 40 additions and 1537 deletions
|
@ -594,11 +594,11 @@ _PyImport_ClearModulesByIndex(PyInterpreterState *interp)
|
|||
/*
|
||||
It may help to have a big picture view of what happens
|
||||
when an extension is loaded. This includes when it is imported
|
||||
for the first time or via imp.load_dynamic().
|
||||
for the first time.
|
||||
|
||||
Here's a summary, using imp.load_dynamic() as the starting point:
|
||||
Here's a summary, using importlib._boostrap._load() as a starting point.
|
||||
|
||||
1. imp.load_dynamic() -> importlib._bootstrap._load()
|
||||
1. importlib._bootstrap._load()
|
||||
2. _load(): acquire import lock
|
||||
3. _load() -> importlib._bootstrap._load_unlocked()
|
||||
4. _load_unlocked() -> importlib._bootstrap.module_from_spec()
|
||||
|
@ -3794,7 +3794,7 @@ _imp_source_hash_impl(PyObject *module, long key, Py_buffer *source)
|
|||
|
||||
|
||||
PyDoc_STRVAR(doc_imp,
|
||||
"(Extremely) low-level import machinery bits as used by importlib and imp.");
|
||||
"(Extremely) low-level import machinery bits as used by importlib.");
|
||||
|
||||
static PyMethodDef imp_methods[] = {
|
||||
_IMP_EXTENSION_SUFFIXES_METHODDEF
|
||||
|
|
|
@ -7,24 +7,18 @@ import os
|
|||
import sys
|
||||
|
||||
|
||||
try:
|
||||
from importlib.machinery import SourceFileLoader
|
||||
except ImportError:
|
||||
import imp
|
||||
# 2023-04-27(warsaw): Pre-Python 3.12, this would catch ImportErrors and try to
|
||||
# import imp, and then use imp.load_module(). The imp module was removed in
|
||||
# Python 3.12 (and long deprecated before that), and it's unclear under what
|
||||
# conditions this import will now fail, so the fallback was simply removed.
|
||||
from importlib.machinery import SourceFileLoader
|
||||
|
||||
def find_module(modname):
|
||||
"""Finds and returns a module in the local dist/checkout.
|
||||
"""
|
||||
modpath = os.path.join(
|
||||
os.path.dirname(os.path.dirname(__file__)), "Lib")
|
||||
return imp.load_module(modname, *imp.find_module(modname, [modpath]))
|
||||
else:
|
||||
def find_module(modname):
|
||||
"""Finds and returns a module in the local dist/checkout.
|
||||
"""
|
||||
modpath = os.path.join(
|
||||
os.path.dirname(os.path.dirname(__file__)), "Lib", modname + ".py")
|
||||
return SourceFileLoader(modname, modpath).load_module()
|
||||
def find_module(modname):
|
||||
"""Finds and returns a module in the local dist/checkout.
|
||||
"""
|
||||
modpath = os.path.join(
|
||||
os.path.dirname(os.path.dirname(__file__)), "Lib", modname + ".py")
|
||||
return SourceFileLoader(modname, modpath).load_module()
|
||||
|
||||
|
||||
def write_contents(f):
|
||||
|
|
|
@ -2173,10 +2173,9 @@ add_main_module(PyInterpreterState *interp)
|
|||
Py_DECREF(bimod);
|
||||
}
|
||||
|
||||
/* Main is a little special - imp.is_builtin("__main__") will return
|
||||
* False, but BuiltinImporter is still the most appropriate initial
|
||||
* setting for its __loader__ attribute. A more suitable value will
|
||||
* be set if __main__ gets further initialized later in the startup
|
||||
/* Main is a little special - BuiltinImporter is the most appropriate
|
||||
* initial setting for its __loader__ attribute. A more suitable value
|
||||
* will be set if __main__ gets further initialized later in the startup
|
||||
* process.
|
||||
*/
|
||||
loader = _PyDict_GetItemStringWithError(d, "__loader__");
|
||||
|
|
1
Python/stdlib_module_names.h
generated
1
Python/stdlib_module_names.h
generated
|
@ -164,7 +164,6 @@ static const char* _Py_stdlib_module_names[] = {
|
|||
"idlelib",
|
||||
"imaplib",
|
||||
"imghdr",
|
||||
"imp",
|
||||
"importlib",
|
||||
"inspect",
|
||||
"io",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue