Skip to content

Yet another Python cache library. This has Python 3 typing hints.

License

Notifications You must be signed in to change notification settings

kitsuyui/cachepot

Repository files navigation

cachepot

PyPI - Python Version PyPI PyPI - Downloads Lint and Test Python codecov License

Yet another Python cache library. This has Python 3 typing hints.

Installation

$ pip install cachepot

Usage

>>> from cachepot.store import CacheStore
>>> from cachepot.backend.filesystem import FileSystemCacheBackend
>>> from cachepot.serializer.pickle import PickleSerializer
>>> store = CacheStore(
...     namespace='testing',
...     key_serializer=PickleSerializer(),
...     value_serializer=PickleSerializer(),
...     backend=FileSystemCacheBackend('/tmp'),
...     default_expire_seconds=3600,
... )
>>> store.put({'some': 'key'}, {'some': 'value'})
>>> store.get({'some': 'key'})
{'some': 'value'}
>>> store.put({'some': 'short expiring key'}, {'some': 'value'}, expire_seconds=10)

Proxy method

result = store.proxy(some_func)(some_args)

is the equivalent of

result = store.get(some_arg)
if result is None:
    result = some_func(some_args)
    store.set(result)

In short, this works as proxy. This helps to make codes straight forward. proxy method can be passed two arguments cache_key and expire_seconds.

Core idea

Serializers convert python objects into bytes. Backends save/load bytes. So serializers and backends are independent. CacheStore is the facade of them.

  • Python3 typing supports
  • namespaces
  • Proxy method

Features

Serializers

And more serializers you can define.

Backends

Of course you can define own backend.

Development

You can install requirements with poetry.

$ poetry install

Test

$ poetry poe check  # lint and type check
$ poetry poe test  # run tests

LICENSE

The 3-Clause BSD License. See also LICENSE file.

About

Yet another Python cache library. This has Python 3 typing hints.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages