Skip to main content

Extremely simple to use callable memoization decorator library.

Reason this release was yanked:

Branch confusion

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: belljar-1.4.0.tar.gz
  • Upload date:
  • Size: 2.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"CachyOS 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.4.0.tar.gz
Algorithm Hash digest
SHA256 2c3608f8d9d55223b628b2a7a1d7af7dfe82508fd3614efa47ac9cd918f29071
MD5 f98a7f78fb51fd2739672badb8ea22ad
BLAKE2b-256 86838840649e6291cdda73b1029ea5b2d6578dd17a11966a0a3c893244fadfc4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: belljar-1.4.0-py3-none-any.whl
  • Upload date:
  • Size: 3.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"CachyOS 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.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7c8b0ac3c5142d36277909f31ac72984af32e40aad7d88d835692521a5902705
MD5 4393af060ee16adf32b79272bf597463
BLAKE2b-256 ec46e007f31e0ebca14edc2059424acaeddf217ade4e2180d942530d9d4cbe04

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