Move DISCO queue to core #303
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Test | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| workflow_dispatch: | |
| jobs: | |
| test-core: | |
| name: Core Tests (No Optional Deps) | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install core dependencies only | |
| run: | | |
| pip install uv | |
| uv sync --group dev | |
| - name: Run core tests | |
| run: uv run coverage run --parallel-mode -m pytest -m core -v | |
| - name: Upload coverage data | |
| if: matrix.python-version == '3.12' | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: coverage-core | |
| path: .coverage.* | |
| include-hidden-files: true | |
| test-benchmark: | |
| name: Benchmark Tests | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install dependencies | |
| run: | | |
| pip install uv | |
| uv sync --all-extras --group dev | |
| - name: Run benchmark tests | |
| run: uv run coverage run --parallel-mode -m pytest -m "benchmark and not (slow or live)" -v | |
| - name: Upload coverage data | |
| if: matrix.python-version == '3.12' | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: coverage-benchmark | |
| path: .coverage.* | |
| include-hidden-files: true | |
| test-core-optional: | |
| name: Core Tests (With Optional Deps) | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install all dependencies | |
| run: | | |
| pip install uv | |
| uv sync --all-extras --group dev | |
| - name: Run core tests with optional deps | |
| run: uv run coverage run --parallel-mode -m pytest -m core -v | |
| - name: Upload coverage data | |
| if: matrix.python-version == '3.12' | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: coverage-core-optional | |
| path: .coverage.* | |
| include-hidden-files: true | |
| test-interface: | |
| name: Interface Tests | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install all dependencies | |
| run: | | |
| pip install uv | |
| uv sync --all-extras --group dev | |
| - name: Run interface tests | |
| run: uv run coverage run --parallel-mode -m pytest -m interface -v | |
| - name: Upload coverage data | |
| if: matrix.python-version == '3.12' | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: coverage-interface | |
| path: .coverage.* | |
| include-hidden-files: true | |
| test-slow: | |
| name: Slow Tests (Data Downloads + Integrity) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - name: Set up Python 3.12 | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: "3.12" | |
| - name: Install dependencies | |
| run: | | |
| pip install uv | |
| uv sync --all-extras --group dev | |
| - name: Run slow and live tests | |
| run: uv run coverage run --parallel-mode -m pytest -m "(slow or live) and not credentialed" -v | |
| - name: Upload coverage data | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: coverage-slow | |
| path: .coverage.* | |
| include-hidden-files: true | |
| # test-credentialed: | |
| # name: Credentialed Tests (Live API) | |
| # runs-on: ubuntu-latest | |
| # environment: credentialed-tests | |
| # steps: | |
| # - uses: actions/checkout@v3 | |
| # - name: Set up Python 3.12 | |
| # uses: actions/setup-python@v4 | |
| # with: | |
| # python-version: "3.12" | |
| # - name: Install dependencies | |
| # run: | | |
| # pip install uv | |
| # uv sync --all-extras --group dev | |
| # - name: Run credentialed tests | |
| # env: | |
| # OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} | |
| # ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} | |
| # GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }} | |
| # run: | | |
| # uv run pytest -m "credentialed and not smoke" -v | |
| coverage: | |
| name: Coverage Report | |
| needs: [test-core, test-benchmark, test-core-optional, test-interface, test-slow] | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - name: Set up Python 3.12 | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: "3.12" | |
| - name: Install dependencies | |
| run: | | |
| pip install uv | |
| uv sync --group dev | |
| - name: Download coverage data | |
| uses: actions/download-artifact@v4 | |
| with: | |
| pattern: coverage-* | |
| merge-multiple: true | |
| - name: Combine and report coverage | |
| run: | | |
| uv run coverage combine | |
| uv run coverage xml | |
| uv run coverage html | |
| uv run coverage report | |
| - name: Upload coverage to Codecov | |
| uses: codecov/codecov-action@v5 | |
| with: | |
| fail_ci_if_error: false | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| - name: Coverage comment | |
| if: github.event_name == 'pull_request' | |
| uses: py-cov-action/python-coverage-comment-action@v3 | |
| with: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| MINIMUM_GREEN: 85 | |
| MINIMUM_ORANGE: 70 | |
| - name: Store coverage report | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: coverage-report | |
| path: htmlcov/ |