[Python-Dev] Objecttype of 'locals' argument in PyEval_EvalCode

Daniel Trstenjak Daniel.Trstenjak at science-computing.de
Wed Nov 29 10:06:03 CET 2006


Hi all,
I would like to know the definition of the 'locals' object given to
PyEval_EvalCode. Has 'locals' to be a python dictionary or a subtype
of a python dictionary, or is it enough if the object implements the
necessary protocols?
The python implementation behaves different for the two following code
lines:
from modul import symbol
from modul import *
In the case of the first one, it's enough if the object 'locals' implements
the necessary protocols. The second one only works if the object 'locals'
is a type or subtype of dictionary.
The problem lies in Python-2.5/Python/ceval.c:
	 static int
	 import_all_from(PyObject *locals, PyObject *v)
	 {
	 ...
 4046	 value = PyObject_GetAttr(v, name);
 4047	 if (value == NULL)
 4048		 err = -1;
 4049	 else
>>> 4050		 err = PyDict_SetItem(locals, name, value);
 4051	 Py_DECREF(name); 
	 ...
	 }
Changing PyDict_SetItem in line 4050 with PyObject_SetAttr could fix it.
 
 
Best Regards,
 Daniel


More information about the Python-Dev mailing list

AltStyle によって変換されたページ (->オリジナル) /