betty.cache package - Betty documentation

Hide navigation sidebar
Hide table of contents sidebar
Skip to content
Back to top
View this page
Toggle table of contents sidebar

# betty.cache package

## Submodules

- betty.cache.file module
  - `BinaryFileCache`
    - `BinaryFileCache.cache_item_file_path()`
    - `BinaryFileCache.path`
  - `PickledFileCache`
- betty.cache.memory module
  - `MemoryCache`
    - `MemoryCache.__init__()`

## Module contents

Provide the Cache API.

class betty.cache.Cache

  Bases: `Generic`[`CacheItemValueContraT`]

  Provide a cache.

  Implementations MUST be thread-safe.

  async clear() → None

    Clear all items from the cache.

    Return type:

      `None`

  async delete(cache_item_id: str) → None

    Delete the cache item with the given ID.

    Parameters:

      cache_item_id (`str`)

    Return type:

      `None`

  get(cache_item_id: str) → AsyncContextManager[betty.cache.CacheItem[betty.cache.CacheItemValueContraT] | None]

    Get the cache item with the given ID.

    Parameters:

      cache_item_id (`str`)

    Return type:

      `typing.AsyncContextManager`[`typing.Optional`[`betty.cache.CacheItem`[`typing.TypeVar`(`CacheItemValueContraT`, contravariant=True)]]]

  getset(cache_item_id: str, *, wait: bool = True) → AsyncContextManager[tuple[betty.cache.CacheItem[betty.cache.CacheItemValueContraT] | None, collections.abc.Callable[[betty.cache.CacheItemValueContraT], collections.abc.Awaitable[None]] | 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.

    Parameters:

      - cache_item_id (`str`)

      - wait (`bool`)

    Return type:

      `typing.AsyncContextManager`[`tuple`[`typing.Optional`[`betty.cache.CacheItem`[`typing.TypeVar`(`CacheItemValueContraT`, contravariant=True)]], `collections.abc.Callable`[[`typing.TypeVar`(`CacheItemValueContraT`, contravariant=True)], `collections.abc.Awaitable`[`None`]] | `None`]]

  async set(cache_item_id: str, value: betty.cache.CacheItemValueContraT, *, modified: int | float | None = None) → None

    Add or update a cache item.

    Parameters:

      - cache_item_id (`str`)

      - value (`typing.TypeVar`(`CacheItemValueContraT`, contravariant=True))

      - modified (`int` | `float` | `None`)

    Return type:

      `None`

  with_scope(scope: str) → Self

    Return a new nested cache with the given scope.

    Parameters:

      scope (`str`)

    Return type:

      `typing.Self`

class betty.cache.CacheItem

  Bases: `Generic`[`CacheItemValueCoT`]

  A cache item.

  property modified: int | float

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

  async value() → betty.cache.CacheItemValueCoT

    Get this cache item’s value.

    Return type:

      `typing.TypeVar`(`CacheItemValueCoT`, covariant=True)

class betty.cache.FileCache

  Bases: `object`

  static __new__(*args, **kwargs)
  async clear() → None
    Return type:

      `None`

  property path: Path