improvement: marimo export ipynb with outputs #7426
This file contains 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: 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 |