Kwalitee package

Configuration

kwalitee base configuration.

To change it, put a config.py into your instance.

kwalitee.config.CONTEXT

Context for Github.

kwalitee.config.COMPONENTS

List of supported components.

kwalitee.config.ACCESS_TOKEN

Github access token. Used to post statuses and comments. It MUST be set.

kwalitee.config.AUTO_CREATE

Allow anyone to add its repository by setting up the webhook on Github.

Default: False

kwalitee.config.CHECK_COMMIT_MESSAGES

Enable the commit message checks.

Default: True

kwalitee.config.CHECK_WIP

Enable the work-in-progress pull requests checks. Disabled by default.

Default: False

kwalitee.config.CHECK_LICENSE

Enable the license checks.

Default: True

kwalitee.config.CHECK_PEP8

Enable the PEP8 checks.

Default: True

kwalitee.config.CHECK_PYDOCSTYLE

Enable the PYDOCSTYLE checks.

Default: True

kwalitee.config.CHECK_PYFLAKES

Enable the PyFlakes checks. PEP8 checks are required.

Default: True

kwalitee.config.IGNORE

Error codes to ignore.

Default: ['E123', 'E226', 'E24', 'E501', 'E265']

kwalitee.config.SELECT

Error codes to specially enable.

Default: []

kwalitee.config.WORKER_TIMEOUT

Background worker job time window.

Any job taking longer than that will be killed.

RQ default timeout is 180 seconds

kwalitee.config.MIN_REVIEWERS

Minimum number of reviewers for py:func:message check <.kwalitee.check_message>.

Default: 3

kwalitee.config.LABEL_WIP

Label to apply for a work-in-progress pull request.

Default: "in_work"

kwalitee.config.LABEL_REVIEW

Label to apply for a pull request that needs more reviewers.

Default: "in_review"

kwalitee.config.LABEL_READY

Label to apply for a pull request that passes all the checks.

Default: "in_integration"

kwalitee.config.EXCLUDES

List of regex of excluded files.

Default: []

kwalitee.config.AUTHORS

List of filenames containing authors and contributors.

Default: ['AUTHORS.rst',]

kwalitee.config.EXCLUDE_AUTHOR_NAMES

List of author names to be excluded from checking (e.g. known second email addresses).

Default: []

kwalitee.config.ALT_SIGNATURES = ('Reported-by',)

Alternative signatures recognized but not counted as reviewers.

kwalitee.config.COMMIT_MSG_TEMPLATE = '{component}: description (max 50 chars, using nouns)\n\n* Detailed description formatted as a bullet list (using present tense).\n\nSigned-off-by: {author}\n{extra}'

Template used to generate the commit message from the git hook.

kwalitee.config.GITHUB = 'https://github.com/'

Github base URL.

kwalitee.config.GITHUB_REPO = 'https://github.com/{account}/{repository}/'

Github repository URL template.

kwalitee.config.PYDOCSTYLE_MATCH = '(?!test_).*\\.py'

Files checked for PYDOCSTYLE conformance.

kwalitee.config.PYDOCSTYLE_MATCH_DIR = '[^\\.].*'

Directories checkes for PYDOCSTYLE conformance.

kwalitee.config.SIGNATURES = ('Signed-off-by', 'Co-authored-by', 'Tested-by', 'Reviewed-by', 'Acked-by')

Authors and reviewers signatures.

kwalitee.config.TRUSTED_DEVELOPERS = []

Super developers who’s code never fail.

Hooks

Git hooks.

kwalitee.hooks.run(command, raw_output=False)[source]

Run a command using subprocess.

Parameters:
  • command (str) – command line to be run
  • raw_output (bool) – does not attempt to convert the output as unicode
Returns:

error code, output (stdout) and error (stderr)

Return type:

tuple

Checks

Kwalitee checks for PEP8, PYDOCSTYLE, PyFlakes and License.

kwalitee.kwalitee.SUPPORTED_FILES = ('.py', '.html', '.tpl', '.js', '.jsx', '.css', '.less')

Supported file types.

kwalitee.kwalitee.check_author(author, **kwargs)[source]

Check the presence of the author in the AUTHORS/THANKS files.

Rules:

  • the author full name and email must appear in AUTHORS file
Parameters:
  • authors (list) – name of AUTHORS files
  • path (str) – path to the repository home
Returns:

errors

Return type:

list

kwalitee.kwalitee.check_file(filename, **kwargs)[source]

Perform static analysis on the given file.

Parameters:filename (str) – path of file to check.
Returns:errors sorted by line number or None if file is excluded
Return type:list
kwalitee.kwalitee.check_license(filename, **kwargs)[source]

Perform a license check on the given file.

The license format should be commented using # and live at the top of the file. Also, the year should be the current one.

Parameters:
  • filename (str) – path of file to check.
  • year (int) – default current year
  • ignore (list) – codes to ignore, e.g. ('L100', 'L101')
  • python_style (bool) – False for JavaScript or CSS files
Returns:

errors

Return type:

list

kwalitee.kwalitee.check_message(message, **kwargs)[source]

Check the message format.

Rules:

  • the first line must start by a component name
  • and a short description (52 chars),
  • then bullet points are expected
  • and finally signatures.
Parameters:
  • components (list) – compontents, e.g. ('auth', 'utils', 'misc')
  • signatures (list) – signatures, e.g. ('Signed-off-by', 'Reviewed-by')
  • alt_signatures (list) – alternative signatures, e.g. ('Tested-by',)
  • trusted (list) – optional list of reviewers, e.g. ('john.doe@foo.org',)
  • max_length (int) – optional maximum line length (by default: 72)
  • max_first_line (int) – optional maximum first line length (by default: 50)
  • allow_empty (bool) – optional way to allow empty message (by default: False)
Returns:

errors sorted by line number

Return type:

list

kwalitee.kwalitee.check_pep8(filename, **kwargs)[source]

Perform static analysis on the given file.

Parameters:
  • filename (str) – path of file to check.
  • ignore (list) – codes to ignore, e.g. ('E111', 'E123')
  • select (list) – codes to explicitly select.
  • pyflakes (bool) – run the pyflakes checks too (default True)
Returns:

errors

Return type:

list

kwalitee.kwalitee.check_pydocstyle(filename, **kwargs)[source]

Perform static analysis on the given file docstrings.

Parameters:
  • filename (str) – path of file to check.
  • ignore (list) – codes to ignore, e.g. (‘D400’,)
  • match (str) – regex the filename has to match to be checked
  • match_dir (str) – regex everydir in path should match to be checked
Returns:

errors

Return type:

list

See also

PyCQA/pydocstyle

kwalitee.kwalitee.get_options(config=None)[source]

Build the options from the config object.

kwalitee.kwalitee.is_file_excluded(filename, excludes)[source]

Check if the file should be excluded.

Parameters:
  • filename – file name
  • excludes – list of regex to match
Returns:

True if the file should be excluded

Module contents

Tool for checking commit kwalitee.