# Integration with GitHub Actions
# See https://pre-commit.ci/
ci:
  autoupdate_commit_msg: "chore: update pre-commit hooks"
  autofix_prs: true
  autoupdate_schedule: monthly

repos:
  - repo: https://github.com/keewis/blackdoc
    rev: v0.4.1
    hooks:
      - id: blackdoc
        args: ["--skip-string-normalization"]
        types_or: [rst]

  - repo: https://github.com/codespell-project/codespell
    rev: v2.4.1
    hooks:
      - id: codespell
        args: ["doc examples examples_trame pyvista tests", "*.py *.rst *.md"]
        exclude: CODE_OF_CONDUCT.md
        additional_dependencies: ["tomli"]

  - repo: https://github.com/DanielNoord/pydocstringformatter
    rev: v0.7.5
    hooks:
      - id: pydocstringformatter
        args:
          [
            "--style {numpydoc,pep257}",
            "--no-strip-whitespace",
            "--no-capitalize-first-letter",
          ]

  - repo: https://github.com/numpy/numpydoc
    rev: v1.9.0
    hooks:
      - id: numpydoc-validation
        files: ^pyvista/

  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v5.0.0
    hooks:
      - id: check-merge-conflict
      - id: debug-statements
      - id: no-commit-to-branch
        args: [--branch, main]
      - id: requirements-txt-fixer
      - id: trailing-whitespace
        exclude: ^(pyvista/examples/.*\.ply|pyvista/examples/.*\.vtk|doc/intersphinx/.*\.inv)
      - id: check-docstring-first
      - id: end-of-file-fixer
        exclude: ^(pyvista/examples/.*\.ply|pyvista/examples/.*\.vtk|doc/intersphinx/.*\.inv)
      - id: mixed-line-ending
      - id: file-contents-sorter
        verbose: true
        files: ^(\.dockerignore|doc/styles/Vocab/pyvista/accept\.txt)$

  - repo: https://github.com/scientific-python/cookie
    rev: 2025.05.02
    hooks:
      - id: sp-repo-review
        args: ["--show=errskip"]

  # this validates our github workflow files
  - repo: https://github.com/python-jsonschema/check-jsonschema
    rev: 0.33.2
    hooks:
      - id: check-github-workflows

  - repo: https://github.com/astral-sh/ruff-pre-commit
    rev: v0.12.7
    hooks:
      - id: ruff
        args: [--fix, --show-fixes]
        exclude: tests/core/typing
      - id: ruff-format
        exclude: tests/core/typing

  - repo: https://github.com/rbubley/mirrors-prettier
    rev: v3.6.2
    hooks:
      - id: prettier
        types_or: [yaml, markdown, html, css, scss, javascript, json]

  - repo: https://github.com/pre-commit/pygrep-hooks
    rev: v1.10.0
    hooks:
      - id: rst-backticks
      - id: rst-directive-colons
      - id: rst-inline-touching-normal

  - repo: https://github.com/scop/pre-commit-shfmt
    rev: v3.12.0-2
    hooks:
      - id: shfmt

  - repo: https://github.com/ComPWA/taplo-pre-commit
    rev: v0.9.3
    hooks:
      - id: taplo-format
        # See options: https://taplo.tamasfe.dev/configuration/formatter-options.html
        args:
          [
            --option,
            "reorder_arrays=true",
            --option,
            "reorder_keys=true",
            --option,
            "align_comments=false",
          ]

  - repo: https://github.com/zizmorcore/zizmor-pre-commit
    rev: v1.11.0
    hooks:
      - id: zizmor

  - repo: https://github.com/sphinx-contrib/sphinx-lint
    rev: v1.0.0
    hooks:
      - id: sphinx-lint
