shelved-cache
Persistent cache for Python cachetools.
Decision gist · record as of 2026-08-14
Yes, if you need simple disk-backed caching and don't want external dependencies. The low install friction, permissive license, and straightforward API make it a reasonable choice for small to medium projects. However, be aware that the package is aging (last release 242 days ago) and has a known issue on Windows with Python 3.13+; verify that issue doesn't affect your platform before committing to it for production use.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Python 3.10 or later.
- Known permission errors reported on Windows with Python 3.13 and above.
- Low friction install with a single runtime dependency (cachetools).
License · maintenance · safety
MIT (permissive) — MIT license is permissive; you can use this package freely in commercial and private projects with minimal restrictions.
last release 2025-12-15 (242 days) · last repo commit 2025-12-15 · 44 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 4,810,375 downloads/mo, #2,222 on PyPI
Alternatives
Verify before relying
pip install shelved-cache
from shelved_cache import PersistentCache
from cachetools import LRUCache
pc = PersistentCache(LRUCache, filename='mycache', maxsize=2)
pc["key"] = 42
print(pc["key"]) # 42
pc.close()- Whether the Windows permission issue on Python 3.13+ affects your use case or has been resolved in practice.
- Performance characteristics when cache files grow large or are accessed frequently across multiple processes.
What it is and what it does
shelved-cache adds disk persistence to cachetools cache objects, allowing you to wrap any cachetools cache (LRU, TTL, etc.) so that cached entries are automatically written to a file and survive program restarts. You create a PersistentCache instance around a cachetools cache class, then use it exactly like the underlying cache—reading and writing entries works the same way, but data persists to disk via Python's shelve module.
The package also provides async-aware decorators (cachedasyncmethod, cachedfunction) that work with both synchronous and asynchronous functions, and a utility function (autotuple_hashkey) to make list arguments hashable for caching. It's a thin layer on top of cachetools, designed for applications that need simple file-backed caching without external dependencies like Redis.
Use it for
- Cache expensive function results across program runs without setting up a database or external cache service.
- Decorate async methods with persistent caching using the async decorator support.
- Build a simple memoization layer for CLI tools or batch scripts that benefit from remembering past computations.
- Persist LRU or TTL cache state to disk for recovery after crashes or restarts.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you need simple disk-backed caching and don't want external dependencies.
The low install friction, permissive license, and straightforward API make it a reasonable choice for small to medium projects. However, be aware that the package is aging (last release 242 days ago) and has a known issue on Windows with Python 3.13+; verify that issue doesn't affect your platform before committing to it for production use.
Install
shelved-cache on PyPI
Before you install
Low friction install with a single runtime dependency (cachetools). Maintenance status is aging—last release was 242 days ago—but the repository remains active and the package supports current Python versions through 3.14.
Requires Python 3.10 or later. Known permission errors reported on Windows with Python 3.13 and above.
License in practice
MIT license is permissive; you can use this package freely in commercial and private projects with minimal restrictions.
Quickstart
pip install shelved-cache
from shelved_cache import PersistentCache
from cachetools import LRUCache
pc = PersistentCache(LRUCache, filename='mycache', maxsize=2)
pc["key"] = 42
print(pc["key"]) # 42
pc.close()
Verify before relying
- Whether the Windows permission issue on Python 3.13+ affects your use case or has been resolved in practice.
- Performance characteristics when cache files grow large or are accessed frequently across multiple processes.
Package facts
| License | MIT permissive |
| Python support | Supports the current Python release <4.0.0,>=3.10.0 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 1 packagecachetools |
| Maintenance | Aging 242 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 4,810,375 / month, #2,222 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 4 - BetaLicense :: OSI Approved :: MIT LicenseProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Programming Language :: Python :: Implementation :: PyPy |
Evidence: shelved_cache-0.5.0-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “persistent disk cache python”
- shelved-cacheWraps cachetools cache implementations with disk persistence,…
- fcachefcache provides a dictionary-like file-based cache that persists data…
- flexcacheCaches the results of expensive computations to disk, automatically…
Give your agent the search over MCP, or paste the wish link into any chat.
More Database packages
psycopg2-binary is a PostgreSQL database adapter for Python that implements the DB API 2.0 specification, enabling Python applications to connect to and query PostgreSQL databases with thread-safe concurrent operations.
Python client library for connecting to and executing commands against Redis key-value stores, supporting both synchronous and asynchronous operations.
Install it if your application needs to interact with Redis; the only prerequisite is a running Redis server instance.
YDB Python SDK is the official client library for connecting to and querying YDB databases from Python applications.
Install it if you need to connect Python applications to YDB databases.
Connects Python applications to Snowflake data warehouses using the DB API 2.0 specification, enabling SQL queries, data transfers, and warehouse operations.
sqlparse tokenizes SQL text into a tree of statements, clauses, and expressions, and provides functions to split scripts, format queries, and inspect parsed tokens without validating dialect or syntax.
Install it if you need to manipulate, format, or analyze SQL text programmatically.
Provides base adapter protocols and shared functionality that database adapters use to integrate with dbt-core, handling connections, dialect translation, relation caching, and core interface management.
See also cachetools · cachetools-async · fcache · cache-to-disk · pylru · asyncache · cacheout · onecache · cachier · requests-cache