# built-in
from enum import IntEnum
from types import MappingProxyType
# app
from ._version import __version__
NAME = 'flakeheaven'
VERSION = __version__
# our own modern defaults
DEFAULTS = dict(
# redefined defaults
filename=['*.py', '*.ipynb', '*.md', '*.yml', '*.yaml', '*.rst', '*.rest'],
format='colored',
max_line_length=90,
# flakeheaven options
baseline=None,
safe=False,
plugins={
'pyflakes': ['+*'],
'pycodestyle': ['+*'],
},
exceptions={},
# disabled by flakeheaven but required by flake8
extend_exclude=[],
ignore=[],
extend_ignore=[],
select=[],
enable_extensions=[],
per_file_ignores=[],
statistics=False,
)
[docs]class ExitCode(IntEnum):
OK = 0
# CLI entrypoint
NO_COMMAND = 1
INVALID_COMMAND = 2
# `installed`, `missing` command
NO_PLUGINS_INSTALLED = 11
# `show` command
NO_PLUGIN_NAME = 21
IMPORT_ERROR = 22
NO_CODES = 23
# shared for commands
TOO_MANY_ARGS = 31
NOT_ENOUGH_ARGS = 32
# `missing` command
PLUGINS_MISSING = 41
# If a plugin isn't there, it still should be supported.
# However, support for these plugins is tested on CI.
KNOWN_PLUGINS = MappingProxyType({
'dlint': 'https://github.com/dlint-py/dlint',
'flake8-2020': 'https://github.com/asottile/flake8-2020',
'flake8-alfred': 'https://github.com/datatheorem/flake8-alfred',
'flake8-annotations-complexity': 'https://github.com/best-doctor/flake8-annotations-complexity',
'flake8-bandit': 'https://github.com/tylerwince/flake8-bandit',
'flake8-black': 'https://github.com/peterjc/flake8-black',
'flake8-broken-line': 'https://github.com/sobolevn/flake8-broken-line',
'flake8-builtins': 'https://github.com/gforcada/flake8-builtins',
'flake8-coding': 'https://github.com/tk0miya/flake8-coding',
'flake8-cognitive-complexity': 'https://github.com/Melevir/flake8-cognitive-complexity',
'flake8-comprehensions': 'https://github.com/adamchainz/flake8-comprehensions',
'flake8-debugger': 'https://github.com/JBKahn/flake8-debugger',
'flake8-docstrings': 'https://gitlab.com/pycqa/flake8-docstrings', # pydocstyle
'flake8-eradicate': 'https://github.com/sobolevn/flake8-eradicate',
'flake8-executable': 'https://github.com/xuhdev/flake8-executable',
'flake8-expression-complexity': 'https://github.com/best-doctor/flake8-expression-complexity',
'flake8-fixme': 'https://github.com/tommilligan/flake8-fixme',
'flake8-functions': 'https://github.com/best-doctor/flake8-functions',
'flake8-logging-format': 'https://github.com/globality-corp/flake8-logging-format',
'flake8-mutable': 'https://github.com/ebeweber/flake8-mutable',
'flake8-mypy': 'https://github.com/ambv/flake8-mypy',
'flake8-pep3101': 'https://github.com/gforcada/flake8-pep3101',
'flake8-pie': 'https://github.com/sbdchd/flake8-pie',
'flake8-print': 'https://github.com/JBKahn/flake8-print',
'flake8-printf-formatting': 'https://github.com/atugushev/flake8-printf-formatting',
'flake8-pyi': 'https://github.com/ambv/flake8-pyi',
'flake8-quotes': 'https://github.com/zheller/flake8-quotes',
'flake8-requirements': 'https://github.com/Arkq/flake8-requirements',
'flake8-rst-docstrings': 'https://github.com/peterjc/flake8-rst-docstrings',
'flake8-spellcheck': 'https://github.com/MichaelAquilina/flake8-spellcheck',
'flake8-sql': 'https://github.com/pgjones/flake8-sql',
'flake8-string-format': 'https://github.com/xZise/flake8-string-format',
'flake8-todo': 'https://github.com/schlamar/flake8-todo',
'flake8-use-fstring': 'https://github.com/MichaelKim0407/flake8-use-fstring',
'flake8-variables-names': 'https://github.com/best-doctor/flake8-variables-names',
# framework-specific
'flake8-django': 'https://github.com/rocioar/flake8-django',
'flake8-scrapy': 'https://github.com/stummjr/flake8-scrapy',
'pandas-vet': 'https://github.com/deppen8/pandas-vet',
# tests
'flake8-aaa': 'https://github.com/jamescooke/flake8-aaa',
'flake8-mock': 'https://github.com/aleGpereira/flake8-mock',
'flake8-pytest': 'https://github.com/vikingco/flake8-pytest',
'flake8-pytest-style': 'https://github.com/m-burst/flake8-pytest-style',
# PyCQA
'flake8-bugbear': 'https://github.com/PyCQA/flake8-bugbear',
'flake8-commas': 'https://github.com/PyCQA/flake8-commas',
'mccabe': 'https://github.com/PyCQA/mccabe',
'pep8-naming': 'https://github.com/PyCQA/pep8-naming',
'pylint': 'https://github.com/PyCQA/pylint',
# imports
'flake8-future-import': 'https://github.com/xZise/flake8-future-import',
'flake8-import-order': 'https://github.com/PyCQA/flake8-import-order',
'flake8-isort': 'https://github.com/gforcada/flake8-isort',
'flake8-absolute-import': 'https://github.com/bskinn/flake8-absolute-import',
'flake8-tidy-imports': 'https://github.com/adamchainz/flake8-tidy-imports',
# built-in in flake8
'pycodestyle': 'https://github.com/PyCQA/pycodestyle',
'pyflakes': 'https://github.com/PyCQA/pyflakes',
})