Code
from pathlib import Path
from IPython.display import Markdown
def _find_todo() -> Path:
# walk up from the notebook working dir to the repo root
for d in [Path.cwd(), *Path.cwd().parents]:
if (d / "TODO.md").exists():
return d / "TODO.md"
raise FileNotFoundError("TODO.md not found above notebooks/")
_text = _find_todo().read_text()
# this chapter supplies the appendix heading, so drop the file's own H1
_lines = _text.splitlines()
if _lines and _lines[0].startswith("# "):
_lines = _lines[1:]
while _lines and not _lines[0].strip():
_lines.pop(0)
Markdown("\n".join(_lines))The book is organized as questions (see notebooks/). These are candidate questions for future chapters or sections, with notes on feasibility given the data we already pull from Neon (accounts, donations, events, registrations).