repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v5.0.0
    hooks:
      - id: trailing-whitespace
      # Replaces or checks mixed line ending
      - id: mixed-line-ending
        args: ['--fix', 'lf']
        exclude: '.*\.(svg)$'
      # Forbid files which have a UTF-8 byte-order marker
      - id: check-byte-order-marker
      # Checks that non-binary executables have a proper shebang
      - id: check-executables-have-shebangs
      # Check for files that contain merge conflict strings.
      - id: check-merge-conflict
      # Check for debugger imports and py37+ breakpoint()
      # calls in python source
      - id: debug-statements
      - id: check-yaml
        files: .*\.(yaml|yml)$
  - repo: https://opendev.org/openstack/hacking
    rev: 7.0.0
    hooks:
      - id: hacking
        additional_dependencies: []
        exclude: '^(doc|releasenotes|tools)/.*$'
  - repo: https://github.com/astral-sh/ruff-pre-commit
    rev: v0.9.7
    hooks:
      - id: ruff
        args: ['--fix', '--unsafe-fixes']
      - id: ruff-format
  - repo: https://github.com/pre-commit/mirrors-mypy
    rev: v1.7.1
    hooks:
      - id: mypy
        additional_dependencies: [
          'types-requests',
          'types-WebOb>=1.8.0.20250319',
        ]
        # keep this in-sync with '[tool.mypy] exclude' in 'pyproject.toml'
        exclude: |
          (?x)(
            doc/.*
            | releasenotes/.*
          )
