[](https://badge.fury.io/py/cachalot)
# Cachalot
Cachalot is a minimal persistent memoization cache. It provides a decorator, that stores function result for future use. Perfect for heavy computations and I/O operation (such as web requests). On backend, it uses TinyDB for storage.
## Features
- Simple usage via decorator
- Persistent caching
- Key expiration
- Maximum cache size, to prevent bloat
## Installation
Cachalot requires Python 3.5 or newer to run.
**Python package**
You can easily install Cachalot using pip:
`pip3 install cachalot`
**Manual**
Alternatively, to get the latest development version, you can clone this repository and then manually install it:
```
git clone git@gitlab.com:radek-sprta/cachalot.git
cd cachalot
python3 setup.py install
```
## Usage
```python
from cachalot import Cache
@Cache()
def expensive_function():
return expensive_calculation()
```
### Advanced usage
```python
from cachalot import Cache
@Cache(path='cache.json', timeout=3600, size=5000)
def expensive_function():
return expensive_calculation()
```
`path`: Path to the database file. Defaults to .cache.json.
`timeout`: How long should the data be cached in seconds. Defaults to 86400 (1 day).
`size`: Maximum number of keys cached. Defaults to 10000.
For more information, see [documentation][documentation].
## TODO
- Test suite
- Optionally retry if blank data is returned
## Contributing
For information on how to contribute to the project, please check the [Contributor's Guide][contributing]
## Contact
[mail@radeksprta.eu](mailto:mail@radeksprta.eu)
[incoming+radek-sprta/cachalot@gitlab.com](incoming+radek-sprta/cachalot@gitlab.com)
## License
MIT License
## Credits
This package was created with [Cookiecutter][cookiecutter] and the [python-cookiecutter][python-cookiecutter] project template. Inspired by [Cashier][cachier]
[cachier]: https://github.com/atmb4u/cashier
[contributing]: https://gitlab.com/radek-sprta/cachalot/blob/master/CONTRIBUTING.md
[cookiecutter]: https://github.com/audreyr/cookiecutter
[documentation]: https://radek-sprta.gitlab.io/cachalot
[python-cookiecutter]: https://gitlab.com/radek-sprta/python-cookiecutter
Metadata
Release files for Cachalot 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| cachalot-0.1.0.tar.gz | 7.0 kB | Without provenance | Details |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cachalot-0.1.0-py3.6.egg | Legacy Egg format | - | - | Details |
| cachalot-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 19.0 kB
Release files / cachalot-0.1.0.tar.gz
| Download URL | cachalot-0.1.0.tar.gz |
|---|---|
| Size | 7.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
48e6bd89839a120bfa2b08ad3fa1239ff9fa4c5c6e5d0197b88d1af6ee1bf308
|
|
BLAKE2b-256 checksum How to use checksums |
3fefaa6b8b6ccc18a7274751c311c03b7d6cec72e978f2821a0b66a7dbb0585f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Release files / cachalot-0.1.0-py3.6.egg
| Download URL | cachalot-0.1.0-py3.6.egg |
|---|---|
| Size | 6.2 kB |
| Tags | Egg |
|
SHA-256 checksum How to use checksums |
e3758622658fa13c2ba610eff86a0df572bc3b5f9cc672abc9e037b9d7b45984
|
|
BLAKE2b-256 checksum How to use checksums |
b7d4c1dcb0f6d2977af4d283a4ac1d4653d2a866b3e865ec4753e06b48dd4780
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Release files / cachalot-0.1.0-py3-none-any.whl
| Download URL | cachalot-0.1.0-py3-none-any.whl |
|---|---|
| Size | 5.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
95af354e5c925c111f259c86778c1e198899a904cdfb2ee07ab9c3faa9c641ea
|
|
BLAKE2b-256 checksum How to use checksums |
5deed162bc2aa4e4580ebb694bf249820293164270cef660db5a9bdf0dbb94cc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Security for Cachalot 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.