Today, I released Flake8 3.0.0b1. You can try it out by running:
pip install --pre flake8
This marks the start of the culmination of several months worth of work and a couple years of hammock driven development (mostly spent ruminating). You can read about the list of changes in the release notes. While reading those you might notice a few things:
- Rewrite our documentation from scratch!
- Drop explicit support for Python 2.6, 3.2, and 3.3
- Remove dependence on pycodestyle for file processing, plugin dispatching, and more.
I did some of this for my own well-being. Flake8 was becoming increasingly stressful to maintain. pycodestyle (formerly pep8) is only now starting to see reliable maintenance thanks to Ian Lee. It also was severely hampering Flake8's ability to deliver certain features to users. For example, we now allow for far more powerful formatters in Flake8 that can be written as third-party plugins (like the plugins you've come to know and love). This means someone could write a plugin to colorize Flake8's output, or, they could write a plugin that returns the output as a JSON array. We also added the ability to use # noqa for all error codes, but also to specify a list of which error codes to specifically ignore.
Having re-factored Flake8 entirely from the ground up, I now know exactly how every last piece of it works. As users come up with interesting and impactful features, we can implement them far faster than we ever could before. That includes a feature to rewrite code automatically (a little like gofmt). This feature is stubbed in, but not fully operational yet.
I have spent several months working on this for you (and for me). Please, follow the contributor's guide to report bugs or other problems. If you find something not in the release notes that should be, please send a pull request!