mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-01-09 15:17:59 -05:00
Running the tests locally takes a lot of time and leaves test data behind in the DB, making it impractical to actually run locally. I'm disabling the `pytest` hooks in the pre-commit config so the pre-commit checks can reasonably be used without significant negative impact to DX. This doesn't impact UX and there is nothing to test.
279 lines
10 KiB
YAML
279 lines
10 KiB
YAML
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 -P 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 -P 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 -P 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 -P classic/benchmark run isort -p agbenchmark
|
|
files: ^classic/benchmark/
|
|
types: [file, python]
|
|
language: system
|
|
|
|
- repo: https://github.com/psf/black
|
|
rev: 24.10.0
|
|
# 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
|
|
hooks:
|
|
- id: prettier
|
|
name: Format (Prettier) - AutoGPT Platform - Frontend
|
|
alias: format-platform-frontend
|
|
entry: bash -c 'cd autogpt_platform/frontend && npx prettier --write $(echo "$@" | sed "s|autogpt_platform/frontend/||g")' --
|
|
files: ^autogpt_platform/frontend/
|
|
types: [file]
|
|
language: system
|
|
|
|
- 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
|
|
# 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/.*(?<!_test)\.py|poetry\.lock)$)
|
|
types: [file]
|
|
language: system
|
|
pass_filenames: false
|
|
|
|
- id: pyright
|
|
name: Typecheck - AutoGPT Platform - Libs
|
|
alias: pyright-platform-libs
|
|
entry: poetry -C autogpt_platform/autogpt_libs run pyright
|
|
files: ^autogpt_platform/autogpt_libs/(autogpt_libs/|poetry\.lock$)
|
|
types: [file]
|
|
language: system
|
|
pass_filenames: false
|
|
|
|
- id: pyright
|
|
name: Typecheck - Classic - AutoGPT
|
|
alias: pyright-classic-autogpt
|
|
entry: poetry -C classic/original_autogpt run pyright
|
|
# include forge source (since it's a path dependency) but exclude *_test.py files:
|
|
files: ^(classic/original_autogpt/((autogpt|scripts|tests)/|poetry\.lock$)|classic/forge/(forge/.*(?<!_test)\.py|poetry\.lock)$)
|
|
types: [file]
|
|
language: system
|
|
pass_filenames: false
|
|
|
|
- id: pyright
|
|
name: Typecheck - Classic - Forge
|
|
alias: pyright-classic-forge
|
|
entry: poetry -C classic/forge run pyright
|
|
files: ^classic/forge/(forge/|poetry\.lock$)
|
|
types: [file]
|
|
language: system
|
|
pass_filenames: false
|
|
|
|
- id: pyright
|
|
name: Typecheck - Classic - Benchmark
|
|
alias: pyright-classic-benchmark
|
|
entry: poetry -C classic/benchmark run pyright
|
|
files: ^classic/benchmark/(agbenchmark/|tests/|poetry\.lock$)
|
|
types: [file]
|
|
language: system
|
|
pass_filenames: false
|
|
|
|
- repo: local
|
|
hooks:
|
|
- id: tsc
|
|
name: Typecheck - AutoGPT Platform - Frontend
|
|
entry: bash -c 'cd autogpt_platform/frontend && npm run type-check'
|
|
files: ^autogpt_platform/frontend/
|
|
types: [file]
|
|
language: system
|
|
pass_filenames: false
|
|
|
|
# - repo: local
|
|
# hooks:
|
|
# - id: pytest
|
|
# name: Run tests - AutoGPT Platform - Backend
|
|
# alias: pytest-platform-backend
|
|
# entry: bash -c 'cd autogpt_platform/backend && poetry run pytest'
|
|
# # include autogpt_libs source (since it's a path dependency) but exclude *_test.py files:
|
|
# files: ^autogpt_platform/(backend/((backend|test)/|poetry\.lock$)|autogpt_libs/(autogpt_libs/.*(?<!_test)\.py|poetry\.lock)$)
|
|
# language: system
|
|
# pass_filenames: false
|
|
|
|
# - id: pytest
|
|
# name: Run tests - Classic - AutoGPT (excl. slow tests)
|
|
# alias: pytest-classic-autogpt
|
|
# entry: bash -c 'cd classic/original_autogpt && poetry run pytest --cov=autogpt -m "not slow" tests/unit tests/integration'
|
|
# # include forge source (since it's a path dependency) but exclude *_test.py files:
|
|
# files: ^(classic/original_autogpt/((autogpt|tests)/|poetry\.lock$)|classic/forge/(forge/.*(?<!_test)\.py|poetry\.lock)$)
|
|
# language: system
|
|
# pass_filenames: false
|
|
|
|
# - id: pytest
|
|
# name: Run tests - Classic - Forge (excl. slow tests)
|
|
# alias: pytest-classic-forge
|
|
# entry: bash -c 'cd classic/forge && poetry run pytest --cov=forge -m "not slow"'
|
|
# files: ^classic/forge/(forge/|tests/|poetry\.lock$)
|
|
# language: system
|
|
# pass_filenames: false
|
|
|
|
# - id: pytest
|
|
# name: Run tests - Classic - Benchmark
|
|
# alias: pytest-classic-benchmark
|
|
# entry: bash -c 'cd classic/benchmark && poetry run pytest --cov=benchmark'
|
|
# files: ^classic/benchmark/(agbenchmark/|tests/|poetry\.lock$)
|
|
# language: system
|
|
# pass_filenames: false
|