files: ^python/
fail_fast: true
repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v5.0.0
    hooks:
      - id: check-toml
        name: Check TOML files
        files: \.toml$
        exclude: ^python/packages/lab/cookiecutter-agent-framework-lab/
      - id: check-yaml
        name: Check YAML files
        files: \.yaml$
      - id: check-json
        name: Check JSON files
        files: \.json$
        exclude: ^.*\.vscode\/.*|^python/demos/samples/chatkit-integration/frontend/(tsconfig.*\.json|package-lock\.json)$
      - id: end-of-file-fixer
        name: Fix End of File
        files: \.py$
        exclude: ^python/packages/lab/cookiecutter-agent-framework-lab/
      - id: mixed-line-ending
        name: Check Mixed Line Endings
        files: \.py$
        exclude: ^python/packages/lab/cookiecutter-agent-framework-lab/
      - id: check-ast
        name: Check Valid Python Samples
        types: ["python"]
        exclude: ^python/packages/lab/cookiecutter-agent-framework-lab/
  - repo: https://github.com/nbQA-dev/nbQA
    rev: 1.9.1
    hooks:
      - id: nbqa-check-ast
        name: Check Valid Python Notebooks
        types: ["jupyter"]
  - repo: https://github.com/asottile/pyupgrade
    rev: v3.20.0
    hooks:
      - id: pyupgrade
        name: Upgrade Python syntax
        args: [--py310-plus]
        exclude: ^python/packages/lab/cookiecutter-agent-framework-lab/
  - repo: local
    hooks:
      - id: poe-check
        name: Run checks through Poe
        entry: uv --directory ./python run poe pre-commit-check
        language: system
        files: ^python/
        pass_filenames: false
  - repo: https://github.com/astral-sh/uv-pre-commit
    # uv version.
    rev: 0.7.18
    hooks:
      # Update the uv lockfile
      - id: uv-lock
        name: Update uv lockfile
        files: python/pyproject.toml
        args: [--project, python]
  - repo: https://github.com/PyCQA/bandit
    rev: 1.8.5
    hooks:
      - id: bandit
        name: Bandit Security Checks
        args: ["-c", "python/pyproject.toml"]
        additional_dependencies: ["bandit[toml]"]
