Skip to content

Hide redundant notebook download submenu #20704

Hide redundant notebook download submenu

Hide redundant notebook download submenu #20704

Workflow file for this run

name: Test BE
on:
push:
branches: [main]
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.ref || github.run_id }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
permissions:
contents: read
env:
MARIMO_SKIP_UPDATE_CHECK: 1
UV_EXCLUDE_NEWER: "7 days"
jobs:
changes:
runs-on: ubuntu-latest
outputs:
backend: ${{ steps.filter.outputs.backend }}
docs: ${{ steps.filter.outputs.docs }}
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3
id: filter
with:
filters: |
backend:
- 'marimo/**'
- 'tests/**'
- 'pyproject.toml'
docs:
- 'docs/**'
test_docs:
needs: changes
if: ${{ needs.changes.outputs.docs == 'true' }}
name: Test docs
runs-on: ubuntu-latest
steps:
- name: ⬇️ Checkout repo
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- name: 🐍 Setup uv
uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
- name: 📚 Build docs
id: docs
run: uv run --group docs mkdocs build --strict
- name: Summarize docs failure
if: failure() && steps.docs.outcome == 'failure'
uses: ./.github/actions/pr-comment-on-failure
continue-on-error: true
with:
check-name: "docs build"
command: "uv run --group docs mkdocs build --strict"
test_check:
needs: changes
if: ${{ needs.changes.outputs.backend == 'true' }}
name: Test lint and typecheck
runs-on: ubuntu-latest
steps:
- name: ⬇️ Checkout repo
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- name: 🐍 Setup uv
uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
- name: 🧹 Lint
id: lint
run: uv run ruff check --fix --output-format=github
- name: 📋 Register mypy problem matcher
run: echo "::add-matcher::.github/problemMatchers/mypy.json"
- name: 🔍 Typecheck
id: typecheck
run: uv run --only-group typecheck mypy marimo --exclude=marimo/_tutorials/
- name: Summarize lint failure
if: failure() && steps.lint.outcome == 'failure'
continue-on-error: true
uses: ./.github/actions/pr-comment-on-failure
with:
check-name: "lint"
command: "uv run ruff check --fix"
- name: Summarize typecheck failure
if: failure() && steps.typecheck.outcome == 'failure'
continue-on-error: true
uses: ./.github/actions/pr-comment-on-failure
with:
check-name: "typecheck"
command: "uv run --only-group typecheck mypy marimo --exclude=marimo/_tutorials/"
# For PRs, we only run the tests for the changed files.
# If there is a `test-all` label, we run the tests across unchanged files as well.
#
# Split by OS so that a failure on one runner does not cancel sibling jobs on
# other runners (each job has its own matrix and therefore its own fail-fast
# scope). Within a single OS, the default fail-fast behavior is preserved.
test_python_ubuntu:
needs: changes
if: ${{ needs.changes.outputs.backend == 'true' || (github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'test-all')) }}
name: ubuntu-latest / Py ${{ matrix.python-version }} / ${{ matrix.dependencies }} deps
runs-on: ubuntu-latest
timeout-minutes: 25
strategy:
matrix:
python-version: ["3.10"]
dependencies: ["core", "core,optional"]
include:
- python-version: "3.10"
dependencies: "minimal"
- python-version: "3.11"
dependencies: "core"
- python-version: "3.12"
dependencies: "core"
- python-version: "3.13"
dependencies: "core"
- python-version: "3.14"
dependencies: "core"
- python-version: "3.11"
dependencies: "core,optional"
- python-version: "3.12"
dependencies: "core,optional"
- python-version: "3.13"
dependencies: "core,optional"
# TODO: Add in 3.14 optional once there is broader wheel support
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
with:
fetch-depth: 0 # Fetch all history for git diff
- uses: ./.github/actions/test-python
with:
python-version: ${{ matrix.python-version }}
dependencies: ${{ matrix.dependencies }}
test_python_macos:
needs: changes
if: ${{ needs.changes.outputs.backend == 'true' || (github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'test-all')) }}
name: macos-latest / Py ${{ matrix.python-version }} / ${{ matrix.dependencies }} deps
runs-on: macos-latest
timeout-minutes: 25
strategy:
matrix:
python-version: ["3.10"]
dependencies: ["core", "core,optional"]
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
with:
fetch-depth: 0 # Fetch all history for git diff
- uses: ./.github/actions/test-python
with:
python-version: ${{ matrix.python-version }}
dependencies: ${{ matrix.dependencies }}
test_python_windows:
needs: changes
if: ${{ needs.changes.outputs.backend == 'true' || (github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'test-all')) }}
name: windows-latest / Py ${{ matrix.python-version }} / ${{ matrix.dependencies }} deps
runs-on: windows-latest
timeout-minutes: 25
strategy:
matrix:
python-version: ["3.10"]
dependencies: ["core", "core,optional"]
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
with:
fetch-depth: 0 # Fetch all history for git diff
- uses: ./.github/actions/test-python
with:
python-version: ${{ matrix.python-version }}
dependencies: ${{ matrix.dependencies }}
# Only run coverage on `main` so it is not blocking
test_coverage:
needs: changes
if: ${{ needs.changes.outputs.backend == 'true' && github.ref == 'refs/heads/main' && github.event_name == 'push' }}
name: Test coverage
runs-on: ubuntu-latest
timeout-minutes: 35
permissions:
contents: read
id-token: write # required for Doppler OIDC
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- name: 🐍 Setup uv
uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
# This step is needed since some of our tests rely on the index.html file
- name: Create assets directory, copy over index.html
run: |
mkdir -p marimo/_static/assets
cp frontend/index.html marimo/_static/index.html
cp frontend/public/favicon.ico marimo/_static/favicon.ico
- name: Test with optional dependencies
run: |
uv run --group test-optional pytest \
-v \
tests/ \
-k "not test_cli" \
--durations=10 \
--picked=first \
--inline-snapshot=disable \
--cov=marimo --cov-report=xml --junitxml=junit.xml -o junit_family=legacy
- name: 🔐 Fetch Doppler secrets
if: ${{ !cancelled() }}
uses: dopplerhq/secrets-fetch-action@cd2efbf9a404504316435873eff298b82f7e0562 # v1.3.0
id: secrets
with:
auth-method: oidc
doppler-identity-id: ${{ vars.DOPPLER_IDENTITY_ID }}
doppler-project: marimo-oss
doppler-config: ci_test
# Only upload coverage on `main` so it is not blocking
# and only on `3.13`, `ubuntu-latest`, with optional deps since it will cover
# the most surface area.
- name: Upload coverage reports to Codecov
if: ${{ !cancelled() }}
uses: codecov/codecov-action@75cd11691c0faa626561e295848008c8a7dddffe # v5
with:
files: ./coverage.xml
env:
CODECOV_TOKEN: ${{ steps.secrets.outputs.CODECOV_TOKEN }}
- name: Upload test results to Codecov
if: ${{ !cancelled() }}
uses: codecov/test-results-action@0fa95f0e1eeaafde2c782583b36b28ad0d8c77d3 # v1
env:
CODECOV_TOKEN: ${{ steps.secrets.outputs.CODECOV_TOKEN }}