Skip to content

Commit 90246cc

Browse files
authored
Merge pull request #17 from DinoV/lazy_builtins
Grab builtins dict from module
2 parents a0a9184 + 1f6518d commit 90246cc

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

Python/bltinmodule.c

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -318,9 +318,18 @@ builtin___lazy_import___impl(PyObject *module, PyObject *name,
318318
locals = globals;
319319
}
320320

321-
if (PyMapping_GetOptionalItem(globals, &_Py_ID(__builtins__), &builtins) < 0) {
321+
builtins = PyMapping_GetItemString(globals, "__builtins__");
322+
if (builtins == NULL) {
322323
PyErr_SetString(PyExc_ValueError, "unable to get builtins for lazy import");
323324
return NULL;
325+
} else if (PyModule_Check(builtins)) {
326+
PyObject *builtins_dict = Py_XNewRef(PyModule_GetDict(builtins));
327+
if (builtins_dict == NULL) {
328+
PyErr_SetString(PyExc_AttributeError, "builtins module has no dict");
329+
return NULL;
330+
}
331+
Py_DECREF(builtins);
332+
builtins = builtins_dict;
324333
}
325334

326335
PyObject *res = _PyImport_LazyImportModuleLevelObject(tstate, name, builtins,

0 commit comments

Comments
 (0)