A defined interface for working with a cache of jupyter notebooks.
This project is in an alpha state. It may evolve rapidly and/or make breaking changes!
Comments, requests, or bugreports are welcome and recommended! Please
open an issue here
This packages provides a clear API and CLI for staging, executing and cacheing
Jupyter Notebooks. Although there are certainly other use cases,
the principle use case this was written for is generating books / websites,
created from multiple notebooks (and other text documents),
during which it is desired that notebooks can be auto-executed only
if the notebook had been modified in a way that may alter its code cell outputs.
Some desired requirements (not yet all implemented):
A clear and robust API
The cache is persistent on disk
Notebook comparisons separate out “edits to content” from “edits to code cells”.
Cell rearranges and code cell changes should require a re-execution.
Text content changes should not.
Allow parallel access to notebooks (for execution)
Store execution statistics/reports.
Store external assets: Notebooks being executed often require external assets: importing scripts/data/etc. These are prepared by the users.
Store execution artifacts: created during exeution
A transparent and robust cache invalidation: imagine the user updating an external dependency or a Python module, or checking out a different git branch.
To install jupytes-cache, do the following:
pip install jupyter-cache[cli]
For package development:
git clone https://github.com/ExecutableBookProject/jupyter-cache
git checkout develop
pip install -e .[cli,code_style,testing,rtd]
Here are the site contents: