From 046b8a7244b9d5fe1ff7ea4557a321df5dc46e77 Mon Sep 17 00:00:00 2001 From: Neal Norwitz Date: Tue, 17 Dec 2002 01:08:06 +0000 Subject: [PATCH] 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. --- Doc/lib/libfuncs.tex | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Doc/lib/libfuncs.tex b/Doc/lib/libfuncs.tex index d29155dfddf..ea48539993d 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.