summaryrefslogtreecommitdiffstats
path: root/Python/import.c
diff options
context:
space:
mode:
authorBrett Cannon <bcannon@gmail.com>2009-03-15 02:20:16 (GMT)
committerBrett Cannon <bcannon@gmail.com>2009-03-15 02:20:16 (GMT)
commit8d11013169efe085213842307859103f713beec5 (patch)
treee7b4cace8433ab483d8128524052fba93f442445 /Python/import.c
parent2b9fd47da776f75ddf5b488fcc73b8631ece8e2b (diff)
downloadcpython-8d11013169efe085213842307859103f713beec5.zip
cpython-8d11013169efe085213842307859103f713beec5.tar.gz
cpython-8d11013169efe085213842307859103f713beec5.tar.bz2
Implement InspectLoader for FrozenImporter.
Diffstat (limited to 'Python/import.c')
-rw-r--r--Python/import.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/Python/import.c b/Python/import.c
index 6f2f4c7..9c70ed8 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -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.
@@ -2959,6 +2981,16 @@ imp_get_frozen_object(PyObject *self, PyObject *args)
}
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)
{
char *name;
@@ -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},