betty.cache package

Submodules

Module contents

Provide the Cache API.

class betty.cache.Cache[source]

Bases: Generic[_CacheItemValueContraT], ABC

Provide a cache.

Implementations MUST be thread-safe.

To test your own subclasses, use betty.test_utils.cache.CacheTestBase.

abstractmethod async clear() None[source]

Clear all items from the cache.

abstractmethod async delete(cache_item_id: str) None[source]

Delete the cache item with the given ID.

abstractmethod get(cache_item_id: str) AsyncContextManager[CacheItem[_CacheItemValueContraT] | None, bool | None][source]

Get the cache item with the given ID.

abstractmethod getset(cache_item_id: str) AsyncContextManager[tuple[CacheItem[_CacheItemValueContraT] | None, Callable[[_CacheItemValueContraT], Awaitable[None]]], bool | None][source]
abstractmethod getset(cache_item_id: str, *, wait: Literal[False] = False) AsyncContextManager[tuple[CacheItem[_CacheItemValueContraT] | None, Callable[[_CacheItemValueContraT], Awaitable[None]] | None], bool | None]

Get the cache item with the given ID, and provide a setter to add or update it within the same atomic operation.

If wait is False and no lock can be acquired, return None, None. Otherwise return: 0. A cache item if one could be found, or else None. 1. An asynchronous setter that takes the cache item’s value as its only argument.

abstractmethod async set(cache_item_id: str, value: _CacheItemValueContraT, *, modified: int | float | None = None) None[source]

Add or update a cache item.

abstractmethod with_scope(scope: str) Self[source]

Return a new nested cache with the given scope.

class betty.cache.CacheItem[source]

Bases: Generic[_CacheItemValueCoT], ABC

A cache item.

abstract property modified: int | float

Get the time this cache item was last modified, in seconds.

abstractmethod async value() _CacheItemValueCoT[source]

Get this cache item’s value.