On Fri, May 16, 2014 at 7:18 PM, Marko Rauhamaa <ma...@pacujo.net> wrote: > If every bit of your Python text conveys information, obviously, it > can't be abstracted. I don't believe that to be the case, though. So > this AST should contain all *actual* information worth conveying and > strip away irrelevant stuff. > > Examples: > > * Function definition order. > > * Indentation depth. > > * Vertical empty space.
* Logical layout as expressed by whitespace and specific line breaks. Compare these two assignment statements: area = (base*base + extension*extension + annex*annex + (annex-extension)*annex + triangle*triangle/2 + circle*circle*math.PI + sphere*sphere*4*math.PI) area = (base*base + extension*extension + annex*annex + (annex-extension)*annex + triangle*triangle/2 + circle*circle*math.PI + sphere*sphere*4*math.PI) Both are wrapped to sixty characters, which means they can be indented twenty without breaking PEP 8. One of them takes up only three lines, the other takes up four. But the first one groups the annex's terms, separates out the triangle, groups the circular elements, and presumably corresponds accurately to the (mythical) real-world geometry that it's implementing. How are you going to cope with this distinction? That's real, useful information, which the AST doesn't carry. (You might argue that each of these lines should have a comment at the end of it or above it, which would provide that grouping. But in that case, you lose the canonicalization of anything with trailing comments or interspersed comments, meaning that you effectively can't reformat anything with comments in it.) ChrisA -- https://mail.python.org/mailman/listinfo/python-list