The simpler fix is to ensure that the filename isn't the full path to
the temporary file before we check to see if it should be excluded or if
it should even match.
This also fixes a bug I found while testing the pull request in which no
files are checked.
Add --output-file option
Addresses #15
This is, however, unfortunately affected by #17. That will need to be fixed before this can be merged.
See merge request !15
Previously, it was entirely plausible for us to remove something from
options.ignore overzealously. This is more confined logic and much more akin
to what I was intending the behaviour to be.
Extra include eggs
Add `.eggs` and `*.egg` to `EXTRA_EXCLUDE`
This is because these are usually downloaded by setuptools and they're usually other people's code so you don't want to check them.
```
[marca@marca-mac2 requests-unixsocket]$ flake8
./.eggs/pbr-0.10.0-py2.7.egg/pbr/packaging.py:740:17: E265 block comment should start with '# '
./pbr-0.10.0-py3.4.egg/pbr/packaging.py:740:17: E265 block comment should start with '# '
```
See merge request !10
Exit Flake8Command.run() cleanly if style checks pass
When using distutils/setuptools, it is common to perform several commands in sequence. For example: `python setup.py flake8 bdist_egg`. When `run()` exits by raising a `SystemExit` exception, it causes the entire chain to break - meaning flake8 cannot be used in combination with any other command.
This change simply alters the behavior to exit normally if there were no style violations found. Otherwise, it will exit immediately, as before, with a non-zero exit code.
See merge request !8
Flush stdout
As noted in email, it seems that failing to flush stdout in the sub-processes means that some output might go missing. I've observed this in practice with Syntastic in Vim. Here I flush both stdout and stderr before sending the message back to the main process that will allow it to continue. This makes the problem disappear for me.
It occurs to me that if sub-processes are producing output independently, there is also be a risk that they will badly interleave their output. I haven't looked into this - my primary concern is invocation for a single file at a time.
See merge request !7
I have seen people who place the comment at the bottom of the file and it
would be backwards incompatible if we did anything but preserve it as a search
instead of match
Only match '\s*# flake8[:=]\s*nqa' when it happens at the beginning of a
line. The previous version of this regex is incorrectly hitting the
following line:
# Any "# flake8: noqa" line?
Causing flake8 to not be run on engine.py.
Also fix flake8 issues in engine.py.
Tox 1.6 has a feature to install code into the virtualenv via 'setup.py
develop' This makes it easier to source the tox virtualenv and test code
changes.
In short, pep8's option processing would bomb out if there were neither args
provided or config files present (setup.cfg, tox.ini, .pep8, ...).
--install-hook should work regardless of whether a config file is present or
not, so we use a callback to add an argument to the parser's internal argument
list and skip the check altogether. Links for context are in the comments in
this diff.