Parsers

FlakeHeaven lints not only *.py files but also a number of additional formats:

For md and rst code block must have explicitly specified language, either python or pycon.

Ignored codes

Parsers for md, rst and yaml ignore the following codes:

  • E302 (pycodestyle): “expected %s blank lines, found %d”

  • E303 (pycodestyle): “too many blank lines (%d)”

  • E305 (pycodestyle): “expected %s blank lines after class or function definition, found %d”

  • E402 (pycodestyle): “module level import not at top of file”

The reason is that all code blocks are validated in-place, with commenting out everything else. So, after that code blocks can be closer or further than pycodestyle expects.

Performance

If you have performance issues because FlakeHeaven parses more files than needed, tune ignore to exclude specific files or directories, or filename to exclude extensions.

However, keep in mind that FlakeHeaven has a few hacks to be as fast as possible:

  1. It caches results. Cache invalidates after 24 hours or if the configuration was changed.

  2. It doesn’t run plugins against files without code blocks. Or against empty *.py files.

  3. It doesn’t create temporary files, all the magic is done on the fly.

So, most of the runs will be fast without any tuning.