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 includes(), 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

from belljar import jar, includes

@jar
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).
    includes(file_handle)

    # CHECKPOINT: 
    # If this exact sequence (args + file state) exists in the cache,
    # execution STOPS here and returns the stored value.
    
    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: @jar(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-0.1.0.tar.gz (2.4 kB view details)

Uploaded Source

Built Distribution

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

belljar-0.1.0-py3-none-any.whl (3.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: belljar-0.1.0.tar.gz
  • Upload date:
  • Size: 2.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","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-0.1.0.tar.gz
Algorithm Hash digest
SHA256 6a5c189288df268659f5395394cf516774de0e5ad7c47e748931bf8548784973
MD5 b7ca41e089f5b801b74bb3b8226d2ece
BLAKE2b-256 7c781423d80e43069d4b4ff654d228f1068d7d0fcc866b07938452ab19e45c35

See more details on using hashes here.

File details

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

File metadata

  • Download URL: belljar-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 3.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","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-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ffd43e7562bcd5badcd27cb18bd426bfe707a666c4d336ef6b86c9995ec5664e
MD5 d29daf002871849930a6a4834dc0a929
BLAKE2b-256 6e04a549d6fbed58b91d32bf62f6d1a499241c91fa904e5fe6ad111b5ea63d78

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