Key Points
- Use
.md files for episodes when you want static
content
- Use
.Rmd files for episodes when you need to generate
output
- Run
sandpaper::check_lesson() to identify any issues
with your lesson
- Run
sandpaper::build_lesson() to preview your lesson
locally
-
Sys.setenv(RETICULATE_PYTHON = "managed") forces the
reproducible environment; without it a local conda install wins and the
build differs from CI
-
py_require() declares packages and the Python version;
uv provisions them on first use
-
exclude_newer caps resolution at a date, since
renv.lock never records Python packages
-
py$name reads Python objects from R,
r.name reads R objects from Python
- No CI change is needed:
uv fetches the interpreter
inside the build container