This action runs Flake8 over a project and comment on PR the errors found.
make install
# or
python3 -m pip install -r requirements.txt
make test
# or
python3 -m pytest
make flake8
# or
python3 -m flake8 --append-config=setup.cfg
To call the evaluator action you must create .github/workflows/main.yml
in the project repo with the release version.
Check the latest release here.
on:
workflow_dispatch:
inputs:
dispatch_token:
description: 'Token that authorize the dispatch'
required: true
head_sha:
description: 'Head commit SHA that dispatched the workflow'
required: true
pr_author_username:
description: 'Pull Request author username'
required: true
pr_number:
description: 'Pull Request number that dispatched the workflow'
required: true
jobs:
evaluator_job:
name: Evaluator Job
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
- name: Flake8 Linter Step
uses: betrybe/flake8-linter-action@v*
id: flake8_linter
with:
token: ${{ secrets.GITHUB_TOKEN }}
pr_number: ${{ github.event.inputs.pr_number }}
-
token
Required
The GitHub token to use for making API requests.
-
pr_number
Required
Pull Request number that triggered the build.
In order to configure the Flake8 analysis for your project, you must create or modify the setup.cfg
file at the root of your project.
Here follows an example for setup.cfg
:
# .flake8
#
# DESCRIPTION
# Configuration file for the python linter flake8.
#
# This configuration is based on the generic
# configuration published on GitHub.
#
# AUTHOR
# krnd
#
# VERSION
# 1.0
#
# SEE ALSO
# http://flake8.pycqa.org/en/latest/user/options.html
# http://flake8.pycqa.org/en/latest/user/error-codes.html
# https://pycodestyle.readthedocs.io/en/latest/intro.html#error-codes
# https://gist.github.com/krnd
#
[flake8]
################### PROGRAM ################################
# Specify the number of subprocesses that Flake8 will use to run checks in parallel.
jobs = auto
################### OUTPUT #################################
########## VERBOSITY ##########
# Increase the verbosity of Flake8’s output.
verbose = 0
# Decrease the verbosity of Flake8’s output.
quiet = 0
########## FORMATTING ##########
# Select the formatter used to display errors to the user.
format = default
# Print the total number of errors.
count = True
# Print the source code generating the error/warning in question.
show-source = True
# Count the number of occurrences of each error/warning code and print a report.
statistics = True
########## TARGETS ##########
# Redirect all output to the specified file.
output-file = .flake8.log
# Also print output to stdout if output-file has been configured.
tee = True
################### FILE PATTERNS ##########################
# Provide a comma-separated list of glob patterns to exclude from checks.
exclude =
# git folder
.git,
# python cache
__pycache__,
# Provide a comma-separate list of glob patterns to include for checks.
filename =
*.py
################### LINTING ################################
########## ENVIRONMENT ##########
# Provide a custom list of builtin functions, objects, names, etc.
builtins =
########## OPTIONS ##########
# Report all errors, even if it is on the same line as a `# NOQA` comment.
disable-noqa = False
# Set the maximum length that any line (with some exceptions) may be.
max-line-length = 100
# Set the maximum allowed McCabe complexity value for a block of code.
max-complexity = 10
# Toggle whether pycodestyle should enforce matching the indentation of the opening bracket’s line.
# incluences E131 and E133
hang-closing = True
########## RULES ##########
# ERROR CODES
#
# E/W - PEP8 errors/warnings (pycodestyle)
# F - linting errors (pyflakes)
# C - McCabe complexity error (mccabe)
#
# W503 - line break before binary operator
# Specify a list of codes to ignore.
ignore =
W503
# Specify the list of error codes you wish Flake8 to report.
select =
E,
W,
F,
C
# Enable off-by-default extensions.
enable-extensions =
########## DOCSTRING ##########
# Enable PyFlakes syntax checking of doctests in docstrings.
doctests = True
# Specify which files are checked by PyFlakes for doctest syntax.
include-in-doctest =
# Specify which files are not to be checked by PyFlakes for doctest syntax.
exclude-in-doctest =
This example was got from this Gist.