repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v6.0.0
    hooks:
      - id: check-ast
      - id: check-builtin-literals
      - id: check-yaml
      - id: end-of-file-fixer
      - id: file-contents-sorter
        args:
          - --unique
        files: CONTRIBUTORS
      - id: mixed-line-ending
        args:
          - --fix=lf
        exclude: make.cmd
      - id: trailing-whitespace
        exclude: \.md$

  - repo: https://github.com/asottile/pyupgrade
    rev: v3.21.2
    hooks:
    -   id: pyupgrade
        args:
          - --keep-runtime-typing
          - --py310-plus

  - repo: https://github.com/astral-sh/ruff-pre-commit
    rev: v0.14.7
    hooks:
      - id: ruff-check
      - id: ruff-format

  - repo: https://github.com/lucas-c/pre-commit-hooks
    rev: v1.5.5
    hooks:
      - id: insert-license
        name: check license headers
        files: \.(po|py)$
        args:
          - --license-filepath
          - docs/file_header.txt

  - repo: https://github.com/pycqa/isort
    rev: 7.0.0
    hooks:
      - id: isort
        exclude: ^(docs)

  - repo: https://github.com/pre-commit/mirrors-mypy
    rev: v1.19.0
    hooks:
      - id: mypy
        additional_dependencies:
          - types-polib
          - types-python-dateutil
          - types-requests

  - repo: https://github.com/tox-dev/pyproject-fmt
    rev: v2.11.1
    hooks:
      - id: pyproject-fmt

  - repo: https://github.com/tox-dev/tox-ini-fmt
    rev: '1.7.0'
    hooks:
      - id: tox-ini-fmt

  - repo: local
    hooks:
      - id: tests
        always_run: true
        entry: make check
        language: system
        name: run `make check`
        pass_filenames: false
        stages:
          - pre-push
