QuantEcon / QuantEcon/lecture-python-programming

Migrate the production build chain (publish, cache, execution tests) to QuantEcon/mystmd after #363

Ouverte
#593 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

maintenance
Langage dominant
JavaScript
Étoiles
72
Forks
31
Merge moyen
2 j 20 h
PR mergées (30 j)
8

Description

Goal

Finish what #363 starts: once the JB2 branch lands, the repo should be 100% QuantEcon/mystmd — no jupyter-book 1.x anywhere in the build chain. #363 deliberately migrates only the PR preview (ci.yml) and ipynb builds (build-ipynb.yml); everything production-facing still runs the JB1/Sphinx toolchain from main, driven by lectures/_config.yml + _toc.yml, which #363 replaces with myst.yml. Mixing the two long-term means every lecture edit is validated against one engine and published with another.

What still runs jupyter-book 1.x

surface current mystmd path
publish.yml HTML deploy jb build lectures myst build --html — already proven in ci.yml / build-ipynb.yml
publish.yml PDF jb build --builder pdflatex typst export — a book-pdf export is already stubbed (commented) in lectures/myst.yml; needs building out and visual review
publish.yml notebook downloads sphinx-tojupyter custom builder myst build --ipynb — already prototyped in build-ipynb.yml, including the MyST-syntax-leak audit step
cache.yml weekly execution cache jb build mirror of ci.yml's build, or retire in favour of ci.yml's cache (whose key is now engine-aware)
execution-*.yml (linux/osx/win) pip install jupyter-book + Sphinx stack decide: port to mystmd, or retire — their purpose (execution regression) is partly covered by ci.yml now being a genuine cold-execution test
environment.yml pins jupyter-book>=1.0.4post1,<2.0 replace with myst_requirements.txt as the single environment
linkcheck_ignore in _config.yml Sphinx-only config already duplicated into linkcheck.yml ignore-patterns (#592); retires with the file

Housekeeping in the same sweep: cache.yml is still named "Build Cache [using jupyter-book]", and .github/workflows/_github_actions/ci.yml is a stale stashed copy of the old preview workflow.

Constraints and lessons to carry over (from the #363 incident, 2026-08-03)

Execution-affecting configuration must be inside the execution cache key — hash the workflow file and requirements alongside the lectures, as ci.yml now does, or an engine/env change ships green against stale outputs. Pin the mystmd fork by SHA and JAX by version. Keep XLA_PYTHON_CLIENT_PREALLOCATE=false (or successor policy from QuantEcon/meta#350) on any step that executes the JAX lectures concurrently on a single-GPU runner; the JB1 chain never needed it only because Sphinx executes sequentially. Keep the memory/dmesg telemetry pattern on GPU execution jobs.

Sequencing

This is follow-up work to #363, not part of it — it should land as its own PR(s) after #363 merges, with the PDF export likely the long pole (needs typst template work and visual signoff). Related: QuantEcon/meta#348 (shared build-lectures action) is the natural place for the standardised pieces to land once, and QuantEcon/meta#350 will supply the JAX-on-CI configuration defaults.

Carried over from #344 (consolidated 2026-08-04)

Two mystmd build warnings remain from the #342/#344 tracking pair (both closed in favour of this issue):

  • python_oop.md:12 — index directive parse failure: single: OOP II: Building Classes (the second colon breaks parsing). Fix by rewording the entry, e.g. single: OOP II -- Building Classes.
  • status.md:16unknown directive: nb-exec-table (sphinx-tojupyter only). Needs a mystmd equivalent or a redesign of the execution-status page.

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par comparer le ci.yml et le build-ipynb.yml de #363 avec publish.yml, cache.yml, execution-*.yml, environment.yml et lectures/myst.yml. Suivez la manière dont sont actuellement générés le HTML de production, le PDF, les téléchargements de notebooks, le cache et les tests d’exécution. Le travail est terminé lorsque les surfaces de production restantes n’utilisent plus jupyter-book 1.x, que le cache inclut les entrées qui affectent l’exécution, que le PDF a été vérifié visuellement et que les avertissements mystmd indiqués ont été résolus.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
github-actions, jupyter-notebook, python
Domaine
build-system, ci-cd, documentation
Type d'issue
Refactorisation
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
Calme
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.