Clodoaldo Pinto wrote: > Michael Spencer wrote: > >> http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/364469 > > Very nice work. It will be very useful. Thanks. > > Only a small problem when I try to evaluate this: > > safe_eval('True') > > I get: > > Traceback (most recent call last): > File "safe_eval.py", line 63, in ? > safe_eval('True') > File "safe_eval.py", line 59, in safe_eval > return walker.visit(ast) > File "safe_eval.py", line 19, in visit > return meth(node, **kw) > File "safe_eval.py", line 23, in default > return self.visit(child, **kw) > File "safe_eval.py", line 19, in visit > return meth(node, **kw) > File "safe_eval.py", line 47, in visitName > node.name, node) > __main__.Unsafe_Source_Error: Line 1. Strings must be quoted: True > > This is just to let you know. I can live with that. I just replace True > for 1. > > Regards, Clodoaldo Pinto > Alternatively, you could edit visitName to allow 'True' and any other identifiers you specify e.g. (untested):
allowed = {"True": True, "False": False} def visitName(self,node, **kw): try: return self.allowed[node.name] except KeyError: raise Unsafe_Source_Error("Strings must be quoted", node.name, node) Cheers Michael -- http://mail.python.org/mailman/listinfo/python-list