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.1.0.tar.gz (2.8 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.1.0-py3-none-any.whl (3.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: belljar-1.1.0.tar.gz
  • Upload date:
  • Size: 2.8 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-1.1.0.tar.gz
Algorithm Hash digest
SHA256 aac0b404ff79c92513178f0b31cbe9d68b8217696c8c3ca5d3b489b162f23058
MD5 84f1839163c4e180506d750345485418
BLAKE2b-256 7eb9a4d21909626cc620f5d9a72dbab32d7d7c8e66976271d3236c52b801e506

See more details on using hashes here.

File details

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

File metadata

  • Download URL: belljar-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 3.4 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-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 df7e261a5b854eb2a7032ff2d516a79622e77678999c7a1d332bcfd360aa22f8
MD5 d4c76b24b1b236df1f9bf56af64ac12b
BLAKE2b-256 74d00cbbd144541f3a3123c277a51fb46a7ac5f6e8e2ee98fa86198049b80f53

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