Metadata-Version: 2.1
Name: cachepot
Version: 0.1.1
Summary: Yet another Python cache library
Home-page: https://github.com/kitsuyui/cachepot
Author: Yui Kitsu
Author-email: kitsuyui+github@kitsuyui.com
License: BSD-3-Clause
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: License :: OSI Approved :: BSD License
Classifier: Intended Audience :: Developers
Description-Content-Type: text/markdown
Requires-Dist: typing-extensions

# cachepot

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

## Usage

```python
>>> 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 interface

```python
result = store.proxy(some_func)(some_args)
```

is same as

```python
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

- Typing supports
- Generic serializers ... [pickle](https://docs.python.org/3/library/pickle.html), [JSON](https://tools.ietf.org/html/rfc8259), and more serializers you can define.
- Generic backends ... Currently supports only filesystem backend. But it is not so difficult to add Redis or the other KVS backends. And of course you can define own backend.
- Proxy interface

## Development

You can install requirements with pipenv

```shell
$ pipenv install
```

### Test

```shell
$ flake8
$ mypy .
$ python3 -m unittest discover
```

# LICENSE

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


