Skip to main content

Extremely simple to use callable memoization decorator library.

Project description

belljar 🫙

Conditional memoization for complex runtime state.

Standard decorators check the cache before execution. belljar lets you check the cache during execution.

By calling include(), you update the hash with runtime state (like file handles or database cursors). If belljar detects that this specific state has been processed before, execution stops immediately and the cached result is returned.

Usage

import belljar

@belljar.store
def parse_log(file_handle):
    # 1. State is initially just the function args.
    
    # 2. Add runtime state to the hash (e.g., file cursor position).
    belljar.include(file_handle)

    # CHECKPOINT: 
    # If this exact sequence (args + file state) exists in the cache,
    # execution STOPS here and returns the stored value.
    belljar.check()
    
    print("Heavy processing...")
    return file_handle.read()

Features

  • Mid-Execution Cache Hits: Skip the heavy lifting if the intermediate state is recognized.
  • Complex Serialization: Uses dill instead of pickle, supporting lambdas, local classes, and closures.
  • Zero Config: caches to .jar/ by default, or pass a path: @store(Path("/tmp/cache")).

Installation

uv add belljar
# or
pip install belljar

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

belljar-1.2.1.tar.gz (2.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

belljar-1.2.1-py3-none-any.whl (3.3 kB view details)

Uploaded Python 3

File details

Details for the file belljar-1.2.1.tar.gz.

File metadata

  • Download URL: belljar-1.2.1.tar.gz
  • Upload date:
  • Size: 2.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for belljar-1.2.1.tar.gz
Algorithm Hash digest
SHA256 077b19a9c92e12d9b1a886d84c6648b48af81854b6f3aa3392aac8acb0424cc5
MD5 5793142d5cb6044f6f541477ef915c61
BLAKE2b-256 ed3e1e093babc4fd01cba259278a2732269ce719086eca4a08ff985c0f49eb03

See more details on using hashes here.

File details

Details for the file belljar-1.2.1-py3-none-any.whl.

File metadata

  • Download URL: belljar-1.2.1-py3-none-any.whl
  • Upload date:
  • Size: 3.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for belljar-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 53db09ffabf85779e39be856194b159e846c831408edcdc000c4009a7b144de4
MD5 cd8a3baae5b5ae41b97b097f4455f529
BLAKE2b-256 4df077a293045ca30dc104e448f17fc3c810575c07ade8ec0e31f2826e28eeeb

See more details on using hashes here.

Supported by

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