Public Python API
Flake8 3.0.0 presently does not have a public, stable Python API.
When it does it will be located in flake8.api
and that will
be documented here.
Legacy API
When Flake8 broke its hard dependency on the tricky internals of
pycodestyle, it lost the easy backwards compatibility as well. To help
existing users of that API we have flake8.api.legacy
. This module
includes a couple classes (which are documented below) and a function.
The main usage that the developers of Flake8 observed was using the
get_style_guide()
function and then calling
check_files()
. To a lesser extent,
people also seemed to use the get_statistics()
method on what check_files
returns. We then sought to preserve that
API in this module.
Let’s look at an example piece of code together:
from flake8.api import legacy as flake8
style_guide = flake8.get_style_guide(ignore=['E24', 'W503'])
report = style_guide.check_files([...])
assert report.get_statistics('E') == [], 'Flake8 found violations'
This represents the basic universal usage of all existing Flake8 2.x integrations. Each example we found was obviously slightly different, but this is kind of the gist, so let’s walk through this.
Everything that is backwards compatible for our API is in the
flake8.api.legacy
submodule. This is to indicate, clearly, that
the old API is being used.
We create a flake8.api.legacy.StyleGuide
by calling flake8.api.legacy.get_style_guide()
. We can pass options
to flake8.api.legacy.get_style_guide()
that correspond to the command-line options one might use.
For example, we can pass ignore
, select
, exclude
, format
, etc.
Our legacy API, does not enforce legacy behaviour, so we can combine
ignore
and select
like we might on the command-line, e.g.,
style_guide = flake8.get_style_guide(
ignore=['E24', 'W5'],
select=['E', 'W', 'F'],
format='pylint',
)
Once we have our flake8.api.legacy.StyleGuide
we can use the same methods that we used before,
namely
- StyleGuide.check_files(paths=None)[source]
Run collected checks on the files provided.
This will check the files passed in and return a
Report
instance.
- StyleGuide.init_report(reporter=None)[source]
Set up a formatter for this run of Flake8.
- Parameters:
reporter (type[BaseFormatter] | None)
- Return type:
None
- StyleGuide.input_file(filename, lines=None, expected=None, line_offset=0)[source]
Run collected checks on a single file.
This will check the file passed in and return a
Report
instance.
Warning
These are not perfectly backwards compatible. Not all arguments are respected, and some of the types necessary for something to work have changed.
Most people, we observed, were using
check_files()
. You can use this to specify
a list of filenames or directories to check. In Flake8 3.0, however, we
return a different object that has similar methods. We return a flake8.api.legacy.Report
which
has the method
Most usage of this method that we noted was as documented above. Keep in mind, however, that it provides a list of strings and not anything more malleable.
Autogenerated Legacy Documentation
Module containing shims around Flake8 2.x behaviour.
Previously, users would import get_style_guide()
from flake8.engine
.
In 3.0 we no longer have an “engine” module but we maintain the API from it.
- flake8.api.legacy.get_style_guide(**kwargs)[source]
Provision a StyleGuide for use.
- Parameters:
**kwargs (Any) – Keyword arguments that provide some options for the StyleGuide.
- Returns:
An initialized StyleGuide
- Return type:
- class flake8.api.legacy.StyleGuide(application)[source]
Public facing object that mimic’s Flake8 2.0’s StyleGuide.
Note
There are important changes in how this object behaves compared to the StyleGuide object provided in Flake8 2.x.
Warning
This object should not be instantiated directly by users.
Changed in version 3.0.0.
- Parameters:
application (app.Application)
- property options: Namespace
Return application’s options.
An instance of
argparse.Namespace
containing parsed options.
- class flake8.api.legacy.Report(application)[source]
Public facing object that mimic’s Flake8 2.0’s API.
Note
There are important changes in how this object behaves compared to the object provided in Flake8 2.x.
Warning
This should not be instantiated by users.
Changed in version 3.0.0.
- Parameters:
application (app.Application)