This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author berker.peksag
Recipients berker.peksag, docs@python, eryksun, martin.panter, mdk, xcombelle
Date 2018-08-19.00:07:45
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <[email protected]>
In-reply-to
Content
Thank you for the report, Xavier.

This is a duplicate of issue 22057.

PR 8812 clarifies the behavior when a dictionary without a "__builtins__" key is passed as *globals* to eval(). I think that makes the opposite case much easier to understand.

>>> eval("print(spam)", {'__builtins__': {'spam': 'eggs'}})
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1, in <module>
NameError: name 'print' is not defined

>>> eval("print(spam)", {'__builtins__': {'spam': 'eggs', 'print': print}})
eggs

Also, I never needed to pass a dictionary with a "__builtins__" key to eval() before, so I don't think it's an important detail to document.
History
Date User Action Args
2018-08-19 00:07:48berker.peksagsetrecipients: + berker.peksag, docs@python, martin.panter, eryksun, xcombelle, mdk
2018-08-19 00:07:47berker.peksagsetmessageid: <[email protected]>
2018-08-19 00:07:47berker.peksaglinkissue26363 messages
2018-08-19 00:07:45berker.peksagcreate