|
- default_language_version:
- python: python3
-
- repos:
- - repo: https://github.com/pre-commit/pre-commit-hooks
- rev: v4.4.0
- hooks:
- # list of supported hooks: https://pre-commit.com/hooks.html
- - id: trailing-whitespace
- - id: end-of-file-fixer
- - id: check-docstring-first
- - id: check-yaml
- - id: debug-statements
- - id: detect-private-key
- - id: check-executables-have-shebangs
- - id: check-toml
- - id: check-case-conflict
- - id: check-added-large-files
-
- # python code formatting
- - repo: https://github.com/psf/black
- rev: 23.1.0
- hooks:
- - id: black
- args: [--line-length, "99"]
-
- # python import sorting
- - repo: https://github.com/PyCQA/isort
- rev: 5.12.0
- hooks:
- - id: isort
- args: ["--profile", "black", "--filter-files"]
-
- # python upgrading syntax to newer version
- - repo: https://github.com/asottile/pyupgrade
- rev: v3.3.1
- hooks:
- - id: pyupgrade
- args: [--py38-plus]
-
- # python docstring formatting
- - repo: https://github.com/myint/docformatter
- rev: v1.7.4
- hooks:
- - id: docformatter
- args:
- [
- --in-place,
- --wrap-summaries=99,
- --wrap-descriptions=99,
- --style=sphinx,
- --black,
- ]
-
- # python docstring coverage checking
- - repo: https://github.com/econchick/interrogate
- rev: 1.5.0 # or master if you're bold
- hooks:
- - id: interrogate
- args:
- [
- --verbose,
- --fail-under=80,
- --ignore-init-module,
- --ignore-init-method,
- --ignore-module,
- --ignore-nested-functions,
- -vv,
- ]
-
- # python check (PEP8), programming errors and code complexity
- - repo: https://github.com/PyCQA/flake8
- rev: 6.0.0
- hooks:
- - id: flake8
- args:
- [
- "--extend-ignore",
- "E203,E402,E501,F401,F841,RST2,RST301",
- "--exclude",
- "logs/*,data/*",
- ]
- additional_dependencies: [flake8-rst-docstrings==0.3.0]
-
- # python security linter
- - repo: https://github.com/PyCQA/bandit
- rev: "1.7.5"
- hooks:
- - id: bandit
- args: ["-s", "B101"]
-
- # yaml formatting
- - repo: https://github.com/pre-commit/mirrors-prettier
- rev: v3.0.0-alpha.6
- hooks:
- - id: prettier
- types: [yaml]
- exclude: "environment.yaml"
-
- # shell scripts linter
- - repo: https://github.com/shellcheck-py/shellcheck-py
- rev: v0.9.0.2
- hooks:
- - id: shellcheck
-
- # md formatting
- - repo: https://github.com/executablebooks/mdformat
- rev: 0.7.16
- hooks:
- - id: mdformat
- args: ["--number"]
- additional_dependencies:
- - mdformat-gfm
- - mdformat-tables
- - mdformat_frontmatter
- # - mdformat-toc
- # - mdformat-black
-
- # word spelling linter
- - repo: https://github.com/codespell-project/codespell
- rev: v2.2.4
- hooks:
- - id: codespell
- args:
- - --skip=logs/**,data/**,*.ipynb
- # - --ignore-words-list=abc,def
-
- # jupyter notebook cell output clearing
- - repo: https://github.com/kynan/nbstripout
- rev: 0.6.1
- hooks:
- - id: nbstripout
-
- # jupyter notebook linting
- - repo: https://github.com/nbQA-dev/nbQA
- rev: 1.6.3
- hooks:
- - id: nbqa-black
- args: ["--line-length=99"]
- - id: nbqa-isort
- args: ["--profile=black"]
- - id: nbqa-flake8
- args:
- [
- "--extend-ignore=E203,E402,E501,F401,F841",
- "--exclude=logs/*,data/*",
- ]
|