name: 'CI: Python'

on:
  pull_request:
    paths:
      - packages/@n8n/task-runner-python/**
      - .github/workflows/ci-python.yml
  push:
    paths:
      - packages/@n8n/task-runner-python/**

jobs:
  checks:
    name: Checks
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: packages/@n8n/task-runner-python
    steps:
      - name: Check out project
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

      - name: Install uv
        uses: astral-sh/setup-uv@6ee6290f1cbc4156c0bdd66691b2c144ef8df19a # v7.4.0
        with:
          enable-cache: true

      - name: Install just
        uses: extractions/setup-just@e33e0265a09d6d736e2ee1e0eb685ef1de4669ff # v3.0.0

      - name: Install Python
        run: uv python install 3.13

      - name: Install project dependencies
        run: just sync-all

      - name: Format check
        run: just format-check

      - name: Typecheck
        run: just typecheck

      - name: Lint
        run: just lint

      - name: Python unit tests
        run: uv run pytest --cov=src --cov-report=xml --cov-report=term-missing

      - name: Upload coverage to Codecov
        uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
        with:
          token: ${{ secrets.CODECOV_TOKEN }}
          files: packages/@n8n/task-runner-python/coverage.xml
          flags: python
          name: task-runner-python
          fail_ci_if_error: false
