On 7/23/05, Jonathan Jacobs <[EMAIL PROTECTED]> wrote: > config = {} > exec file('config.py') in config > del config['__builtins__'] > [...] > My patch however doesn't add a "__builtins__" key to the > mappable types, so the above code would actually error out in IronPython > with my patch, so someone probably wants to add that.
No, your code relies on an implementation detail. A Python implementation may add any key, like __builtins__, to the dictionary, but is not at all required to. Your code should check for the existence of the key before deleting it. There are cases where the difference between Python-the-language and CPython-the-implementation is not clear, but in this case it's explicitly documented in <http://www.python.org/doc/current/ref/exec.html>: As a side effect, an implementation may insert additional keys into the dictionaries given besides those corresponding to variable names set by the executed code. For example, the current implementation may add a reference to the dictionary of the built-in module __builtin__ under the key __builtins__ (!). - Willem _______________________________________________ users-ironpython.com mailing list users-ironpython.com@lists.ironpython.com http://lists.ironpython.com/listinfo.cgi/users-ironpython.com