Implement InspectLoader for FrozenImporter.

This commit is contained in:
Brett Cannon 2009-03-15 02:20:16 +00:00
parent 2b9fd47da7
commit 8d11013169
6 changed files with 100 additions and 10 deletions

View file

@ -1951,6 +1951,28 @@ get_frozen_object(char *name)
return PyMarshal_ReadObjectFromString((char *)p->code, size);
}
static PyObject *
is_frozen_package(char *name)
{
struct _frozen *p = find_frozen(name);
int size;
if (p == NULL) {
PyErr_Format(PyExc_ImportError,
"No such frozen object named %.200s",
name);
return NULL;
}
size = p->size;
if (size < 0)
Py_RETURN_TRUE;
else
Py_RETURN_FALSE;
}
/* Initialize a frozen module.
Return 1 for success, 0 if the module is not found, and -1 with
an exception set if the initialization failed.
@ -2958,6 +2980,16 @@ imp_get_frozen_object(PyObject *self, PyObject *args)
return get_frozen_object(name);
}
static PyObject *
imp_is_frozen_package(PyObject *self, PyObject *args)
{
char *name;
if (!PyArg_ParseTuple(args, "s:is_frozen_package", &name))
return NULL;
return is_frozen_package(name);
}
static PyObject *
imp_is_builtin(PyObject *self, PyObject *args)
{
@ -3191,6 +3223,7 @@ static PyMethodDef imp_methods[] = {
{"reload", imp_reload, METH_O, doc_reload},
/* The rest are obsolete */
{"get_frozen_object", imp_get_frozen_object, METH_VARARGS},
{"is_frozen_package", imp_is_frozen_package, METH_VARARGS},
{"init_builtin", imp_init_builtin, METH_VARARGS},
{"init_frozen", imp_init_frozen, METH_VARARGS},
{"is_builtin", imp_is_builtin, METH_VARARGS},