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/*", ]