![](https://secure.gravatar.com/avatar/cd2e442c42c95ed534e4197df4300222.jpg?s=120&d=mm&r=g)
2009/8/19 Frank Wierzbicki <fwierzbicki@gmail.com>:
Before I start complaining, I want to mention what a huge help it has been to be able to directly compare the AST exposed by ast.py in making Jython a better Python. Thanks for that!
Now on to the complaints: Though I recently added support for this in Jython, I don't like that nodes can be defined without required attributes, for example:
node = ast.Assign()
Is valid, even though it requires "node.targets" and "node.value" (I'm less concerned about the required lineno and col_offset, as I can understand holding off on these so that you can just use fix_missing_locations to fill these in for you).
+1
My other (bigger) gripe is that you can define these values with arbitrary objects that will blow up at parse time. So for example you can write:
node = ast.Assign() node.targets = "whatever"
Which, when you try to parse, blows up with "TypeError: Assign field "targets" must be a list, not a str". I'd be much happier if this blew up right away when you try to make the assignment. At the moment, this is how it works in Jython (though I could support this with some contorting).
I also think this is a good idea, but this also causes an asymmetry. I would still be able to do this: node = ast.Module([]) node.body.append("random stuff") and not have it type checked until it is compiled. This would be hard to fix, though, and I think it is worth living with.
BTW -- I *am* volunteering to attempt to implement these things in CPython if there is support :)
Very generous. :) -- Regards, Benjamin