Metadata-Version: 2.5
Name: xdol
Version: 0.1.18
Summary: Extended Data Object Layers - dol-based tools
Project-URL: Homepage, https://github.com/i2mint/xdol
License: Apache-2.0
License-File: LICENSE
Requires-Python: >=3.10
Requires-Dist: config2py
Requires-Dist: dol>=0.3.49
Requires-Dist: tomli; python_version < '3.11'
Requires-Dist: typing-extensions
Provides-Extra: dev
Requires-Dist: pytest-cov>=4.0; extra == 'dev'
Requires-Dist: pytest>=7.0; extra == 'dev'
Requires-Dist: ruff>=0.1.0; extra == 'dev'
Provides-Extra: docs
Requires-Dist: sphinx-rtd-theme>=1.0; extra == 'docs'
Requires-Dist: sphinx>=6.0; extra == 'docs'
Provides-Extra: s3
Requires-Dist: s3dol>=1.0; extra == 's3'
Description-Content-Type: text/markdown

# xdol

Extended Data Object Layers - dol-based tools

To install:	```pip install xdol```

[Documentation](https://i2mint.github.io/xdol/)

## Persistent memoizer (record/replay)

Wrap a costly function (a paid API, a slow render) so the first run records its result to disk and every later run replays it:

```python
from xdol import memoize_calls


@memoize_calls(
    store="tests/cassettes", mode="record"
)  # default mode is replay-only: a miss raises
def slow_square(x):
    return {"result": x * x}
```

Stable keys (`xdol.keys`), text / JSON / binary / paired `.json`+`.bin` codecs, any `MutableMapping` as the store (a folder, S3), spend-safe replay by default. See [misc/docs/persistent_memoizer.md](docs/persistent_memoizer.md).
