Skip to main content

Caching for class based generators

Project description

Class based cache

tests codecov publish Python Version from PEP 621 TOML PyPI - Version Code Style: Ruff

Installation

Recommended installation with pip:

pip install class-cache

Usage

  • Basic usage:

    from class_cache import Cache
    
    # Create cache
    cache = Cache()
    # Set item in cache
    # NOTE: Keys and values have to be pickle-serialisable
    cache["foo"] = "bar"
    # Save cache to backend (disk by default)
    cache.write()
    
    # During another program run just create same cache again and you can retrieve data
    del cache
    cache2 = Cache()
    assert cache2["foo"] == "bar"
    
  • Use multiple caches:

    cache1 = Cache(1)
    cache2 = Cache(2)
    
    cache1["foo"] = "bar"
    cache2["foo"] = "zar"
    
    assert cache1["foo"] != cache2["foo"]
    
  • Use cache with default factory:

    from class_cache import CacheWithDefault
    
    class MyCache(CacheWithDefault[str, str]):
        NON_HASH_ATTRIBUTES = frozenset({*CacheWithDefault.NON_HASH_ATTRIBUTES, "_misc"})
        def __init__(self, name: str):
            # Attributes which affect default value generation should come before super().__init__()
            self._name = name
            super().__init__()
            # Other attributes should not affect how default value is generated, add them to NON_HASH_ATTRIBUTES
            self._misc = "foo"
    
        # Define logic for defaults in _get_data
        def _get_data(self, key: str) -> str:
            return f"{self._name}_{key}"
    
    cache = MyCache("first")
    assert cache["foo"] == "first_foo"
    

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

class_cache-0.2.0.tar.gz (6.3 kB view hashes)

Uploaded Source

Built Distribution

class_cache-0.2.0-py3-none-any.whl (6.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page