[Python-ideas] A nice __repr__ for the ast.* classes?
Haoyi Li
haoyi.sg at gmail.com
Wed May 1 03:12:55 CEST 2013
Wouldn't it be nice if this
>>> import ast
>>> print repr(ast.parse("(1 + 1)").body[0].value)
<_ast.BinOp object at 0x0000000001E94B38>
printed something more useful?
>>> print repr(ast.parse("(1 + 1)").body[0].value)
BinOp(left=Num(n=1), op=Add(), right=Num(n=1))
I've been doing some work on macropy <https://github.com/lihaoyi/macropy>,
which uses the ast.* classes extensively, and it's annoying that we have to
resort to dirty-tricks like monkey-patching the AST classes (for CPython
2.7) or even monkey-patching __builtin__.repr (to get it working on PyPy)
just to get
eval(repr(my_ast)) == my_ast
to hold true. And a perfectly good solution already exists in the
ast.dump() method, too! (It would also be nice if "==" did a structural
comparison on the ast.* classes too, but that's a different issue).
-Haoyi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20130430/52c0370b/attachment.html>
More information about the Python-ideas
mailing list