jupyter-cache
A defined interface for working with a cache of jupyter notebooks.
What it is and what it does
jupyter-cache provides a persistent cache layer for Jupyter notebook execution outputs. It stores the outputs of notebooks so that when you rebuild documentation or re-run notebooks, the cached results can be reused instead of re-executing the entire notebook—useful when notebooks contain long-running computations or generate outputs in formats that don't naturally store results.
The package is designed for notebooks with deterministic execution: same environment, no random code, no time-dependent external resources. It separates content edits from code cell changes, so only actual code modifications trigger re-execution. The package is actively used by jupyter-book to enable fast document rebuilds and is maintained by the Executable Books project.
Use it for:
- Speed up documentation builds in jupyter-book by caching notebook execution outputs across rebuilds.
- Avoid re-running expensive computations (long simulations, data processing) when only notebook text or formatting changes.
- Maintain consistent outputs across multiple notebook runs in CI/CD pipelines without re-executing deterministic code.
- Cache outputs from notebooks that depend on external data or scripts that rarely change.
- Enable parallel notebook execution with shared cache for teams working on the same documentation.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Caches Jupyter notebook execution outputs to avoid re-running notebooks with deterministic outputs, enabling fast rebuilds of documentation and notebooks that depend on long-running computations.
Yes, if you maintain Jupyter notebooks or documentation that re-builds frequently and contains long-running code. The package is actively maintained, has no known vulnerabilities, and low install friction. Not necessary for one-off notebooks or those with non-deterministic outputs.
Install
jupyter-cache on PyPI
pip
pip install jupyter-cacheuv
uv add jupyter-cachepoetry
poetry add jupyter-cacheInstalling jupyter-cache
Before you install
Low friction install with 8 straightforward runtime dependencies. Actively maintained with recent commits; last release was 637 days ago but the repository shows ongoing activity as of 2026-08-03.
License in practice
Licensed under MIT (permissive), so you can use, modify, and distribute the package freely with minimal restrictions.
Quickstart
pip install jupyter-cache
from jupyter_cache import CacheManager
cm = CacheManager()
cm.cache_notebook_file('notebook.ipynb')
Requires Python 3.9 or later; notebooks must have deterministic outputs (same environment, no random code, no time-dependent external resources).
Verify before relying
- Whether the cache correctly handles notebook cell dependencies and invalidation across Python package updates or git branch changes.
- Performance characteristics and cache size limits for large numbers of cached notebooks.
- Compatibility with recent versions of jupyter-book and other downstream tools that depend on this package.
Package facts
| License | not declared (permissive) |
| Python support | supports the current Python release (>=3.9) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 8 — attrs, click, importlib-metadata, nbclient, nbformat, pyyaml, sqlalchemy, tabulate |
| Maintenance | actively maintained — 637 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 1,002,718/month — #4,533 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: jupyter_cache-1.0.1-py3-none-any.whl
Keywords: sphinx, extension, material, design, web, components
Tags
More Python Modules packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
PyYAMLPyYAML parses and emits YAML 1.1 data format,…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
annotated-typesProvides reusable metadata objects for use with…
permissive · top 100 on PyPI
typing-inspectionProvides runtime tools to inspect and…
permissive · top 100 on PyPI
jupyter-bookJupyter Book converts Markdown files and…
permissive · top 15,000 on PyPI
nbmakeA pytest plugin that executes Jupyter notebooks…
permissive · top 15,000 on PyPI
nbclientnbclient executes Jupyter notebooks…
permissive · top 1,000 on PyPI
nb-cleannb-clean removes execution counts, metadata,…
permissive · top 15,000 on PyPI
execnbExecutes Jupyter notebook code and captures…
permissive · top 15,000 on PyPI
scrapbookScrapbook records data values and visual…
permissive · top 5,000 on PyPI
session-infoOutputs version information for all modules…
permissive · top 15,000 on PyPI
nbstripoutStrips output cells and metadata from Jupyter…
permissive · top 5,000 on PyPI
jupytextJupytext converts Jupyter notebooks to and from…
permissive · top 5,000 on PyPI
mkdocs-jupyterConverts Jupyter notebooks and Python scripts…
permissive · top 15,000 on PyPI