| name: "python" | |
| on: | |
| pull_request: | |
| types: [opened, synchronize, reopened, edited, labeled, unlabeled] | |
| push: | |
| branches: | |
| - main | |
| - 5.0-dev | |
| concurrency: | |
| group: "${{ github.event.pull_request.number }}-${{ github.ref_name }}-${{ github.workflow }}" | |
| cancel-in-progress: true | |
| env: | |
| NODE_OPTIONS: "--max-old-space-size=4096" | |
| HF_TOKEN: ${{ vars.HF_TOKEN }} | |
| permissions: {} | |
| jobs: | |
| changes: | |
| permissions: | |
| contents: read | |
| pull-requests: read | |
| name: "changes" | |
| runs-on: ubuntu-latest | |
| outputs: | |
| should_run: ${{ steps.changes.outputs.should_run }} | |
| sha: ${{ steps.changes.outputs.sha }} | |
| pr_number: ${{ steps.changes.outputs.pr_number }} | |
| source_branch: ${{ steps.changes.outputs.source_branch }} | |
| source_repo: ${{ steps.changes.outputs.source_repo }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: "gradio-app/gradio/.github/actions/changes@main" | |
| id: changes | |
| with: | |
| filter: "gradio" | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| test: | |
| permissions: | |
| contents: read | |
| name: "test-${{ matrix.os }}-${{ matrix.test-type == 'flaky' && 'flaky' || 'not-flaky'}}" | |
| needs: changes | |
| if: needs.changes.outputs.should_run == 'true' | |
| strategy: | |
| matrix: | |
| os: ["ubuntu-latest", "windows-latest"] | |
| test-type: ["not flaky", "flaky"] | |
| exclude: | |
| - os: ${{ github.event_name == 'pull_request' && contains( github.event.pull_request.labels.*.name, 'windows-tests') && 'dummy' || 'windows-latest' }} | |
| - test-type: ${{ github.event_name == 'pull_request' && contains( github.event.pull_request.labels.*.name, 'flaky-tests') && 'dummy' || 'flaky' }} | |
| runs-on: ${{ matrix.os }} | |
| continue-on-error: true | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: install dependencies | |
| id: install_deps | |
| uses: "gradio-app/gradio/.github/actions/install-all-deps@main" | |
| with: | |
| python_version: "3.10" | |
| os: ${{ matrix.os }} | |
| test: true | |
| - name: Lint | |
| if: runner.os == 'Linux' | |
| run: | | |
| . venv/bin/activate | |
| ./scripts/lint_backend.sh | |
| - name: Typecheck | |
| if: runner.os == 'Linux' | |
| run: | | |
| . venv/bin/activate | |
| ./scripts/type_check_backend.sh | |
| - name: Run tests | |
| run: | | |
| . ${{steps.install_deps.outputs.venv_activate}} | |
| python -m pytest -m "${{ matrix.test-type }}" | |