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.1.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.1-py3-none-any.whl (3.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: belljar-0.1.1.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.1.tar.gz
Algorithm Hash digest
SHA256 6dbd47f9d00a8487d5cc097c21b4c709ef6d2abd15139b229633e7597f2e4f3e
MD5 762faf0601f824b4f38ecc35fbfa7fd5
BLAKE2b-256 359a88b77a040be038964f11cd452d82aab211ec01cc075f618df3e7cb6ae3c9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: belljar-0.1.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7df8c17e734db64b2a60a8971615d1ab185c15ee19870dfcc82dd2a417263d0f
MD5 dda78de93887d19cf23ad1f17d95cb74
BLAKE2b-256 9cc80df83c3af8bc1d50b1f26edba6bc62cf26628412751df30daf09678fe269

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