grunt-flake8

0.1.3 • Public • Published

grunt-flake8

Lint your Python projects with flake8. [flake8] is a linting tool for project that combines PyFlakes, PEP8, and McCabe's Cyclomatic Complexity script.

Important

flake8 has its own global and project-level configurations. Any values set in your Gruntfile will override those configurations. If a value is not set in your Gruntfile configuration, flake8 will then use the available project and global level configurations.

Make sure you are running Grunt from within whatever Python virtual environment that flake8 is installed.

Getting Started

This plugin requires Grunt ~0.4.2

If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:

npm install grunt-flake8 --save-dev

Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:

grunt.loadNpmTasks('grunt-flake8');

The "flake8" task

Overview

In your project's Gruntfile, add a section named flake8 to the data object passed into grunt.initConfig().

grunt.initConfig({
  flake8: {
    options: {
      // Task-specific options go here.
    },
    src: [
      // Files to line go here.
    ],
  },
});

Options

options.errorsOnly

Type: Boolean Default value: false

If true, the files passing flake8 will not be shown.

options.spawnLimit

Type: Integer Default value: 10

The maximum amount of parallel files that async will allow to be accessed at once.

options.force

Type: Boolean Default value: false

If true, flake8 will not fail even if there are errors.

options.maxComplexity

Type: Integer Default value: unset

If set, flake8 will enforce a maximum cyclomatic complexity.

options.maxLineLength

Type: Integer Default value: 79

The maximum characters in a line. If you want to disable this check, add E501 to ignore.

options.select

Type: Array of String Default value: []

PEP8 rules to enforce. Use the codes given in the PEP8 documentation.

options.ignore

Type: Array of String Default value: []

PEP8 rules to ignore. Use the codes given in the PEP8 documentation.

options.hangClosing.

Type: Boolean Default value: false

Hang closing bracket instead of matching indentation of opening bracket's line.

options.format

Type: String Default value: default

The output style. 'default' and 'pylint' styles are built in by default but flake8 can accept custom output styles. See documenation.

options.showSource

Type: Boolean Default value: false

Show the source of the linting error.

options.first

Type: Boolean Default value: false

Show only the first instance of a linting error.

options.showPep8

Type: Boolean Default value: false

Show the PEP8 rule of the linting error. Overrides first configuration.

options.quiet

Type: Boolean Default value: false

Show the quiet output from flake8.

options.verbose

Type: Boolean Default value: false

Show the verbose output from flake8.

options.statistics

Type: Boolean Default value: false

Show statistics from the linting.

options.benchmark

Type: Boolean Default value: false

Show the performance information from flake8.

Usage Examples

Default Options

These options will simply flake8 all of your python files in your Grunt project.

grunt.initConfig({
  flake8: {},
    src: ['**/*.py']
  },
});

Custom Options

These options will enforce these specific rules. Note that these options will overwrite global- and project-level settings for flake8.

grunt.initConfig({
  flake8: {
    options: {
      maxLineLength: 120,
      maxComplexity: 10,
      format: 'pylint',
      hangClosing: true,
      ignore: ['W292', 'C901', 'F401']
    },
    src: ['apps/**/*.py', 'tests/test.py']
  },
});

Contributing

In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.

Contributors

Credit

Release History

v0.1.3 - Added back in the error output. v0.1.2 - Fixed a critical bug with me not understanding async. v0.1.1 - Used async to be able to handle larger projects. v0.1.0 - Initial release.

Readme

Keywords

none

Package Sidebar

Install

npm i grunt-flake8

Weekly Downloads

2

Version

0.1.3

License

none

Last publish

Collaborators

  • btholt