diff --git a/.github/workflows/lint-js.yml b/.github/workflows/lint-js.yml new file mode 100644 index 000000000..0590e8a38 --- /dev/null +++ b/.github/workflows/lint-js.yml @@ -0,0 +1,51 @@ +name: Lint Frontend + +on: + pull_request: + paths: + - "src/frontend/**" + +env: + NODE_VERSION: "21" + +jobs: + run-linters: + name: Run linters + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + id: setup-node + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Cache Node.js dependencies + uses: actions/cache@v4 + id: npm-cache + with: + path: ~/.npm + key: ${{ runner.os }}-node-${{ hashFiles('src/frontend/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-node- + + - name: Install Node.js dependencies + run: | + cd src/frontend + npm ci + if: ${{ steps.setup-node.outputs.cache-hit != 'true' }} + + - name: Run linters + uses: wearerequired/lint-action@v1 + with: + github_token: ${{ secrets.github_token }} + auto_fix: true + git_email: "gabriel@langflow.org" + # Enable linters + eslint: true + prettier: true + prettier_args: '--write \"{tests,src}/**/*.{js,jsx,ts,tsx,json,md}\" --ignore-path .prettierignore' + diff --git a/.github/workflows/lint.yml b/.github/workflows/lint-py.yml similarity index 77% rename from .github/workflows/lint.yml rename to .github/workflows/lint-py.yml index 3c5898369..5ab5541e3 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint-py.yml @@ -1,17 +1,12 @@ -name: lint +name: Lint Python on: - push: - branches: [main] - paths: - - "poetry.lock" - - "pyproject.toml" - - "src/backend/**" pull_request: paths: - "poetry.lock" - "pyproject.toml" - "src/backend/**" + - "tests/**" env: POETRY_VERSION: "1.8.2" @@ -45,6 +40,12 @@ jobs: path: | ./.mypy_cache key: ${{ runner.os }}-mypy-${{ hashFiles('**/pyproject.toml') }} - - name: Lint check - run: | - make lint + - name: Run linters + uses: wearerequired/lint-action@v1 + with: + github_token: ${{ secrets.github_token }} + # Enable linters + git_email: "gabriel@langflow.org" + mypy: true + mypy_args: '--namespace-packages -p "langflow"' + diff --git a/.github/workflows/matchers/ruff.json b/.github/workflows/matchers/ruff.json new file mode 100644 index 000000000..53b21be23 --- /dev/null +++ b/.github/workflows/matchers/ruff.json @@ -0,0 +1,14 @@ +{ + "problemMatcher": [ + { + "owner": "ruff", + "pattern": [ + { + "regexp": "^(Would reformat): (.+)$", + "message": 1, + "file": 2 + } + ] + } + ] +} \ No newline at end of file diff --git a/.github/workflows/style-check-py.yml b/.github/workflows/style-check-py.yml new file mode 100644 index 000000000..4063cd48d --- /dev/null +++ b/.github/workflows/style-check-py.yml @@ -0,0 +1,39 @@ +name: Ruff Style Check + +on: + pull_request: + paths: + - "poetry.lock" + - "pyproject.toml" + - "src/backend/**" + - "tests/**" + +env: + POETRY_VERSION: "1.8.2" + +jobs: + lint: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: + - "3.12" + steps: + - uses: actions/checkout@v4 + - name: Set up Python ${{ matrix.python-version }} + Poetry ${{ env.POETRY_VERSION }} + uses: "./.github/actions/poetry_caching" + with: + python-version: ${{ matrix.python-version }} + poetry-version: ${{ env.POETRY_VERSION }} + cache-key: ${{ runner.os }}-poetry-${{ env.POETRY_VERSION }}-${{ hashFiles('**/poetry.lock') }} + - name: Install Python dependencies + run: | + poetry env use ${{ matrix.python-version }} + poetry install + - name: Register problem matcher + run: echo "::add-matcher::.github/workflows/matchers/ruff.json" + - name: Run Ruff + run: poetry run ruff check --output-format=github . + - name: Run Ruff format + run: poetry run ruff format --check . + diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d03df05b9..16599a199 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,18 +1,5 @@ fail_fast: true repos: - - repo: https://github.com/pre-commit/mirrors-eslint - rev: "v9.1.1" - hooks: - - id: eslint - files: \.[jt]sx?$ # *.js, *.jsx, *.ts and *.tsx - types: [file] - args: ["--fix", "--no-warn-ignored"] - additional_dependencies: - - eslint@9.1.1 - - eslint-plugin-prettier - - eslint-config-prettier - - prettier - - eslint-plugin-react@latest - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.1.0 hooks: @@ -25,16 +12,3 @@ repos: args: - --fix=lf - id: trailing-whitespace - - repo: https://github.com/astral-sh/ruff-pre-commit - # Ruff version. - rev: v0.4.2 - hooks: - # Run the linter. - - id: ruff - # Python - files: \.py$ - types: [file] - # Run the formatter. - - id: ruff-format - files: \.py$ - types: [file]