From: Neal Norwitz Date: Tue, 17 Dec 2002 01:08:06 +0000 (+0000) Subject: Fix SF # 641111, Undocumented side effect of eval X-Git-Tag: v2.3c1~2986 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=046b8a7244b9d5fe1ff7ea4557a321df5dc46e77;p=python Fix SF # 641111, Undocumented side effect of eval Try to clear up confusion about the current globals being copied into a globals dict passed to eval(). This wording (more or less) was suggested in bug report. It should probably be made clearer. Backport candidate. --- diff --git a/Doc/lib/libfuncs.tex b/Doc/lib/libfuncs.tex index d29155dfdd..ea48539993 100644 --- a/Doc/lib/libfuncs.tex +++ b/Doc/lib/libfuncs.tex @@ -314,7 +314,12 @@ class C: \var{expression} argument is parsed and evaluated as a Python expression (technically speaking, a condition list) using the \var{globals} and \var{locals} dictionaries as global and local name - space. If the \var{locals} dictionary is omitted it defaults to + space. If the \var{globals} dictionary is present and lacks + '__builtins__', the current globals are copied into \var{globals} before + \var{expression} is parsed. This means that \var{expression} + normally has full access to the standard + \refmodule[builtin]{__builtin__} module and restricted environments + are propagated. If the \var{locals} dictionary is omitted it defaults to the \var{globals} dictionary. If both dictionaries are omitted, the expression is executed in the environment where \keyword{eval} is called. The return value is the result of the evaluated expression.