Writing Plugins for Flake8

Since Flake8 2.0, the Flake8 tool has allowed for extensions and custom plugins. In Flake8 3.0, we’re expanding that ability to customize and extend and we’re attempting to thoroughly document it. Some of the documentation in this section may reference third-party documentation to reduce duplication and to point you, the developer, towards the authoritative documentation for those pieces.

Getting Started

To get started writing a Flake8 plugin you first need:

  • An idea for a plugin

  • An available package name on PyPI

  • One or more versions of Python installed

  • A text editor or IDE of some kind

  • An idea of what kind of plugin you want to build:

    • Formatter

    • Check

Once you’ve gathered these things, you can get started.

All plugins for Flake8 must be registered via entry points. In this section we cover:

  • How to register your plugin so Flake8 can find it

  • How to make Flake8 provide your check plugin with information (via command-line flags, function/class parameters, etc.)

  • How to make a formatter plugin

  • How to write your check plugin so that it works with Flake8 2.x and 3.x

Video Tutorial

Here’s a tutorial which goes over building an ast checking plugin from scratch: