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 # python code formatting - repo: https://github.com/psf/black rev: 23.3.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.5.1 hooks: - id: docformatter args: [--in-place, --wrap-summaries=99, --wrap-descriptions=99] # python check (PEP8), programming errors and code complexity - repo: https://github.com/PyCQA/flake8 rev: 6.0.0 hooks: - id: flake8 args: [ "--extend-ignore", "E402", "--per-file-ignores", "__init__.py:F401", "--exclude", "artifacts/*,data/*,logs/*", "--max-line-length", "99", ] # python security linter - repo: https://github.com/PyCQA/bandit rev: "1.7.5" hooks: - id: bandit args: ["-s", "B101,B202"] # python type checker - repo: https://github.com/mattseymour/pre-commit-pytype rev: 2022.4.26 hooks: - id: pytype args: ["--disable", "import-error,not-supported-yet", "-n", "auto"] # yaml formatting - repo: https://github.com/pre-commit/mirrors-prettier rev: v3.0.0-alpha.6 hooks: - id: prettier types: [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=artifacts/**,data/**,logs/**,*.ipynb,*.bib,*.js - --ignore-words-list=bu # 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.7.0 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=artifacts/*,data/*,logs/*", ]