Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

Make it easier to use as a module rather than a script #35

Closed
treelinelabs opened this Issue · 11 comments

5 participants

@treelinelabs

For writing (say) git/hg hooks, it'd much more convenient to be able to import pep8 as a module and use it inline, rather than having to shell out to run it as a script, capture and parse the output, etc.

This would require some fairly non-trivial changes -- e.g. there's currently lots of inline printing and a global options variable -- and there would be some api decisions to make.

I might take a look at putting together a pull request if there is interest...is there?

@mjumbewu

I'm interested and was in fact about to take a look at that myself (which is why I was checking the issues).

@treelinelabs

I started on this, but the requisite changes were rather extensive, and I decided I need to take some time to think through what an appropriate approach is.

@florentx
Collaborator

See also the current possibilities which are summarized on issue #66.
#66 (comment)

@florentx florentx closed this
@josharian

#66 appears to offer a functional work-around.

I just have to say, though, that it's not really a happy thing to have to choose between shelling out (PITA), monkey patching stdout (ugh), and subclassing (fragile, ugly). And it'd be much cleaner not to have to call pep8.process_options with a set of constructed strings.

I hope that this was closed as a duplicate of #66, not as a wontfix.

(And lest I appear just a grumpy troll who's complaining about free stuff, I should note that I have put days of work into a branch of pep8, trying to fix these issues, and that I wrote and maintain lumberlabs/pygithooks, which uses pep8 under the hood. I care, which is why I'm being vocal.)

@florentx florentx reopened this
@florentx
Collaborator

I consider there's interest in some enhancement.

@florentx
Collaborator

Upcoming release should fix it, at the cost of backward incompatibility.
Please test.

@florentx florentx closed this
@florentx
Collaborator

Sample use:

import pep8

pep8style = pep8.StyleGuide(quiet=True)
result = pep8style.check_files(['testsuite/E27.py', 'testsuite/E12.py'])

print("Found %s errors (and warnings)" % result.total_errors)

There's a shortcut when checking a single file.

import pep8

fchecker = pep8.Checker('testsuite/E27.py', show_source=True)
file_errors = fchecker.check_all()

print("Found %s errors (and warnings)" % file_errors)
@josharian

Awesome! I'll play with this soon and get it integrated. Many, many thanks.

@JensRantil

This is great news! Will this API be documented somewhere, too?

@florentx
Collaborator

Patch accepted :-)

See issue #105

@JensRantil

Fair enough. I'll see what I can come up with :-)

@JensRantil JensRantil referenced this issue from a commit in JensRantil/pep8
@JensRantil JensRantil Readme now describes how to execute from Python
Commit related to issue #35 and #105.
663818e
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.