[Python-ideas] eval_literal

jab at math.brown.edu jab at math.brown.edu
Mon Jun 13 18:13:39 EDT 2016


(Riffing off some discussion in another thread, I had another idea I
wanted to throw out there.)

Given that Eval Really Is Dangerous[1], has something like this ever
been considered?:

>>> int(str(42))
42
>>> float(str(42.0))
42.0
>>> bool(str(False))  # :(
True
>>> eval_literal('42')
42
>>> eval_literal('42.0')
42.0
>>> eval_literal('False')  # :)
False
>>> eval_literal('', default=False)  # shout out to PEP 463 / Michael Selik
False

i.e. An extremely limited version of eval, possibly just for literals
or even literal atoms, that would make it safe?


[1] http://nedbatchelder.com/blog/201206/eval_really_is_dangerous.html


More information about the Python-ideas mailing list