| # To use: |
| # |
| # pre-commit run -a |
| # |
| # Or: |
| # |
| # pre-commit install # (runs every time you commit in git) |
| # |
| # To update this file: |
| # |
| # pre-commit autoupdate |
| # |
| # See https://github.com/pre-commit/pre-commit |
| |
| |
| ci: |
| autoupdate_commit_msg: "chore(deps): update pre-commit hooks" |
| autofix_commit_msg: "style: pre-commit fixes" |
| autoupdate_schedule: monthly |
| |
| # third-party content |
| exclude: ^tools/JoinPaths.cmake$ |
| |
| repos: |
| # Standard hooks |
| - repo: https://github.com/pre-commit/pre-commit-hooks |
| rev: "v4.4.0" |
| hooks: |
| - id: check-added-large-files |
| - id: check-case-conflict |
| - id: check-docstring-first |
| - id: check-merge-conflict |
| - id: check-symlinks |
| - id: check-toml |
| - id: check-yaml |
| - id: debug-statements |
| - id: end-of-file-fixer |
| - id: mixed-line-ending |
| - id: requirements-txt-fixer |
| - id: trailing-whitespace |
| |
| # Upgrade old Python syntax |
| - repo: https://github.com/asottile/pyupgrade |
| rev: "v3.3.1" |
| hooks: |
| - id: pyupgrade |
| args: [--py36-plus] |
| |
| # Nicely sort includes |
| - repo: https://github.com/PyCQA/isort |
| rev: "5.11.4" |
| hooks: |
| - id: isort |
| |
| # Black, the code formatter, natively supports pre-commit |
| - repo: https://github.com/psf/black |
| rev: "22.12.0" # Keep in sync with blacken-docs |
| hooks: |
| - id: black |
| |
| # Also code format the docs |
| - repo: https://github.com/asottile/blacken-docs |
| rev: "v1.12.1" |
| hooks: |
| - id: blacken-docs |
| additional_dependencies: |
| - black==22.10.0 # keep in sync with black hook |
| |
| # Changes tabs to spaces |
| - repo: https://github.com/Lucas-C/pre-commit-hooks |
| rev: "v1.3.1" |
| hooks: |
| - id: remove-tabs |
| |
| - repo: https://github.com/sirosen/texthooks |
| rev: "0.4.0" |
| hooks: |
| - id: fix-ligatures |
| - id: fix-smartquotes |
| |
| # Autoremoves unused imports |
| - repo: https://github.com/hadialqattan/pycln |
| rev: "v2.1.2" |
| hooks: |
| - id: pycln |
| stages: [manual] |
| |
| # Checking for common mistakes |
| - repo: https://github.com/pre-commit/pygrep-hooks |
| rev: "v1.9.0" |
| hooks: |
| - id: python-check-blanket-noqa |
| - id: python-check-blanket-type-ignore |
| - id: python-no-log-warn |
| - id: python-use-type-annotations |
| - id: rst-backticks |
| - id: rst-directive-colons |
| - id: rst-inline-touching-normal |
| |
| # Automatically remove noqa that are not used |
| - repo: https://github.com/asottile/yesqa |
| rev: "v1.4.0" |
| hooks: |
| - id: yesqa |
| additional_dependencies: &flake8_dependencies |
| - flake8-bugbear |
| - pep8-naming |
| |
| # Flake8 also supports pre-commit natively (same author) |
| - repo: https://github.com/PyCQA/flake8 |
| rev: "6.0.0" |
| hooks: |
| - id: flake8 |
| exclude: ^(docs/.*|tools/.*)$ |
| additional_dependencies: *flake8_dependencies |
| |
| # PyLint has native support - not always usable, but works for us |
| - repo: https://github.com/PyCQA/pylint |
| rev: "v2.15.9" |
| hooks: |
| - id: pylint |
| files: ^pybind11 |
| |
| # CMake formatting |
| - repo: https://github.com/cheshirekow/cmake-format-precommit |
| rev: "v0.6.13" |
| hooks: |
| - id: cmake-format |
| additional_dependencies: [pyyaml] |
| types: [file] |
| files: (\.cmake|CMakeLists.txt)(.in)?$ |
| |
| # Check static types with mypy |
| - repo: https://github.com/pre-commit/mirrors-mypy |
| rev: "v0.991" |
| hooks: |
| - id: mypy |
| args: [] |
| exclude: ^(tests|docs)/ |
| additional_dependencies: [nox, rich] |
| |
| # Checks the manifest for missing files (native support) |
| - repo: https://github.com/mgedmin/check-manifest |
| rev: "0.49" |
| hooks: |
| - id: check-manifest |
| # This is a slow hook, so only run this if --hook-stage manual is passed |
| stages: [manual] |
| additional_dependencies: [cmake, ninja] |
| |
| # Check for spelling |
| # Use tools/codespell_ignore_lines_from_errors.py |
| # to rebuild .codespell-ignore-lines |
| - repo: https://github.com/codespell-project/codespell |
| rev: "v2.2.2" |
| hooks: |
| - id: codespell |
| exclude: ".supp$" |
| args: ["-x", ".codespell-ignore-lines"] |
| |
| # Check for common shell mistakes |
| - repo: https://github.com/shellcheck-py/shellcheck-py |
| rev: "v0.9.0.2" |
| hooks: |
| - id: shellcheck |
| |
| # Disallow some common capitalization mistakes |
| - repo: local |
| hooks: |
| - id: disallow-caps |
| name: Disallow improper capitalization |
| language: pygrep |
| entry: PyBind|Numpy|Cmake|CCache|PyTest |
| exclude: ^\.pre-commit-config.yaml$ |
| |
| # Clang format the codebase automatically |
| - repo: https://github.com/pre-commit/mirrors-clang-format |
| rev: "v15.0.6" |
| hooks: |
| - id: clang-format |
| types_or: [c++, c, cuda] |