[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