name: CI on: push: branches: [main, master] pull_request: branches: [main, master] workflow_dispatch: jobs: test: name: Offline tests (Python ${{ matrix.python-version }}) runs-on: ubuntu-latest strategy: fail-fast: false matrix: python-version: ['3.10', '3.11', '3.12', '3.13'] steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Install test deps (no torch, no transformers) run: | python -m pip install --upgrade pip pip install pytest websocket-client - name: Compile-check all .py files run: | find . -name "*.py" -not -path "./.git/*" -print0 \ | xargs -0 -n1 python -m py_compile - name: Validate example workflow JSON run: | for f in example_workflows/*.json; do python -c "import json; json.load(open('$f'))" && echo " ✓ $f" done - name: Run offline tests run: pytest tests/ -v lint: name: Lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.12' - name: Install ruff run: pip install ruff - name: Ruff (informational — won't fail the build) continue-on-error: true run: | ruff check . || echo "::warning::ruff reported issues (informational)"