default_language_version: python: python3 repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.5.0 hooks: - id: trailing-whitespace - id: end-of-file-fixer - id: check-yaml - id: check-added-large-files - id: check-merge-conflict - id: check-toml - id: debug-statements - repo: https://github.com/psf/black rev: 26.1.0 hooks: - id: black args: ["--line-length=88"] - repo: https://github.com/pycqa/flake8 rev: 7.0.0 hooks: - id: flake8 args: ["--config=.flake8"] additional_dependencies: - flake8-bugbear - flake8-comprehensions - repo: https://github.com/pre-commit/mirrors-mypy rev: v1.9.0 hooks: - id: mypy exclude: ^alembic/ additional_dependencies: - pydantic>=2.0.0 - pydantic-settings>=2.0.0 - sqlalchemy>=2.0.0 - fastapi>=0.100.0 - alembic>=1.7.0 - types-paho-mqtt>=1.6.0 - types-PyYAML>=6.0.0 # Frontend TypeScript gate. Runs in the host node toolchain (language: system) # so it resolves types from the project's node_modules — requires `npm install`. # `pass_filenames: false`: tsc typechecks the whole project (tsconfig include). - repo: local hooks: - id: frontend-typecheck name: frontend typecheck (tsc --noEmit) entry: npm run typecheck language: system pass_filenames: false files: '(spa-react/.*\.tsx?$|^tsconfig\.json$|^package(-lock)?\.json$)'