mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	Use FASTCALL for __import__ (GH-31752)
This commit is contained in:
		
							parent
							
								
									f84c867dd7
								
							
						
					
					
						commit
						6f3b9e2243
					
				
					 2 changed files with 111 additions and 29 deletions
				
			
		|  | @ -243,38 +243,41 @@ PyDoc_STRVAR(build_class_doc, | |||
| \n\ | ||||
| Internal helper function used by the class statement."); | ||||
| 
 | ||||
| static PyObject * | ||||
| builtin___import__(PyObject *self, PyObject *args, PyObject *kwds) | ||||
| { | ||||
|     static char *kwlist[] = {"name", "globals", "locals", "fromlist", | ||||
|                              "level", 0}; | ||||
|     PyObject *name, *globals = NULL, *locals = NULL, *fromlist = NULL; | ||||
|     int level = 0; | ||||
| /*[clinic input]
 | ||||
| __import__ as builtin___import__ | ||||
| 
 | ||||
|     if (!PyArg_ParseTupleAndKeywords(args, kwds, "U|OOOi:__import__", | ||||
|                     kwlist, &name, &globals, &locals, &fromlist, &level)) | ||||
|         return NULL; | ||||
|     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___impl(PyObject *module, PyObject *name, PyObject *globals, | ||||
|                         PyObject *locals, PyObject *fromlist, int level) | ||||
| /*[clinic end generated code: output=4febeda88a0cd245 input=35e9a6460412430f]*/ | ||||
| { | ||||
|     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 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Kumar Aditya
						Kumar Aditya