SQLite function cache
Project description
No depenencies, no external services functional cache.
Only relies on sqlite3 from the standard python library plus hashlib.sha1 and json.dumps also from standard library.
Note: Most of the limits are due to sqlite. There are other libraries who can relief you from these limits. Also this is probabily not usable as a 'real' cache because there is no 'expiry' option. That is why it is a functional cache:
f(x) => y, where function f always gives output y given input x.
Therefore it is usable for expensive and/or recursive functions.
Example for a recursive factorial function:
from functional_cache import FunctionalCache
f = FunctionalCache("factorial.db")
@f.cache
def factorial(n: int) -> str:
"""factorial function that returns the answer in a string.
This so sqlite can save the large integers.
"""
if n < 2:
return "1"
else:
return str(n*int(factorial(n-1)))
def build_up_factorial(n):
print("This will build a factorial database until {n}!".format(n=n))
for i in range(20, n, 20):
print("now at {i}".format(i=i), end="\r")
factorial(i)
n = 900
build_up_factorial(n)
print("{}! = {}".format(n, factorial(900)))
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
FunctionalCache-0.1.tar.gz
(3.4 kB
view hashes)
Built Distributions
Close
Hashes for FunctionalCache-0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 630042192187b5689f95b9d1730f2cd4aad324cf144181b9bf3a6e2d97ea6a48 |
|
MD5 | 2271a7ed04a7706440ba14b01167121f |
|
BLAKE2b-256 | 3266c6c9ba9fbff653a970d073bf91e6c9ff9ff1e82544222de5fc087e74d42b |
Close
Hashes for FunctionalCache-0.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5287c80e733670825f56d255aecff066b25400774492608759dd25e640e4fa06 |
|
MD5 | e67cb8dc28a69706344eb47d543ee663 |
|
BLAKE2b-256 | 20ccf856c15ddfd8de809c926b242a9e330104be9463eb3d51971b4f0d4ee372 |