repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.4.0 hooks: - id: check-added-large-files args: ["--maxkb=500"] - id: fix-byte-order-marker - id: check-case-conflict - id: check-merge-conflict - id: check-symlinks - id: debug-statements - repo: https://github.com/Yelp/detect-secrets rev: v1.5.0 hooks: - id: detect-secrets name: Detect secrets description: Detects high entropy strings that are likely to be passwords. files: ^autogpt_platform/ stages: [push] - repo: local # For proper type checking, all dependencies need to be up-to-date. # It's also a good idea to check that poetry.lock is consistent with pyproject.toml. hooks: - id: poetry-install name: Check & Install dependencies - AutoGPT Platform - Backend alias: poetry-install-platform-backend entry: poetry -C autogpt_platform/backend install # include autogpt_libs source (since it's a path dependency) files: ^autogpt_platform/(backend|autogpt_libs)/poetry\.lock$ types: [file] language: system pass_filenames: false - id: poetry-install name: Check & Install dependencies - AutoGPT Platform - Libs alias: poetry-install-platform-libs entry: poetry -C autogpt_platform/autogpt_libs install files: ^autogpt_platform/autogpt_libs/poetry\.lock$ types: [file] language: system pass_filenames: false - id: poetry-install name: Check & Install dependencies - Classic - AutoGPT alias: poetry-install-classic-autogpt entry: poetry -C classic/original_autogpt install # include forge source (since it's a path dependency) files: ^classic/(original_autogpt|forge)/poetry\.lock$ types: [file] language: system pass_filenames: false - id: poetry-install name: Check & Install dependencies - Classic - Forge alias: poetry-install-classic-forge entry: poetry -C classic/forge install files: ^classic/forge/poetry\.lock$ types: [file] language: system pass_filenames: false - id: poetry-install name: Check & Install dependencies - Classic - Benchmark alias: poetry-install-classic-benchmark entry: poetry -C classic/benchmark install files: ^classic/benchmark/poetry\.lock$ types: [file] language: system pass_filenames: false - repo: local # For proper type checking, Prisma client must be up-to-date. hooks: - id: prisma-generate name: Prisma Generate - AutoGPT Platform - Backend alias: prisma-generate-platform-backend entry: bash -c 'cd autogpt_platform/backend && poetry run prisma generate' # include everything that triggers poetry install + the prisma schema files: ^autogpt_platform/((backend|autogpt_libs)/poetry\.lock|backend/schema.prisma)$ types: [file] language: system pass_filenames: false - repo: https://github.com/astral-sh/ruff-pre-commit rev: v0.7.2 hooks: - id: ruff name: Lint (Ruff) - AutoGPT Platform - Backend alias: ruff-lint-platform-backend files: ^autogpt_platform/backend/ args: [--fix] - id: ruff name: Lint (Ruff) - AutoGPT Platform - Libs alias: ruff-lint-platform-libs files: ^autogpt_platform/autogpt_libs/ args: [--fix] - id: ruff-format name: Format (Ruff) - AutoGPT Platform - Libs alias: ruff-lint-platform-libs files: ^autogpt_platform/autogpt_libs/ - repo: local # isort needs the context of which packages are installed to function, so we # can't use a vendored isort pre-commit hook (which runs in its own isolated venv). hooks: - id: isort name: Lint (isort) - AutoGPT Platform - Backend alias: isort-platform-backend entry: poetry -C autogpt_platform/backend run isort -p backend files: ^autogpt_platform/backend/ types: [file, python] language: system - id: isort name: Lint (isort) - Classic - AutoGPT alias: isort-classic-autogpt entry: poetry -C classic/original_autogpt run isort -p autogpt files: ^classic/original_autogpt/ types: [file, python] language: system - id: isort name: Lint (isort) - Classic - Forge alias: isort-classic-forge entry: poetry -C classic/forge run isort -p forge files: ^classic/forge/ types: [file, python] language: system - id: isort name: Lint (isort) - Classic - Benchmark alias: isort-classic-benchmark entry: poetry -C classic/benchmark run isort -p agbenchmark files: ^classic/benchmark/ types: [file, python] language: system - repo: https://github.com/psf/black rev: 23.12.1 # Black has sensible defaults, doesn't need package context, and ignores # everything in .gitignore, so it works fine without any config or arguments. hooks: - id: black name: Format (Black) - repo: https://github.com/PyCQA/flake8 rev: 7.0.0 # To have flake8 load the config of the individual subprojects, we have to call # them separately. hooks: - id: flake8 name: Lint (Flake8) - Classic - AutoGPT alias: flake8-classic-autogpt files: ^classic/original_autogpt/(autogpt|scripts|tests)/ args: [--config=classic/original_autogpt/.flake8] - id: flake8 name: Lint (Flake8) - Classic - Forge alias: flake8-classic-forge files: ^classic/forge/(forge|tests)/ args: [--config=classic/forge/.flake8] - id: flake8 name: Lint (Flake8) - Classic - Benchmark alias: flake8-classic-benchmark files: ^classic/benchmark/(agbenchmark|tests)/((?!reports).)*[/.] args: [--config=classic/benchmark/.flake8] - repo: local # To have watertight type checking, we check *all* the files in an affected # project. To trigger on poetry.lock we also reset the file `types` filter. hooks: - id: pyright name: Typecheck - AutoGPT Platform - Backend alias: pyright-platform-backend entry: poetry -C autogpt_platform/backend run pyright args: [-p, autogpt_platform/backend, autogpt_platform/backend] # include forge source (since it's a path dependency) but exclude *_test.py files: files: ^autogpt_platform/(backend/((backend|test)/|(\w+\.py|poetry\.lock)$)|autogpt_libs/(autogpt_libs/.*(?