开发者

Which is the closest Python equivalent to Perl::Tidy?

Coming from Perl I've been used to hitting C-c t to reformat my code according to pre-defined Perl::Tidy rules. Now, with Python I'm astonished to learn that there is nothing that even remotely resembles the power of Perl::Tidy. PythonTidy 1.20 looks almost appropriate, but barfed at first mis-aligned line ("unexpected indent").

In particular, I'm looking for the following:

  • Put PEP-8 into use as far as possible (the following items are essentially derivations of this one)
  • Convert indentation tabs to spaces
  • Remove trailing spaces
  • Break up code according to the predefined line-length as far as it goes (Eclipse-style string splitting and splitting method chains)
  • Normalize whitespace around
  • (bonus feature, optional) Re-format code including indentation.

Right now, I'm going throught someone else's code and corre开发者_Python百科ct everything pep8 and pyflakes tell me, which is mostly "remove trailing space" and "insert additional blank line". While I know that re-indentation is not trivial in Python (even though it should be possible just by going through the code and remembering the indentation), other features seem easy enough that I can't believe nobody has implemented this before.

Any recommendations?

Update: I'm going to take a deeper look at PythonTidy, since it seems to go into the right direction. Maybe I can find out why it barfs at me.


There is a reindent.py script distributed with python in the scripts directory.


untabify.py (Tools/scripts/untabify.py from the root directory of a Python source distribution) should fix the tabs, which may be what's stopping Python Tidy from doing the rest of the work.


Have you tried creating a wrapper around pythontidy? There's one for the sublime editor here.

Also, does pythontidy break up long lines properly for you? When I have a long line that ends in a tuple, it creates a new line for every entry in the tuple, instead of using Python's implied line continuation inside parentheses, brackets and braces as suggested by PEP-8.


I have used autopep8 for this purpose and found it handy.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜