rollback 005fd1fe31ab (see #14609 and #14582)
Being able to overload a sys.module entry during import of a module was broken
by this changeset.
diff --git a/Python/import.c b/Python/import.c
index 07c3d6f..11d58ae 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -2447,22 +2447,15 @@
Py_DECREF(partition);
if (level == 0) {
- if (PyUnicode_GET_LENGTH(name) ==
- PyUnicode_GET_LENGTH(front)) {
- final_mod = mod;
- }
- else {
- final_mod = PyDict_GetItem(interp->modules, front);
- if (final_mod == NULL) {
- PyErr_Format(PyExc_KeyError,
- "%R not in sys.modules as expected", front);
- }
- }
+ final_mod = PyDict_GetItem(interp->modules, front);
Py_DECREF(front);
if (final_mod == NULL) {
- goto error_with_unlock;
+ PyErr_Format(PyExc_KeyError,
+ "%R not in sys.modules as expected", front);
}
- Py_INCREF(final_mod);
+ else {
+ Py_INCREF(final_mod);
+ }
}
else {
Py_ssize_t cut_off = PyUnicode_GET_LENGTH(name) -