repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v5.0.0 hooks: - id: check-case-conflict - id: end-of-file-fixer # python, js and ts only files: \.(py|js|ts)$ - id: mixed-line-ending files: \.(py|js|ts)$ args: - --fix=lf - id: trailing-whitespace - repo: local hooks: - id: ruff name: ruff check entry: uv run ruff check language: system types_or: [python, pyi] args: [--fix] - id: ruff-format name: ruff format entry: uv run ruff format language: system types_or: [python, pyi] args: [--config, pyproject.toml] - id: validate-migrations name: Validate Alembic Migrations (Expand-Contract) entry: python src/backend/base/langflow/alembic/migration_validator.py language: python files: (alembic|migrations)/versions/.*\.py$ additional_dependencies: [sqlalchemy, alembic] pass_filenames: true always_run: false verbose: true - id: check-migration-phase name: Check Migration Phase Documentation entry: python -c "import sys, re; content = open(sys.argv[1]).read(); sys.exit(0 if re.search(r'Phase:\s*(EXPAND|MIGRATE|CONTRACT)', content) else 1)" language: python files: (alembic|migrations)/versions/.*\.py$ pass_filenames: true - repo: https://github.com/Yelp/detect-secrets rev: v1.5.0 hooks: - id: detect-secrets args: ["--baseline", ".secrets.baseline"] exclude: '(^docs/|^SECURITY\.md$|src/lfx/src/lfx/_assets/component_index\.json$)' - repo: local hooks: - id: local-biome-check name: biome check entry: bash -c 'cd src/frontend && files=("${@#src/frontend/}") && npx @biomejs/biome check --write --files-ignore-unknown=true --diagnostic-level=error "${files[@]}"' -- language: system types: [text] files: "^src/frontend/.*\\.(jsx?|tsx?|c(js|ts)|m(js|ts)|d\\.(ts|cts|mts)|jsonc?)$" exclude: (^docs/|src/lfx/src/lfx/_assets/component_index\.json$) pass_filenames: true - id: biome-lint-no-any-staged name: biome no-any check (staged only) entry: bash -c 'cd src/frontend && npx @biomejs/biome lint --staged --diagnostic-level=error --no-errors-on-unmatched' language: system files: "^src/frontend/.*\\.(tsx?|ts)$" exclude: (^docs/) pass_filenames: false - id: validate-starter-projects name: Validate Starter Project Templates entry: uv run python src/backend/tests/unit/template/test_starter_projects.py language: system files: ^src/backend/base/langflow/initial_setup/starter_projects/.*\.json$ pass_filenames: false args: [--security-check] - id: check-deprecated-imports name: Check for deprecated langchain imports entry: uv run python scripts/check_deprecated_imports.py language: system files: ^src/lfx/src/lfx/components/.*\.py$ pass_filenames: false