[Python-Dev] Objecttype of 'locals' argument in PyEval_EvalCode (original) (raw)

Guido van Rossum guido at python.org
Wed Nov 29 16:39:25 CET 2006


This seems a bug. In revision 36714 by Raymond Hettinger, the restriction that locals be a dict was relaxed to allow any mapping.

On 11/29/06, Daniel Trstenjak <Daniel.Trstenjak at science-computing.de> wrote:

Hi all, I would like to know the definition of the 'locals' object given to PyEvalEvalCode. 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 importallfrom(PyObject *locals, PyObject *v) { ... 4046 value = PyObjectGetAttr(v, name); 4047 if (value == NULL) 4048 err = -1; 4049 else >>> 4050 err = PyDictSetItem(locals, name, value); 4051 PyDECREF(name); ... } Changing PyDictSetItem in line 4050 with PyObjectSetAttr could fix it.

Best Regards, Daniel


Python-Dev mailing list Python-Dev at python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/guido%40python.org

-- --Guido van Rossum (home page: http://www.python.org/~guido/)



More information about the Python-Dev mailing list