extras: notebooks that are not sections (#53) - #56
Merged
Conversation
The repo had no concept of a notebook outside the twelve sections, and two
places actively refused one: check_links.py failed any .ipynb it could not
match to a declared section, and gen_notebooks.py built every header and
footer out of `sections.sNN`. Two deep dives are coming that are take-home
material, not sections, so the kind has to exist first.
`extras:` in _variables.yml is `sections:` minus `minutes`, `start`, `end`
and `part`. That absence is the mechanism: timeline.py only ever walks
`sections`, so nothing under `extras:` can move a start time, the agenda or
workshop.minutes. Extras get no #sec-NN anchor and no Kahoot either.
- gen_notebooks.py iterates SECTIONS + EXTRAS. The format line drops `part`
and `minutes` when they are absent; the footer gives an extra no Kahoot
block, chains Next up within the extras, and closes the last one on a link
back to the site rather than on the workshop's closing words. Section 11
still does not point at extra 12.
- check_links.py treats extras as notebooks in checks 1, 3 and 8, and as
nothing at all in checks 4, 5 and 6 — the decks, the landing pages and the
clock stay on the twelve sections. Check 6 needed no change, which is the
point.
- gen_tables.py writes three new tables over extras: notebooks-extra-en.md
for notebooks.qmd, and extras-{en,es}.md for the README's two halves.
Columns are `# | Deep dive | Colab` — no Slides column, no Quiz column.
- README.md gains a `## Going further` region in each language half;
notebooks.qmd and notebooks/README.md are reworded off the bare "Twelve".
- Placeholder notebooks 12 and 13 land on disk with their generated header
and footer; the teaching bodies arrive in the two follow-up issues.
check_schedule still reports 195 minutes across twelve sections and the
agenda table is byte-identical. Both generators are stable on a second run.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Bis2w9X1oAX9MEVvKh4Ndo
Owner
Author
|
close #53 |
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #53.
The repo had no concept of a notebook outside the twelve sections, and two places actively refused one:
check_links.pyfailed any.ipynbit could not match to a declared section, andgen_notebooks.pybuilt every header and footer out ofsections.sNN. The two deep dives that follow are take-home material rather than sections, so the kind has to exist before either can be committed.extras:in_variables.ymlA new top-level mapping:
sections:minusminutes,start,endandpart. That absence is the mechanism —scripts/timeline.pyonly ever walkssections, so nothing declared underextras:can move a start time, the agenda orworkshop.minutes. Extras get no#sec-NNslide anchor and no Kahoot.Two are declared: 12 · Matrix factorizations and 13 · Tensor factorizations.
The changes
scripts/gen_notebooks.py— iteratesSECTIONS + EXTRAS. The format line dropspartandminuteswhen they are absent; the footer gives an extra no Kahoot block, chains Next up within the extras, and closes the last one on a link back to the site rather than on the workshop's closing words. Section 11 still does not point at extra 12: the workshop ends there.scripts/check_links.py— extras are notebooks in checks 1 (validity, badges), 3 (Colab URLs) and 8 (solution independence), and are absent from checks 4 (deck anchors), 5 (landing-page parity) and 6 (the clock). Check 6 needed no change by construction, which is the point.scripts/gen_tables.py— three new generated tables:_includes/notebooks-extra-en.mdfornotebooks.qmd, and_includes/extras-en.md/extras-es.mdfor the README's two language halves. Columns are# | Deep dive | Colab— no Slides column, because an extra has no deck anchor, and no Quiz column, because no Kahoot covers one.README.md— a## Going further/## Para seguirheading in each language half, wrapping new marker regions injected by the existinginject()helper. The 165/195-minute prose is untouched: it is about the timed day, not about what is innotebooks/.notebooks.qmd— a## Going furthersection, two new rows in the hand-written What each notebook needs table, and the subtitle reworded off the bare word "Twelve".notebooks/README.md,CLAUDE.md— the same rewording, plus a short section on what an extra is and which checks it does and does not belong to.notebooks/12-*.ipynb,notebooks/13-*.ipynb— placeholder notebooks with their generated header and footer and a scope table. The teaching bodies arrive in the two follow-up issues.Acceptance
gen_tables.pyandgen_notebooks.pyare byte-stable on a second run — verified, zero files changed.check_links.pypasses all nine checks with the two extras declared:[1] 14 notebooks (12 sections, 2 extras): valid, no outputs, no execution counts, badges self-consistent[3] 64 Colab URLs, all well-formed, 14/14 notebooks referenced[4] 15 anchors present in both decks, no extras in either[5] both pages list all 12 sections with slide anchors and notebook links[6] 12 sections end at +03:15 — 195 min including quizzes and breaks[8] 145 visible code cells across 14 notebooks are self-sufficientmain.quarto render(1.6.40) run anddocs/committed. That render also picks up the twelve section notebooks indocs/notebooks/, which were stale from the previous merge.🤖 Generated with Claude Code
https://claude.ai/code/session_01Bis2w9X1oAX9MEVvKh4Ndo