Skip to content

improvement: marimo export ipynb with outputs #7426

improvement: marimo export ipynb with outputs

improvement: marimo export ipynb with outputs #7426

Workflow file for this run

name: cli test
on:
push:
branches: [main]
pull_request:
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: marimo
MARIMO_SKIP_UPDATE_CHECK: 1
jobs:
changes:
runs-on: ubuntu-latest
outputs:
cli: ${{ steps.filter.outputs.cli }}
steps:
- uses: actions/checkout@v4
- uses: dorny/paths-filter@v3
id: filter
with:
filters: |
cli:
- '**'
- '!docs/**'
- '!examples/**'
- '!README.md'
build_wheel:
needs: changes
if: ${{ needs.changes.outputs.cli == 'true' }}
name: Build marimo wheel
runs-on: ubuntu-latest
timeout-minutes: 10
defaults:
run:
shell: bash
steps:
- name: 🛑 Cancel Previous Runs
uses: styfle/[email protected]
- name: ⬇️ Checkout repo
uses: actions/checkout@v4
with:
fetch-depth: 0 # so we can run --since on the main branch and turbo can do faster cache hashing
- uses: pnpm/action-setup@v2
with:
version: 9
- name: ⎔ Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
cache-dependency-path: '**/pnpm-lock.yaml'
- name: 📦 Build frontend
run: make fe
env:
NODE_OPTIONS: '--max_old_space_size=8192'
- name: 🥚 Install Hatch
uses: pypa/hatch@install
- name: 📦 Build marimo wheel
run: hatch build -t wheel
- name: Check for _static/_lsp directory in wheel
run: |
wheel_file=$(ls dist/*.whl)
files_or_dirs_to_check=(
"marimo/_static/"
"marimo/_lsp/"
"marimo/_tutorials/"
"third_party.txt"
"third_party_licenses.txt"
)
for file_or_dir in "${files_or_dirs_to_check[@]}"; do
if ! unzip -l "$wheel_file" | grep -q "$file_or_dir"; then
echo "Error: $file_or_dir not found in the wheel"
exit 1
else
echo "Found $file_or_dir in the wheel"
fi
done
- name: Upload wheel
uses: actions/upload-artifact@v4
with:
name: testwheel
path: dist/*.whl
retention-days: 1
test_cli:
needs: [changes, build_wheel]
if: ${{ needs.changes.outputs.cli == 'true' }}
name: Tests CLI on ${{ matrix.os }} ${{ matrix.python-version }}
runs-on: ${{ matrix.os }}
timeout-minutes: 15
strategy:
matrix:
# TODO(akshayka): consider adding 3.8, 3.9
python-version: ['3.12']
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- name: 🛑 Cancel Previous Runs
uses: styfle/[email protected]
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
- name: Install Python deps
run: |
python -m pip install --upgrade pip
pip install pytest pytest-asyncio nbformat
- name: Download wheel
uses: actions/download-artifact@v4
with:
name: testwheel
- name: Install marimo
shell: bash
run: pip install marimo*whl
- name: Test CLI
shell: bash
run: |
pytest -v tests/_cli/test_cli*
test_examples:
needs: [changes, build_wheel]
if: ${{ needs.changes.outputs.cli == 'true' }}
name: Tests examples and smoke_tests
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: 🛑 Cancel Previous Runs
uses: styfle/[email protected]
- uses: actions/checkout@v4
- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: '3.12'
cache: 'pip'
- name: 🐍 Setup uv
uses: yezz123/setup-uv@v4
with:
uv-venv: marimo-venv
- name: Download wheel
uses: actions/download-artifact@v4
with:
name: testwheel
- name: Install Python deps
run: |
uv pip install pytest pytest-asyncio
uv pip install ./marimo*whl
- name: Test examples
shell: bash
run: pytest -v -s tests/_smoke_tests/run_all.py
# TODO(msconick) remove continue-on-error when all tests pass
continue-on-error: true