Pin jax in the numpy_vs_numba_vs_jax install cell #1561
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: Build Project [using jupyter-book] | |
| on: [pull_request] | |
| jobs: | |
| preview: | |
| runs-on: "runs-on=${{ github.run_id }}/family=g4dn.2xlarge/image=quantecon_ubuntu2404/volume=80gb/spot=false" | |
| permissions: | |
| contents: read | |
| actions: read # dawidd6/action-download-artifact reads the cache.yml build artifact | |
| pull-requests: write | |
| steps: | |
| - uses: actions/checkout@v7 | |
| with: | |
| fetch-depth: 0 # Fetch full git history for changelog feature | |
| - name: Setup Anaconda | |
| uses: conda-incubator/setup-miniconda@v4 | |
| with: | |
| auto-update-conda: true | |
| auto-activate-base: true | |
| miniconda-version: 'latest' | |
| python-version: "3.13" | |
| environment-file: environment.yml | |
| activate-environment: quantecon | |
| - name: Check nvidia Drivers | |
| shell: bash -l {0} | |
| run: nvidia-smi | |
| - name: Install JAX and Numpyro | |
| shell: bash -l {0} | |
| run: | | |
| # Pinned: jax 0.11.1 (2026-08-17) hangs numpy_vs_numba_vs_jax's | |
| # lax.fori_loop cells -- they jit with device=cpu, so the CPU-path | |
| # regression bites even on these GPU runners. Context is recorded in | |
| # QuantEcon/workspace-lectures#49. With jax already present, the | |
| # lecture's unpinned `!pip install quantecon jax` cell is satisfied | |
| # and does not upgrade. | |
| pip install "jax[cuda13]==0.11.0" | |
| pip install numpyro | |
| python scripts/test-jax-install.py | |
| - name: Install latex dependencies | |
| run: | | |
| sudo apt-get -qq update | |
| sudo apt-get install -y \ | |
| texlive-latex-recommended \ | |
| texlive-latex-extra \ | |
| texlive-fonts-recommended \ | |
| texlive-fonts-extra \ | |
| texlive-xetex \ | |
| latexmk \ | |
| xindy \ | |
| dvipng \ | |
| cm-super | |
| - name: Display Conda Environment Versions | |
| shell: bash -l {0} | |
| run: conda list | |
| - name: Display Pip Versions | |
| shell: bash -l {0} | |
| run: pip list | |
| - name: Download "build" folder (cache) | |
| uses: dawidd6/action-download-artifact@v21 | |
| with: | |
| workflow: cache.yml | |
| branch: main | |
| name: build-cache | |
| path: _build | |
| # Prune the restored _build/html so files deleted from source stop being | |
| # published: sphinx copies html_static_path in but never removes stale | |
| # assets. `jb clean . --html` removes exactly _build/html, leaving | |
| # .jupyter_cache (the expensive execution cache), _build/latex and | |
| # _build/jupyter untouched. Must run BEFORE the PDF/notebook steps below, | |
| # which stage output INTO _build/html. | |
| - name: Prune restored HTML (drop stale assets deleted from source) | |
| shell: bash -l {0} | |
| run: jb clean . --html | |
| # Build Assets (Download Notebooks and PDF via LaTeX) | |
| - name: Build Download Notebooks (sphinx-tojupyter) | |
| shell: bash -l {0} | |
| run: | | |
| # This is the FIRST `jb build` in the workflow, and `execute_notebooks: "cache"` | |
| # means only the first build actually executes notebooks — the later HTML build | |
| # reads the cache. So this is the step where a CellExecutionError surfaces, and | |
| # therefore the step that has to gate. | |
| # | |
| # `set -eo pipefail` is required as well as `-W`: `shell: bash -l {0}` is a | |
| # custom shell spec, so GitHub does not inject `-eo pipefail` (it only does | |
| # that for the bare `shell: bash` shorthand). Without it a failing `jb build` | |
| # would be masked by the trailing mkdir/cp, whose exit code becomes the | |
| # step's — and `--keep-going` guarantees the .ipynb files exist for `cp` | |
| # to succeed on. | |
| set -eo pipefail | |
| jb build lectures --path-output ./ --builder=custom --custom-builder=jupyter -n -W --keep-going | |
| mkdir -p _build/html/_notebooks | |
| cp -u _build/jupyter/*.ipynb _build/html/_notebooks | |
| - name: Build PDF from LaTeX | |
| shell: bash -l {0} | |
| run: | | |
| jb build lectures --builder pdflatex --path-output ./ -n -W --keep-going | |
| mkdir _build/html/_pdf | |
| cp -u _build/latex/*.pdf _build/html/_pdf | |
| # Final Build of HTML | |
| - name: Build HTML | |
| shell: bash -l {0} | |
| run: | | |
| jb build lectures --path-output ./ -n -W --keep-going | |
| - name: Upload Execution Reports | |
| uses: actions/upload-artifact@v7 | |
| if: failure() | |
| with: | |
| name: execution-reports | |
| path: _build/html/reports | |
| - name: Preview Deploy to Netlify | |
| uses: nwtgck/actions-netlify@v4 | |
| with: | |
| publish-dir: '_build/html/' | |
| production-branch: main | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| deploy-message: "Preview Deploy from GitHub Actions" | |
| env: | |
| NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} | |
| NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} |