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

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to