-
-
Notifications
You must be signed in to change notification settings - Fork 25
/
.pre-commit-config.yaml
137 lines (134 loc) · 4.84 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
# 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.11
# 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.6.0
hooks:
- id: debug-statements
- id: end-of-file-fixer
- id: trailing-whitespace
- repo: https://github.com/google/keep-sorted
rev: v0.5.0
hooks:
- id: keep-sorted
- repo: https://github.com/pappasam/toml-sort
rev: v0.23.1
hooks:
- id: toml-sort-fix
# Don't sort certain TOML files:
# - style-related files: used to generate YAML that might depend on the order
# - poetry.lock: auto-generated file
exclude: (ideas/|resources/|tests/|poetry.lock)
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.6.8
hooks:
- id: ruff
args: [--fix]
# Recommended by pylint, configurable, less destructive than https://github.com/PyCQA/docformatter
- repo: https://github.com/DanielNoord/pydocstringformatter
rev: v0.7.3
hooks:
- id: pydocstringformatter
- repo: https://github.com/aio-libs/sort-all # TODO: style(pre-commit): add sort-all
rev: v1.2.0
hooks:
- id: sort-all
- repo: https://github.com/psf/black
rev: 24.8.0
hooks:
- id: black
args: [--safe, --quiet]
- repo: https://github.com/asottile/blacken-docs
rev: 1.18.0
hooks:
- id: blacken-docs
additional_dependencies: [black==23.7.0]
- repo: https://github.com/pre-commit/pygrep-hooks
rev: v1.10.0
hooks:
- id: python-check-mock-methods
- id: rst-backticks
- repo: https://github.com/pre-commit/mirrors-prettier
rev: v4.0.0-alpha.8
hooks:
- id: prettier
stages: [commit]
- repo: https://github.com/pre-commit/mirrors-mypy
rev: v1.11.2
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/
# The recommended way is to use a local hook:
# https://pylint.pycqa.org/en/latest/user_guide/installation/pre-commit-integration.html
- repo: local
hooks:
- id: pylint
name: pylint
entry: .tox/lint/bin/pylint
language: system
types: [python]
exclude: tests/
- repo: https://github.com/shellcheck-py/shellcheck-py
rev: v0.10.0.1
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: v3.29.1
hooks:
- id: commitizen
stages: [commit-msg]