From a31308b65a72f3cef24d1f58d35d874e1def2224 Mon Sep 17 00:00:00 2001 From: Matt McKay Date: Sat, 18 Jul 2026 20:32:07 +1000 Subject: [PATCH 1/2] CI hardening: strict builds, conda dependabot, missing wald_dec_rule.png Carries forward the pieces of #97 that #165 did not supersede: - jb build gains '-n -W --keep-going' in cache/ci/publish workflows, matching the English source repos' strict-build convention - dependabot watches the conda ecosystem (jupyter-book pinned <2.0, python constrained by the anaconda distribution) - wald_dec_rule.png copied from the source repo (referenced by wald_friedman_2 but absent here - a warning today, an error under -W) Dropped from #97 as obsolete: the lecture-code fixes (regenerated by the Track B resync wave or applied directly to its branches) and the ogm.py tweak (optgrowth_fast was removed in #99). Part of Phase 0 Track B, QuantEcon/lecture-python.myst#947. Co-Authored-By: Claude Fable 5 --- .github/dependabot.yml | 13 +++++++++++++ .github/workflows/cache.yml | 2 +- .github/workflows/ci.yml | 2 +- .github/workflows/publish.yml | 2 +- .../wald_friedman_2/wald_dec_rule.png | Bin 0 -> 25678 bytes 5 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 lectures/_static/lecture_specific/wald_friedman_2/wald_dec_rule.png diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 7809c2a9..04804108 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -11,3 +11,16 @@ updates: prefix: ⬆️ schedule: interval: weekly + + - package-ecosystem: "conda" + directory: "/" + commit-message: + prefix: ⬆️ + schedule: + interval: weekly + ignore: + - dependency-name: "jupyter-book" + versions: [">=2.0"] + - dependency-name: "python" + # Python version should be constrained by the anaconda distribution version + versions: [">0"] diff --git a/.github/workflows/cache.yml b/.github/workflows/cache.yml index 16fffa11..3f11f73e 100644 --- a/.github/workflows/cache.yml +++ b/.github/workflows/cache.yml @@ -39,7 +39,7 @@ jobs: - name: Build HTML shell: bash -l {0} run: | - jb build lectures --path-output ./ --keep-going + jb build lectures --path-output ./ -n -W --keep-going - name: Upload Execution Reports (HTML) uses: actions/upload-artifact@v4 if: failure() diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 36ddb70b..ae74c1bf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -71,7 +71,7 @@ jobs: - name: Build HTML shell: bash -l {0} run: | - jb build lectures --path-output ./ --keep-going + jb build lectures --path-output ./ -n -W --keep-going - name: Upload Execution Reports (HTML) uses: actions/upload-artifact@v4 if: failure() diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index da3099b5..6cc67b98 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -71,7 +71,7 @@ jobs: - name: Build HTML shell: bash -l {0} run: | - jb build lectures --path-output ./ + jb build lectures --path-output ./ -n -W --keep-going # Create HTML archive for release assets - name: Create HTML archive shell: bash -l {0} diff --git a/lectures/_static/lecture_specific/wald_friedman_2/wald_dec_rule.png b/lectures/_static/lecture_specific/wald_friedman_2/wald_dec_rule.png new file mode 100644 index 0000000000000000000000000000000000000000..6664279d1b14da37dee074e8df08e8bc6ff72c7e GIT binary patch literal 25678 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 MUe6DU%j$lCvgS{V$)e6{R2IMS@mDP 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 literal 0 HcmV?d00001 From b5adb55b0fb4ed23750d368c134d40f5e78b9caa Mon Sep 17 00:00:00 2001 From: Matt McKay Date: Sat, 18 Jul 2026 20:52:09 +1000 Subject: [PATCH 2/2] Fix the two main-content strict-build breaks: mix_model import, cass_fiscal ref mix_model kept a CJK font-config block without the mpl import it needs (same class as the five wave-branch fixes; mix_model was skipped by the wave so the pre-existing bug stayed on main). cass_fiscal's note pointed {doc} at a document that never existed; replaced with the wave branch's exact {ref}`growth_model` sentence so the resync PR merges cleanly over it. newton_method's two iref_ambiguous warnings are NOT patched here: old main lacks the local anchors, and the resync PR (#140) adds them - merging #140 resolves those warnings without conflict-prone edits. Co-Authored-By: Claude Fable 5 --- lectures/cass_fiscal.md | 2 +- lectures/mix_model.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lectures/cass_fiscal.md b/lectures/cass_fiscal.md index c347b6c9..b00f8e0f 100644 --- a/lectures/cass_fiscal.md +++ b/lectures/cass_fiscal.md @@ -287,7 +287,7 @@ mp.pretty = True 我们使用`mpmath`库在射击算法中执行高精度运算,以防止由于数值不稳定而导致解发散。 ```{note} -在下面的函数中,我们包含了一些处理增长成分的例程(将在{doc}`Exogenous growth` 一节中进一步讨论)。 +在下面的函数中,我们包含了一些处理增长成分的例程,这部分内容将在{ref}`growth_model`一节中进一步讨论。 我们在这里提前加入这些代码是为了避免代码重复。 ``` diff --git a/lectures/mix_model.md b/lectures/mix_model.md index feeb623e..85f0ab67 100644 --- a/lectures/mix_model.md +++ b/lectures/mix_model.md @@ -117,6 +117,7 @@ $$ import matplotlib.pyplot as plt FONTPATH = "fonts/SourceHanSerifSC-SemiBold.otf" +import matplotlib as mpl mpl.font_manager.fontManager.addfont(FONTPATH) plt.rcParams['font.family'] = ['Source Han Serif SC']