Issue #3080: Reindent and simplify import_submodule()
This commit is contained in:
parent
c24c8108b6
commit
9599de5110
|
@ -2779,9 +2779,7 @@ PyImport_ImportModuleLevel(char *name, PyObject *globals, PyObject *locals,
|
||||||
corresponding entry is not found in sys.modules, Py_None is returned.
|
corresponding entry is not found in sys.modules, Py_None is returned.
|
||||||
*/
|
*/
|
||||||
static PyObject *
|
static PyObject *
|
||||||
get_parent(PyObject *globals,
|
get_parent(PyObject *globals, PyObject **p_name, int level)
|
||||||
PyObject **p_name,
|
|
||||||
int level)
|
|
||||||
{
|
{
|
||||||
Py_UNICODE name[MAXPATHLEN+1];
|
Py_UNICODE name[MAXPATHLEN+1];
|
||||||
const Py_ssize_t bufsize = MAXPATHLEN+1;
|
const Py_ssize_t bufsize = MAXPATHLEN+1;
|
||||||
|
@ -3167,7 +3165,10 @@ static PyObject *
|
||||||
import_submodule(PyObject *mod, PyObject *subname, PyObject *fullname)
|
import_submodule(PyObject *mod, PyObject *subname, PyObject *fullname)
|
||||||
{
|
{
|
||||||
PyObject *modules = PyImport_GetModuleDict();
|
PyObject *modules = PyImport_GetModuleDict();
|
||||||
PyObject *m = NULL, *bufobj;
|
PyObject *m = NULL, *bufobj, *path, *loader;
|
||||||
|
char buf[MAXPATHLEN+1];
|
||||||
|
struct filedescr *fdp;
|
||||||
|
FILE *fp;
|
||||||
|
|
||||||
/* Require:
|
/* Require:
|
||||||
if mod == None: subname == fullname
|
if mod == None: subname == fullname
|
||||||
|
@ -3176,52 +3177,48 @@ import_submodule(PyObject *mod, PyObject *subname, PyObject *fullname)
|
||||||
|
|
||||||
if ((m = PyDict_GetItem(modules, fullname)) != NULL) {
|
if ((m = PyDict_GetItem(modules, fullname)) != NULL) {
|
||||||
Py_INCREF(m);
|
Py_INCREF(m);
|
||||||
|
return m;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mod == Py_None)
|
||||||
|
path = NULL;
|
||||||
else {
|
else {
|
||||||
PyObject *path, *loader;
|
path = PyObject_GetAttrString(mod, "__path__");
|
||||||
char buf[MAXPATHLEN+1];
|
if (path == NULL) {
|
||||||
struct filedescr *fdp;
|
|
||||||
FILE *fp;
|
|
||||||
|
|
||||||
if (mod == Py_None)
|
|
||||||
path = NULL;
|
|
||||||
else {
|
|
||||||
path = PyObject_GetAttrString(mod, "__path__");
|
|
||||||
if (path == NULL) {
|
|
||||||
PyErr_Clear();
|
|
||||||
Py_INCREF(Py_None);
|
|
||||||
return Py_None;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fdp = find_module(_PyUnicode_AsString(fullname),
|
|
||||||
_PyUnicode_AsString(subname),
|
|
||||||
path, buf, MAXPATHLEN+1,
|
|
||||||
&fp, &loader);
|
|
||||||
Py_XDECREF(path);
|
|
||||||
if (fdp == NULL) {
|
|
||||||
if (!PyErr_ExceptionMatches(PyExc_ImportError))
|
|
||||||
return NULL;
|
|
||||||
PyErr_Clear();
|
PyErr_Clear();
|
||||||
Py_INCREF(Py_None);
|
Py_INCREF(Py_None);
|
||||||
return Py_None;
|
return Py_None;
|
||||||
}
|
}
|
||||||
bufobj = PyUnicode_DecodeFSDefault(buf);
|
|
||||||
if (bufobj != NULL) {
|
|
||||||
m = load_module(fullname, fp, bufobj, fdp->type, loader);
|
|
||||||
Py_DECREF(bufobj);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
m = NULL;
|
|
||||||
Py_XDECREF(loader);
|
|
||||||
if (fp)
|
|
||||||
fclose(fp);
|
|
||||||
if (m != NULL && !add_submodule(mod, m, fullname, subname, modules)) {
|
|
||||||
Py_XDECREF(m);
|
|
||||||
m = NULL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fdp = find_module(_PyUnicode_AsString(fullname),
|
||||||
|
_PyUnicode_AsString(subname),
|
||||||
|
path, buf, MAXPATHLEN+1,
|
||||||
|
&fp, &loader);
|
||||||
|
Py_XDECREF(path);
|
||||||
|
if (fdp == NULL) {
|
||||||
|
if (!PyErr_ExceptionMatches(PyExc_ImportError))
|
||||||
|
return NULL;
|
||||||
|
PyErr_Clear();
|
||||||
|
Py_INCREF(Py_None);
|
||||||
|
return Py_None;
|
||||||
|
}
|
||||||
|
bufobj = PyUnicode_DecodeFSDefault(buf);
|
||||||
|
if (bufobj != NULL) {
|
||||||
|
m = load_module(fullname, fp, bufobj, fdp->type, loader);
|
||||||
|
Py_DECREF(bufobj);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
m = NULL;
|
||||||
|
Py_XDECREF(loader);
|
||||||
|
if (fp)
|
||||||
|
fclose(fp);
|
||||||
|
if (m == NULL)
|
||||||
|
return NULL;
|
||||||
|
if (!add_submodule(mod, m, fullname, subname, modules)) {
|
||||||
|
Py_XDECREF(m);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue