A bunch of caches
Project description
pycaches
A bunch of caches.
Features
✓ Ease of use cache
decorator
✓ Support for non-Hashable
keys (dictionaries, lists, sets)
✓ Different cache replacement policies (random, LRU)
✓ Time-based item expiration
□ Cache hit/miss statistics
□ Rich configuration, sane defaults
□ Optional persistency
Installation
$ pip install pycaches
Usage
cache
Decorator
from pycaches import cache
@cache()
def example():
print("Hi, I will be called once!")
example() # Prints "Hi, I will be called once!"
example() # Is not called
import time
from pycaches import cache
@cache()
def long_computation(x):
print("Performing long computation...")
time.sleep(1)
return x + 1
long_computation(5) # Sleeps for 1 second and returns 6
long_computation(5) # Immediately returns 6
long_computation(6) # Sleeps for 1 second and returns 7
long_computation(6) # Immediately returns 7
long_computation(6) # And again
Cache
class
import time
from datetime import timedelta
from pycaches import Cache
cache = Cache()
cache.save("a", 1)
cache.save("b", 2)
cache.save("c", 3, expire_in=timedelta(seconds=10))
cache.has("c") # returns True
cache.get("a") # returns 1
time.sleep(10)
cache.has("c") # False
cache.get("c") # raises KeyError
Different cache replacement policies
from pycaches import Cache
from pycaches.policies import LRU
"""
LRU stands for Least Recently Used.
So LRU policy removes Least Recently Used item from cache
if it's size exceed max_items.
"""
cache = Cache(max_items=2, replacement_policy=LRU())
cache.save("a", 1)
cache.save("b", 2)
cache.save("c", 3)
cache.has("a") # returns False
cache.has("b") # returns True
cache.save("d", 4)
cache.has("b") # returns False
Contribution
Just clone repository, make your changes and create a pull request.
Do not forget to make sure code quality is high: run linters, typecheckers, check code coverage, etc. You can do it all with make
:
make lint
:pylint
andpycodestyle
make typecheck
:mypy
make test
:pytest
make coverage
:pytest
withpytest-cov
make quality
:radon
make build
:setup.py
And just make
or make all
to run all these targets.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pycaches-0.0.4.tar.gz
(2.7 kB
view hashes)