summaryrefslogtreecommitdiffstats
path: root/Python/bltinmodule.c
diff options
context:
space:
mode:
Diffstat (limited to 'Python/bltinmodule.c')
-rw-r--r--Python/bltinmodule.c57
1 files changed, 30 insertions, 27 deletions
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index b253f88..332f4cb 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -243,38 +243,41 @@ PyDoc_STRVAR(build_class_doc,
\n\
Internal helper function used by the class statement.");
+/*[clinic input]
+__import__ as builtin___import__
+
+ name: object
+ globals: object(c_default="NULL") = None
+ locals: object(c_default="NULL") = None
+ fromlist: object(c_default="NULL") = ()
+ level: int = 0
+
+Import a module.
+
+Because this function is meant for use by the Python
+interpreter and not for general use, it is better to use
+importlib.import_module() to programmatically import a module.
+
+The globals argument is only used to determine the context;
+they are not modified. The locals argument is unused. The fromlist
+should be a list of names to emulate ``from name import ...'', or an
+empty list to emulate ``import name''.
+When importing a module from a package, note that __import__('A.B', ...)
+returns package A when fromlist is empty, but its submodule B when
+fromlist is not empty. The level argument is used to determine whether to
+perform absolute or relative imports: 0 is absolute, while a positive number
+is the number of parent directories to search relative to the current module.
+[clinic start generated code]*/
+
static PyObject *
-builtin___import__(PyObject *self, PyObject *args, PyObject *kwds)
+builtin___import___impl(PyObject *module, PyObject *name, PyObject *globals,
+ PyObject *locals, PyObject *fromlist, int level)
+/*[clinic end generated code: output=4febeda88a0cd245 input=35e9a6460412430f]*/
{
- static char *kwlist[] = {"name", "globals", "locals", "fromlist",
- "level", 0};
- PyObject *name, *globals = NULL, *locals = NULL, *fromlist = NULL;
- int level = 0;
-
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "U|OOOi:__import__",
- kwlist, &name, &globals, &locals, &fromlist, &level))
- return NULL;
return PyImport_ImportModuleLevelObject(name, globals, locals,
fromlist, level);
}
-PyDoc_STRVAR(import_doc,
-"__import__(name, globals=None, locals=None, fromlist=(), level=0) -> module\n\
-\n\
-Import a module. Because this function is meant for use by the Python\n\
-interpreter and not for general use, it is better to use\n\
-importlib.import_module() to programmatically import a module.\n\
-\n\
-The globals argument is only used to determine the context;\n\
-they are not modified. The locals argument is unused. The fromlist\n\
-should be a list of names to emulate ``from name import ...'', or an\n\
-empty list to emulate ``import name''.\n\
-When importing a module from a package, note that __import__('A.B', ...)\n\
-returns package A when fromlist is empty, but its submodule B when\n\
-fromlist is not empty. The level argument is used to determine whether to\n\
-perform absolute or relative imports: 0 is absolute, while a positive number\n\
-is the number of parent directories to search relative to the current module.");
-
/*[clinic input]
abs as builtin_abs
@@ -2903,7 +2906,7 @@ PyTypeObject PyZip_Type = {
static PyMethodDef builtin_methods[] = {
{"__build_class__", (PyCFunction)(void(*)(void))builtin___build_class__,
METH_FASTCALL | METH_KEYWORDS, build_class_doc},
- {"__import__", (PyCFunction)(void(*)(void))builtin___import__, METH_VARARGS | METH_KEYWORDS, import_doc},
+ BUILTIN___IMPORT___METHODDEF
BUILTIN_ABS_METHODDEF
BUILTIN_ALL_METHODDEF
BUILTIN_ANY_METHODDEF