ci:
  autofix_prs: false

repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v5.0.0
    hooks:
      - id: check-added-large-files
        args: ["--enforce-all", "--maxkb=300"]
        # Prevent giant files from being committed.
      - id: check-case-conflict
        # Check for files with names that would conflict on a case-insensitive
        # filesystem like MacOS HFS+ or Windows FAT.
      - id: check-json
        # Attempts to load all json files to verify syntax.
      - id: check-merge-conflict
        # Check for files that contain merge conflict strings.
      - id: check-symlinks
        # Checks for symlinks which do not point to anything.
      - id: check-toml
        # Attempts to load all TOML files to verify syntax.
      - id: check-xml
        # Attempts to load all xml files to verify syntax.
      - id: check-yaml
        # Attempts to load all yaml files to verify syntax.
      - id: detect-private-key
        # Checks for the existence of private keys.
      - id: end-of-file-fixer
        # Makes sure files end in a newline and only a newline.
        exclude: ".*(data.*)$"
      # - id: fix-encoding-pragma  # covered by pyupgrade
      - id: trailing-whitespace
        # Trims trailing whitespace.
        exclude_types: [python]  # Covered by Ruff W291.
        exclude: ".*(data.*)$"

  - repo: https://github.com/pre-commit/pygrep-hooks
    rev: v1.10.0
    hooks:
      - id: rst-directive-colons
        # Detect mistake of rst directive not ending with double colon.
      - id: rst-inline-touching-normal
        # Detect mistake of inline code touching normal text in rst.
      - id: text-unicode-replacement-char
        # Forbid files which have a UTF-8 Unicode replacement character.

  - repo: https://github.com/codespell-project/codespell
    rev: v2.4.1
    hooks:
      - id: codespell
        args: ["--write-changes"]
        additional_dependencies:
          - tomli
        exclude: ".*.asdf"

  - repo: https://github.com/astral-sh/ruff-pre-commit
    rev: v0.9.4
    hooks:
      - id: ruff
        args: ["--fix", "--show-fixes"]
      - id: ruff-format
