forked from andreoliwa/nitpick
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.pre-commit-config.yaml
161 lines (158 loc) · 5.42 KB
/
.pre-commit-config.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
# https://pre-commit.com
# https://pre-commit.com/hooks.html
# https://pre-commit.com/#creating-new-hooks
# Thanks to https://github.com/sloria/environs/blob/master/.pre-commit-config.yaml
# https://pre-commit.com/#top_level-default_language_version
default_language_version:
python: python3.7
# https://pre-commit.ci/#configuration
ci:
skip: [local-nitpick, autofix-docs, pylint]
repos:
- repo: local
hooks:
# Run nitpick also with tox, because local repos don't seem to work well with https://pre-commit.ci/
# Nitpick doesn't run on pre-commit.ci because it needs HTTP requests to get the default style from GitHub
# pre-commit.ci intentionally does not allow network access at runtime for free tier as this is easy to abuse (miners, etc.)
# https://github.com/pre-commit-ci/issues/issues/47
- id: local-nitpick
name: "nitpick fix (auto fixing files, local hook)"
entry: poetry run nitpick fix
language: system
always_run: true
pass_filenames: false
stages: [commit]
- id: autofix-docs
name: Autofix ReST documentation from docstrings and TOML
entry: poetry run python3 docs/autofix_docs.py
language: system
always_run: true
pass_filenames: false
types: [python, toml]
stages: [commit]
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.3.0
hooks:
- id: debug-statements
- id: end-of-file-fixer
- id: trailing-whitespace
- repo: https://github.com/asottile/pyupgrade
rev: v3.0.0
hooks:
- id: pyupgrade
args: [--py37-plus]
- repo: https://github.com/aio-libs/sort-all # TODO: style(pre-commit): add sort-all
rev: v1.2.0
hooks:
- id: sort-all
language_version: python3.8
- repo: https://github.com/PyCQA/autoflake
rev: v1.7.1
hooks:
- id: autoflake
args:
[
--in-place,
--remove-all-unused-imports,
--remove-unused-variables,
--remove-duplicate-keys,
--ignore-init-module-imports,
--exclude,
compat.py,
]
- repo: https://github.com/psf/black
rev: 22.10.0
hooks:
- id: black
args: [--safe, --quiet]
- repo: https://github.com/asottile/blacken-docs
rev: v1.12.1
hooks:
- id: blacken-docs
additional_dependencies: [black==22.1.0]
- repo: https://github.com/PyCQA/isort
rev: 5.10.1
hooks:
- id: isort
- repo: https://github.com/pre-commit/pygrep-hooks
rev: v1.9.0
hooks:
- id: python-check-blanket-noqa
- id: python-check-mock-methods
- id: python-no-eval
- id: python-no-log-warn
- id: rst-backticks
- repo: https://github.com/pre-commit/mirrors-prettier
rev: v3.0.0-alpha.1
hooks:
- id: prettier
stages: [commit]
- repo: https://github.com/PyCQA/flake8
rev: 5.0.4
hooks:
- id: flake8
language_version: python3.8
additional_dependencies:
[
flake8-blind-except,
flake8-bugbear,
flake8-comprehensions,
flake8-debugger,
flake8-docstrings,
flake8-isort,
flake8-polyfill,
flake8-pytest,
flake8-quotes,
flake8-typing-imports,
yesqa,
]
- repo: https://github.com/pre-commit/mirrors-mypy
rev: v0.982
hooks:
- id: mypy
# https://mypy.readthedocs.io/en/stable/command_line.html#cmdoption-mypy-show-error-codes
args: [--show-error-codes]
# Install additional types to fix new warnings that appeared on v0.910:
# https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports
# "using --install-types is problematic"
# see https://github.com/pre-commit/mirrors-mypy#using-mypy-with-pre-commit
# attrs should be installed instead of types-attrs
# https://pypi.org/project/types-attrs/
# Note: The attrs package includes type annotations or type stubs since version 18.2.0.
# Please uninstall the types-attrs package if you use this or a newer version.
# See also https://github.com/python/mypy/issues/10084#issuecomment-778641361
additional_dependencies:
[types-freezegun, types-toml, attrs, types-requests, types-python-slugify, types-dataclasses]
# Run pylint also with tox, because local repos don't seem to work well with https://pre-commit.ci/
# Note for future attempts with pylint as a pre-commit hook:
# Using https://github.com/PyCQA/pylint doesn't work, it's a huge pain dealing with [MASTER]init-hook.
# This solution helped: https://github.com/pre-commit/pre-commit/issues/1309
- repo: local
hooks:
- id: pylint
name: pylint
entry: .tox/lint/bin/pylint
language: system
types: [python]
exclude: tests/
- repo: https://github.com/PyCQA/bandit
rev: 1.7.4
hooks:
- id: bandit
args: [--ini, setup.cfg]
exclude: tests/
- repo: https://github.com/shellcheck-py/shellcheck-py
rev: v0.8.0.4
hooks:
- id: shellcheck
- repo: https://github.com/openstack/bashate
rev: 2.1.1
hooks:
- id: bashate
# https://docs.openstack.org/bashate/latest/man/bashate.html#options
args: [-i, E006]
- repo: https://github.com/commitizen-tools/commitizen
rev: v2.35.0
hooks:
- id: commitizen
stages: [commit-msg]