default_stages: ['pre-commit']
repos:
  - repo: https://github.com/astral-sh/ruff-pre-commit
    rev: v0.14.4
    hooks:
        # fix unused imports and sort them
      - id: ruff
        args: ["--extend-select", "I", "--fix"]
        # format the code
      - id: ruff-format
        # run the linter
      - id: ruff
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v6.0.0
    hooks:
    # general hooks:
    - id: check-added-large-files  # Prevent giant files from being committed
      args: ['--maxkb=5000']
    - 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-yaml  # Attempts to load all yaml files to verify syntax
    - id: destroyed-symlinks  # Detects symlinks which are changed to regular files
    - id: detect-private-key  # Checks for the existence of private keys
    # Python specific hooks:
    - id: check-ast  # Simply check whether files parse as valid python
    - id: check-docstring-first  # Checks for a common error of placing code before the docstring
  - repo: https://github.com/pycqa/flake8
    rev: 7.3.0
    hooks:
    - id: flake8
      args: [--config=.flake8]
      fail_fast: true
  - repo: https://github.com/pre-commit/mirrors-mypy
    rev: v1.18.2
    hooks:
    - id: mypy
      args: [
        '--config-file=pyproject.toml'
      ]
      fail_fast: true
      additional_dependencies:
        - pydantic
        - pytest
        - pytest-mock
        - cryptography
        - textual
  - repo: local
    hooks:
      - id: pylint
        name: pylint
        entry: pylint
        language: system
        types: [python]
        fail_fast: true
        require_serial: true
