Skip to main content

A library for lazy evaluation with context caching

Project description

lazily

Lazy reactive primitives for Python — Slots, Cells, and Signals with automatic dependency tracking and cache invalidation, plus the language-agnostic lazily-spec wire protocol for mirroring graph state across processes and languages.

PyPI

Overview

lazily provides a small reactive family for context-aware computation:

  • Slot — a lazily-computed cached value that automatically tracks its dependencies (slot / slot_def).
  • Cell — a mutable value that invalidates dependent Slots when it changes (cell / cell_def, Cell, CellSlot).
  • Signal — an eager derived value that recomputes the instant a dependency invalidates, with no intermediate unset value (signal / signal_def).

Values are lazy by default: dependents are marked dirty on invalidation but only recompute when accessed. When you need eager push-style semantics — recompute immediately, observe v1 → v2 with no unset window — reach for Signal, which layers a puller over a memoized Slot. The Slot → Cell → Signal progression lets you choose lazy or eager per derived value within one graph. An equal recompute is suppressed by a PartialEq/memo guard, so unchanged values never cascade downstream work.

There is no dedicated Context class — a plain dict is the context. Slots use themselves as dictionary keys to cache values, so any dict works as the reactive "world."

Feature coverage

The full lazily capability set across every binding. Legend: ✅ shipped · ~ partial · absent or not applicable. The canonical matrix with per-cell notes and platform carve-outs lives in lazily-spec § Cross-Language Coverage.

Feature Rust Python Kotlin JS Dart Zig Go C++
Reactive graph — core Cell / Slot / Effect (+ derived Signal = Slot.eager) / memo / batch
Keyed-map materialization (SlotMap) — mint-on-access derived slots: transparency + deferral (#lzmatmode)
Thread-safe keyed map (ThreadSafeSlotMap) — Send + Sync + materialization confluence (#lzmatmode)
Async keyed map (AsyncSlotMap) — eventual transparency (#lzmatmode)
Keyed-map sync — membership propagation + materialize-on-ingest + derived-aggregate transparency (#lzfamilysync)
Thread-safe context (lock-backed)
Async reactive context
Flat state machine
Harel state charts
Keyed reactive maps (ReactiveMap: CellMap / SlotMap) + CellTree + reconcile
Memoized semantic tree (SemTree)
Stable-id alignment (manufactured identity)
Reactive queue (QueueCell SPSC/MPSC + QueueStorage adapter)
Broadcast topic (TopicCell) — independent cursors + durable replay + safe GC (#lztopiccell)
Competing-consumer work queue (WorkQueueCell) — exclusive leases + ack/nack + redelivery + DLQ (#lzworkqueue)
Merge algebra + MergeCell — associative MergePolicy (KeepLatest/Sum/Max/SetUnion/RawFifo), Cell ≡ MergeCell<KeepLatest>, Reactive/Source split (#relaycell)
RelayCell — conflating relay + BackpressurePolicy + SpillStore + Transport + Inbox/Outbox + Rate/Window/Expiry/Priority/keyed policies (#relaycell)
Free-text character CRDT (TextCrdt)
TextCrdt delta sync (version_vector / delta_since / apply_delta)
CrdtTree lossless document contract (#lzcrdttree)
Move-aware sequence CRDT (SeqCrdt)
Lossless tree CRDT core (LosslessTreeCrdt, M1)
Lossless tree — dotted-frontier anti-entropy
Lossless tree — concurrent merge convergence
Registers (LWW / MV) + PnCounter + CellCrdt
IPC wire — Snapshot + Delta + CrdtSync
Shared-memory blob path (ShmBlobArena)
Cross-process zero-copy transport (BlobBackend / shm / arrow)
Distributed CRDT plane (CrdtPlaneRuntime / anti-entropy)
Reliable sync — resync coordinator + at-least-once durable outbox + OR-set/LWW liveness (#lzsync)
Storage-independent durable outbox (OutboxStore + shared outbox protocol; SQLite/Room/IndexedDB/file adapters)
Reliable-sync transport seam + full-duplex SyncDriver loop (IpcSink/IpcSource, #sync-driver)
Distributed plane — WebRTC transport + signaling
State projection / mirror
Causal receipts (CausalReceipts outcome projection)
Message-passing + RPC command plane (command-plane-v1)
C-ABI FFI boundary
Permission boundary (PeerPermissions / RemoteOp)
Capability negotiation (SessionHandshake)
Instrumentation / benchmarks
Temporal sources — TimerCell / IntervalCell / CronCell / DeadlineCell over a logical clock (#lztime)
Rate-shaping operators — DebounceCell / ThrottleCell / SampleCell / ProbabilisticSampleCell (#lzrateshape)
Membership + failure detection — MembershipCell (SWIM + Phi-accrual) / PeerSet / PeerChangeEvent (#lzmemb)
Distributed coordination — LeaseCell / LeaderCell / LockCell / SemaphoreCell / BarrierCell+QuorumCell (#lzcoord)
Presence + ephemeral plane — PresenceCell / AwarenessCell / EphemeralCell + Ephemeral/Durable markers (#lzpresence)
Stream windowing — TumblingWindow / SlidingWindow / SessionWindow over the merge algebra (#lzwindow)
Fault tolerance — CircuitBreakerCell / RetryPolicyCell / BulkheadCell / TimeoutCell (#lzresilience)
Embedded-service plane — HealthCell / ReadinessCell / DiscoveryCell / ServiceRegistry (#lzservice)

Installation

pip install lazily

Example usage

from lazily import CellSlot, cell, slot

# Cells hold a value that can be updated.
name = CellSlot[dict, dict, str]()


# Slots are functions that depend on cells and other slots.
@slot
def greeting(ctx: dict) -> str:
    print("Calculating greeting...")
    return f"Hello, {name(ctx).value}!"


# A CellSlot can also have a default value.
@cell
def response(ctx: dict) -> str:
    return "How are you?"


@slot
def greeting_and_response(ctx: dict) -> str:
    print("Calculating greeting_and_response...")
    return f"{greeting(ctx)} {response(ctx).value}"


ctx = {}

name(ctx).value = "World"

# First access: runs the function
print(greeting(ctx))
# Calculating greeting...
# 'Hello, World!'

# Second access: uses cache (no print)
print(greeting(ctx))
# 'Hello, World!'

# Dependencies also access cached values
print(greeting_and_response(ctx))
# Calculating greeting_and_response...
# 'Hello, World! How are you?'

# Dependencies also cached
print(greeting_and_response(ctx))
# 'Hello, World! How are you?'

# Update cell: invalidates cache
name(ctx).value = "Lazily"

# Access again: re-runs the function
print(greeting_and_response(ctx))
# Calculating greeting_and_response...
# Calculating greeting...
# 'Hello, Lazily! How are you?'

# Another access: uses cache
print(greeting_and_response(ctx))
# 'Hello, Lazily! How are you?'

Core Concepts

Context

A plain dict is the context. It owns all cached Slot values; Slots store their cache under themselves as keys. The current implementation is single-threaded — create one dict per reactive graph.

Slot

A Slot wraps a compute function (ctx) -> T; the result is cached after first access. Dependencies are discovered automatically via a global slot_stack — any Slot or Cell read during computation becomes a dependency and re-subscribes on every recompute, so conditional branches update the dependency graph with no manual cleanup. When a dependency invalidates, the Slot only marks its cache dirty; it does not recompute until called again.

Type Purpose
BaseSlot[C_in, C_ctx, T] Base slot without subscriber support
Slot[C_in, C_ctx, T] Slot with dependency tracking and invalidation
slot Decorator: Slot with an identity context resolver
slot_def(resolve_ctx) Decorator factory for a custom context resolver

Cell

A Cell holds a mutable value. Reading cell.value inside a Slot auto-subscribes that Slot; assigning cell.value = x (or cell.set(x)) compares old and new via != and, only if changed, cascades invalidation to dependents.

Type Purpose
Cell[T] Mutable value with subscription support
CellSlot[C_in, C_ctx, T] Slot that returns a Cell
cell Decorator: CellSlot with an identity resolver
cell_def(resolve_ctx) Decorator factory for a custom context resolver

Signal

A Signal is the eager counterpart to a lazy Slot — one step further along the Slot → Cell → Signal progression. Where a Slot marks itself dirty on invalidation and recomputes on the next read, a Signal recomputes the instant a dependency is invalidated, before the mutating call returns. The value is always materialized, so observers never see an intermediate unset value.

from lazily import CellSlot, signal

n = CellSlot[dict, dict, int]()


@signal
def doubled(ctx: dict) -> int:
    return n(ctx).value * 2


ctx: dict = {}
n(ctx).value = 1

s = doubled(ctx)   # eager: materialized now
print(s.value)     # 2

n(ctx).value = 5   # doubled recomputes immediately
print(s.value)     # 10 — already current, no lazy read needed

A Signal is composed from existing primitives, not a parallel engine: a memoized Slot supplies glitch-free, memo-guarded recomputation, and a small puller re-materializes it after every invalidation to supply the eagerness. Consequently a Signal inherits the memo guard (an equal recompute suppresses the downstream cascade). signal.dispose() removes the eager puller — the value stays readable but reverts to lazy (recompute-on-read) behavior.

Type Purpose
Signal[T] Eager derived value bound to a single context
signal Decorator: context-cached eager-Signal factory (one Signal per context)
signal_def(resolve_ctx) Decorator factory with a custom context resolver

StateMachine

StateMachine[S, E] is a finite state machine backed by a reactive Cell, so its state participates in dependency tracking like any other reactive value. Construct it with StateMachine(ctx, initial, transition) where transition is a pure (state, event) -> next_state | None (returning None rejects the event). send(event) returns whether the transition was accepted; a self-transition to an equal state is accepted but suppressed by the Cell's PartialEq guard.

Reactive collections, async, and thread-safe contexts

lazily-py also implements the lazily-spec compute-layer MUSTs, each ported from its Lean formal model in lazily-formal:

  • ReactiveMap / CellMap / SlotMap / CellTree — keyed reactive collections (#reactivemap) with independent value/membership/order signals and atomic move. One generic ReactiveMap over a handle kind; CellMap (input cells, adds set + eager entry) and SlotMap (derived slots, lazy get_or_insert_with + eager materialize_all) are its specializations.
  • QueueCell — a reactive FIFO queue (SPSC primitive with an MPSC-via-batch usage rule) with a pluggable QueueStorage backend. Reader-kind invalidation (head/len/is_empty/is_full/closed), bounded reactive backpressure via is_full, and the closure lifecycle (drain / Closed-distinct-from-Empty / idempotent).
  • reconcile_ops — move-minimized keyed reconciliation (LIS kernel).
  • AsyncSlot / AsyncEffect — the async slot lifecycle with stale-completion discard, and cleanup-before-body effect scheduling.
  • ThreadSafeContext — a lock-serialized batch boundary that coalesces writes into one invalidation pass.
  • lazily.ffi — the C-ABI FFI boundary (LazilyFfiStatus, LazilyFfiMessageKind incl. CrdtSync = 3, LazilyFfiBytes).

The test suite gates on lazily-formal's lake build (every theorem checks) and mirrors the named Lean theorems as property tests. See SPEC.md for the full compliance surface.

Reactive queue — lazily.queue

QueueCell is a FIFO collection composed of reactive cells — not a new cell kind — that adds queue semantics (push to tail, pop from head) to the reactive graph. It is an SPSC primitive; MPSC is a usage rule on the same primitive — multiple producers push inside one batch, which serializes the pushes into a deterministic order. The reactive shell wraps a pluggable QueueStorage backend (default VecDequeStorage); the shell owns the reader-kind version cells and invalidates by reader kind — a push to a non-empty queue does NOT invalidate the head reader, a pop does.

from lazily import QueueCell, QueuePopError, batch

ctx = {}
q: QueueCell[str] = QueueCell(ctx)

q.try_push("a")
q.try_push("b")
assert q.head() == "a"
assert q.len() == 2
assert q.try_pop() == "a"

# Bounded queue → reactive backpressure via is_full.
bq = QueueCell[int].with_capacity(ctx, 2)
bq.try_push(1)
bq.try_push(2)
assert bq.is_full()
assert bq.try_push(3).label == "Full"   # reject at capacity
assert bq.try_pop() == 1
assert not bq.is_full()                  # pop freed a slot → is_full reader invalidated

# MPSC: multiple producers push inside one batch → one invalidation pass.
batch(lambda: (q.try_push("p1"), q.try_push("p2")))

# Closure: pop on closed+empty returns Closed (distinct from Empty).
q.close()
assert q.is_closed()
assert q.try_push("x").label == "Closed"

Competing-consumer work queue

WorkQueueCell provides exclusive FIFO claims with visibility deadlines, worker-scoped acknowledgements, tail retries, and bounded dead-letter handling. Item ids survive retries while each claim gets a fresh delivery id.

from lazily import WorkQueueCell

work = WorkQueueCell[str](ctx, visibility_timeout=10, max_deliveries=3)
work.push("job")
delivery = work.claim("worker-a", 100)
assert delivery is not None
assert work.ack("worker-a", delivery.delivery_id)

The reader-kind independence law (a push to a non-empty queue does not change head, so the head reader is not invalidated) comes for free from the Cell != (PartialEq) guard: after each op the shell re-derives each reader-kind cell from storage and writes it back, and a cell whose value did not change is not invalidated.

IPC — the lazily-spec wire protocol

lazily.ipc implements the language-agnostic lazily-spec wire protocol, so a Python graph's state can be mirrored to remote observers across processes and languages. The JSON encoding is byte-compatible with the Rust (lazily-rs), Zig (lazily-zig), and TypeScript (@lazily/signaling) bindings, and is validated against the canonical lazily-spec/conformance fixtures (vendored under tests/conformance/).

Two message kinds flow over any transport (WebSocket text, WebRTC data, FFI buffer):

  • Snapshot — the full graph state at an epoch (nodes, edges, roots).
  • Delta — an ordered batch of the 7 DeltaOp variants (CellSet, SlotValue, Invalidate, NodeAdd, NodeRemove, EdgeAdd, EdgeRemove) applied with epoch sequencing and fail-closed resync.
from lazily import (
    Snapshot, NodeSnapshot, EdgeSnapshot, ShmBlobRef,
    Delta, DeltaOp, IpcMessage,
)

# Build and serialize a snapshot — encode_json() returns transport-agnostic bytes.
snap = Snapshot(
    epoch=7,
    nodes=[
        NodeSnapshot.payload(1, "i32", bytes([1, 2, 3])),
        NodeSnapshot.opaque(2, "opaque-type"),
        NodeSnapshot.shared_blob(3, "text/plain", ShmBlobRef(0, 16, 1, 7, 999)),
    ],
    edges=[EdgeSnapshot(2, 1), EdgeSnapshot(3, 1)],
    roots=[1, 2],
)
wire = IpcMessage.of_snapshot(snap).encode_json()
assert IpcMessage.decode_json(wire).snapshot == snap

# An incremental delta carrying mutations.
delta = Delta.next(40, [
    DeltaOp.cell_set(1, bytes([10])),
    DeltaOp.invalidate(3),
])
IpcMessage.of_delta(delta).encode_json()

A PeerPermissions boundary gates what is shared: it is default-deny, so only nodes a peer is explicitly allowed to read are serialized into a snapshot or delta — non-allowlisted nodes are omitted entirely.

Shared-memory blobs — ShmBlobArena

ShmBlobArena lets a Python process host blob payloads (not just carry ShmBlobRef descriptors). It is a bytearray-backed, append-only arena with a 40-byte header (LZSH magic + FNV-1a-64 checksum) and wraparound, ported from the lazily-rs ShmBlobArena<B> and byte-compatible with the Rust and Zig arenas. The module exports ShmBlobArena, ShmBlobArenaError (with its variant subclasses), and SHM_BLOB_HEADER_LEN.

Lossless tree CRDT — lazily.lossless_tree_crdt

LosslessTreeCrdt (#lzlosstree) is a single rooted concrete-syntax tree whose leaves own every rendered byterender(tree) == source_text for valid, invalid, and unknown source alike. Where TextCrdt is a flat lossless floor, this is the structured tree that can itself be the wire authority. Element nodes own structure only; all text lives in leaf nodes tagged Token / Trivia / Raw / Error, so unknown/invalid spans round-trip exactly as Raw/Error leaves rather than being discarded.

from lazily import LeafKind, LosslessTreeCrdt, SeedElement, SeedLeaf
from lazily.lossless_tree_crdt import ROOT

tree = LosslessTreeCrdt(peer=1)
heading = tree.create_node(ROOT, None, SeedElement("heading"))
tree.create_node(heading, None, SeedLeaf(LeafKind.TOKEN, "# "))
title = tree.create_node(heading, None, SeedLeaf(LeafKind.RAW, "Título"))
assert tree.render() == "# Título"

# Op-based delta sync: fork, diverge, converge through a dotted frontier.
other = tree.fork(peer=2)
other.edit_leaf(title, 0, 0, "X")
tree.apply_update(other.diff(tree.frontier()))
assert tree.render() == other.render()

Leaf text embeds TextCrdt wholesale; child order is a fractional index (key_between); the clock is a Lamport TreeOpId. Anti-entropy is op-based over a dotted, non-contiguous version frontier (TreeVersionFrontier) — a dot set (contiguous prefix + sparse holes), never a per-peer max, so a missing interior op stays representable and re-requestable. Leaf-local wire offsets are UTF-8 bytes (byte_to_char). The wire codec (tree_update_to_wire / tree_update_from_wire) validates against lazily-spec's lossless-tree-delta.json, and all nine conformance/lossless-tree/ fixtures replay.

Command / RPC message plane — lazily.command

command-plane-v1 is an additive sibling to Snapshot / Delta / CrdtSync: four evented frames (CommandSubmit / CommandCancel / CommandEvents / CommandProjection) that carry command traffic, not cell state. lazily owns the envelope; the namespace owns the IpcValue payload, which lazily never decodes.

The single hard rule: terminal authority is the causal receipt. A command is terminal only when a terminal CausalReceipt for its command_id folds in (applied, or rejected — including the cancelled / superseded / timed_out reasons). observed / accepted / started events are progress only; a transport ACK is never terminal.

from lazily import (
    CommandPolicy, CommandRpcClient, CommandSubmit, DedupePolicy,
    applied_receipt,
)
from lazily.ipc import IpcValue

class Transport:
    def __init__(self):
        self.sent = []

    def send(self, message):
        self.sent.append(message)

client = CommandRpcClient(Transport())
cmd_id = client.submit(CommandSubmit(
    command_id="cmd-1", causation_id="cmd-1", source="plugin",
    target="controller", namespace="agent-doc", name="editor_route",
    authority_generation=1, idempotency_key="doc:run", deadline_ms=0,
    policy=CommandPolicy(DedupePolicy.SAME_IDEMPOTENCY_KEY, False, True),
    payload_type="agent-doc.editor_route.v1", payload_hash="sha256:…",
    payload=IpcValue.of(b"{…}"),
    required_features=["command-plane-v1"],
))
# `call` resolves ONLY on a terminal receipt — never an ACK or `accepted`.
client.ingest_receipt(applied_receipt("rcpt-1", cmd_id, "controller", 1))
assert client.poll_call(cmd_id).kind.value == "resolved"

CommandProjection is the pure reducer (generation guards, idempotency, cancel-before-terminal-only, terminal-conflict-fails-closed, reconnect equivalence); CommandRpcClient is the derived RPC facade. The wire codec validates against lazily-spec's message-passing.json, and all eight conformance/message-passing/ fixtures replay.

Benchmarks

Wall-clock benchmarks live in BENCHMARKS.md, covering both the in-library micro-suite (reactive core, keyed reconciliation, CellMap, TextCrdt, CRDT plane) and a large spreadsheet-shaped scale suite that mirrors the lazily-rs / lazily-go scale groups (N input cells + N formula slots, formula[i] = input[i] + input[i-1]). The scale suite is measured up to a full 10,000,000-cell Google Sheets workbook (N = 5,000,000); a one-cell edit plus a 1,000-cell viewport read stays in the ~75 µs range regardless of sheet size, because the lazy pull model recomputes only the ~2 formulas that read the edited input.

make bench          # micro-suite
make bench-scale    # scale suite (default N = 1,000,000)

# or directly, with a custom size:
uv run python -m lazily.benchmarks
LAZILY_SCALE_N=5000000 uv run python -m lazily.scale_bench   # 10M-cell workbook

See BENCHMARKS.md for the full results, hardware, and honest notes on CPython's per-node overhead.

The lazily family

lazily-py is one binding in a cross-language reactive family that shares the lazily-spec wire protocol:

Binding Language Package
lazily-rs Rust lazily (crates.io)
lazily-py Python lazily (PyPI)
lazily-zig Zig GitHub
@lazily/signaling TypeScript / Cloudflare Worker npm
lazily-spec wire protocol + conformance fixtures
lazily-formal Lean 4 formal model (FSM kernel + Harel state chart)

See lazily-spec for the canonical Snapshot/Delta schemas, the IPC Lean proofs of the epoch/memo/batch invariants, and the conformance fixtures every IPC-capable binding validates against. The language-agnostic formal model — the flat FSM kernel and the full Harel state chart — lives in lazily-formal.

Development

This project uses uv. Run the local CI-equivalent suite — type-check (ty), lint (ruff), the runnable README example, and the test suite — with:

uv run poe precommit

SPEC.md is the authoritative specification for the Python primitives and the lazily-spec compliance notes.

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

lazily-0.31.1.tar.gz (266.7 kB view details)

Uploaded Source

Built Distributions

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

lazily-0.31.1-cp314-cp314-win_amd64.whl (291.5 kB view details)

Uploaded CPython 3.14Windows x86-64

lazily-0.31.1-cp314-cp314-musllinux_1_2_x86_64.whl (469.7 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

lazily-0.31.1-cp314-cp314-musllinux_1_2_aarch64.whl (472.5 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

lazily-0.31.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (472.5 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

lazily-0.31.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (466.4 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

lazily-0.31.1-cp314-cp314-macosx_11_0_arm64.whl (327.5 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

lazily-0.31.1-cp314-cp314-macosx_10_15_x86_64.whl (332.7 kB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

lazily-0.31.1-cp313-cp313-win_amd64.whl (291.0 kB view details)

Uploaded CPython 3.13Windows x86-64

lazily-0.31.1-cp313-cp313-musllinux_1_2_x86_64.whl (469.4 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

lazily-0.31.1-cp313-cp313-musllinux_1_2_aarch64.whl (470.8 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

lazily-0.31.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (472.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

lazily-0.31.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (465.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

lazily-0.31.1-cp313-cp313-macosx_11_0_arm64.whl (328.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

lazily-0.31.1-cp313-cp313-macosx_10_13_x86_64.whl (333.9 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

lazily-0.31.1-cp312-cp312-win_amd64.whl (290.0 kB view details)

Uploaded CPython 3.12Windows x86-64

lazily-0.31.1-cp312-cp312-musllinux_1_2_x86_64.whl (473.8 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

lazily-0.31.1-cp312-cp312-musllinux_1_2_aarch64.whl (475.8 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

lazily-0.31.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (476.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

lazily-0.31.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (468.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

lazily-0.31.1-cp312-cp312-macosx_11_0_arm64.whl (328.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

lazily-0.31.1-cp312-cp312-macosx_10_13_x86_64.whl (335.4 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

File details

Details for the file lazily-0.31.1.tar.gz.

File metadata

  • Download URL: lazily-0.31.1.tar.gz
  • Upload date:
  • Size: 266.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","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 lazily-0.31.1.tar.gz
Algorithm Hash digest
SHA256 739cc23453f0f410ab12bcede4578d270951d2342996a49471219f30eda616bb
MD5 9d7ebc0e3b12daf0eba87b60c02c8307
BLAKE2b-256 fcbd48127ae5a3474e6445cfc39d1a29dfb97be8835ec1d0b3c7baf551df7c54

See more details on using hashes here.

File details

Details for the file lazily-0.31.1-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: lazily-0.31.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 291.5 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","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 lazily-0.31.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 89478d58b453635ca663af183e257ead0bf05a1d0e3ba14d819c4ee267a37882
MD5 6f38eb5344a5cd83da72717d9e237402
BLAKE2b-256 c52b10b33ed46ac0e9a41db7833e8828a67397cff6b81f15380444f60ff24129

See more details on using hashes here.

File details

Details for the file lazily-0.31.1-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: lazily-0.31.1-cp314-cp314-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 469.7 kB
  • Tags: CPython 3.14, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","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 lazily-0.31.1-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d610d00198cdf06edb213f8b9bdf749fac1f029bdc9cec5e275ce29927427905
MD5 c32e276debe0bcb297f9432ed2c10985
BLAKE2b-256 238f32dd140adc81378f1852c906ac593400c0413b07abe0a6c6aa03aa66e30a

See more details on using hashes here.

File details

Details for the file lazily-0.31.1-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: lazily-0.31.1-cp314-cp314-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 472.5 kB
  • Tags: CPython 3.14, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","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 lazily-0.31.1-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 bcf9c8d388a50d56f9a57d48f3c07bbfd6f42c5af2a18c09263587899cf79b74
MD5 fadf253035f0cc5693274341c22dc801
BLAKE2b-256 ac3d768cb7861ef3252ef1dec397bde57d8ccd3d8d86bafad15e10d9adaae726

See more details on using hashes here.

File details

Details for the file lazily-0.31.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: lazily-0.31.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 472.5 kB
  • Tags: CPython 3.14, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","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 lazily-0.31.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 de18a2c07814c6bd56c1e7bc58fa6dd192619cf39b5198f1e4a3872432f8856a
MD5 464f0d72ade18438b316896f3a1d7ab6
BLAKE2b-256 a6d8304f8d6996d29366ab3505c70a1b4d21f02a9cd4ed0892cee65117e0c93e

See more details on using hashes here.

File details

Details for the file lazily-0.31.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: lazily-0.31.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 466.4 kB
  • Tags: CPython 3.14, manylinux: glibc 2.17+ ARM64, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","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 lazily-0.31.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0c90ea0be6b25b49eab72ffd28aefccdbb97039fcecce546ad609c47cc039012
MD5 ead936059d49eec8ce7b68cd5f9fc7b0
BLAKE2b-256 431cae9beb77d717fe119ac23c9b6ec48382e155a715ca04cd9d6a22f8b1f9ad

See more details on using hashes here.

File details

Details for the file lazily-0.31.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

  • Download URL: lazily-0.31.1-cp314-cp314-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 327.5 kB
  • Tags: CPython 3.14, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","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 lazily-0.31.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 30626e1a1af486bc281e5dee41cfba773a580b67eada6c1274a052b7d853ad65
MD5 3cc3b4f89c59d1dc8935499f37da75ba
BLAKE2b-256 c2be2298630c2a6ddbb4d59e501dbafd8d7c6b27cbeabc94b4d6ef5f71f72881

See more details on using hashes here.

File details

Details for the file lazily-0.31.1-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

  • Download URL: lazily-0.31.1-cp314-cp314-macosx_10_15_x86_64.whl
  • Upload date:
  • Size: 332.7 kB
  • Tags: CPython 3.14, macOS 10.15+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","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 lazily-0.31.1-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 ab3a06be88c0e9878525e092297318c1fa4a997ee4e66ee9e76a4591a85d6ac7
MD5 82485c9a62ee2675f9c1126a4980886a
BLAKE2b-256 b0bccd33266aeda0d9a7b12b6d6ea4fc89144cd622bb53ca8fa306b04401cf8c

See more details on using hashes here.

File details

Details for the file lazily-0.31.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: lazily-0.31.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 291.0 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","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 lazily-0.31.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 f694608fd8cdb39e3ba1d4d94e6aa3a55a019a4a18bdddff50f17f2bde2adb4b
MD5 ca0705a5a80e7cfd3716595618f9026a
BLAKE2b-256 c95e418b613a7a242b23a20731bcf7eb2bb977c2055db859e53943bee791b0fc

See more details on using hashes here.

File details

Details for the file lazily-0.31.1-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: lazily-0.31.1-cp313-cp313-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 469.4 kB
  • Tags: CPython 3.13, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","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 lazily-0.31.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 cf30adacf54dec44b4dbeaba99462cd06b4b855cf1f58404aeddfe28d2073a2c
MD5 178705ec6948bc5b48c3678d672c774a
BLAKE2b-256 bcdb2c6c543d317efb2ae8081cb44154b0824e5ddc1053e6a65a68515075f766

See more details on using hashes here.

File details

Details for the file lazily-0.31.1-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: lazily-0.31.1-cp313-cp313-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 470.8 kB
  • Tags: CPython 3.13, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","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 lazily-0.31.1-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 5733b9da7b6294818dd57fff8117e71a4e914ea672d3752233a28ffa11c6c261
MD5 24703de9137e61fe6080387fe533bf6a
BLAKE2b-256 c444e815a74240a8f95722d51543ad20a3fa5e722191a4910d41042788da57fe

See more details on using hashes here.

File details

Details for the file lazily-0.31.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: lazily-0.31.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 472.2 kB
  • Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","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 lazily-0.31.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 70e3bdb6e68e686a01e21a195127c3c5e6d225ec6ba4482637666b62b9c01fb0
MD5 7a0c21103df749f9e9c0ea522b8aefcc
BLAKE2b-256 3c0261df89e628557932176725a80b232defe26f4a5359db8acabf2576b1311c

See more details on using hashes here.

File details

Details for the file lazily-0.31.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: lazily-0.31.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 465.3 kB
  • Tags: CPython 3.13, manylinux: glibc 2.17+ ARM64, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","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 lazily-0.31.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6ef4426def9375e1277154d795f9a28d0a3bebf766fd33a943716836b6005cfe
MD5 e602b1e20c8c18a6479419c9521bd941
BLAKE2b-256 7df5fc640212de155f73f3300782278c0fce3f10dc2cb7f59153cc54775cac19

See more details on using hashes here.

File details

Details for the file lazily-0.31.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

  • Download URL: lazily-0.31.1-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 328.2 kB
  • Tags: CPython 3.13, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","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 lazily-0.31.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 471a8c648c12add717f93b20b04ac45db93b83df5714de490faee4e9ed852a4e
MD5 c0bdc9b70a5cb19feb29c3d1618ec08f
BLAKE2b-256 1902e4cbd6e8e88fea4e6986da74396a89fa5993e51b3b8398aa4314493f9f49

See more details on using hashes here.

File details

Details for the file lazily-0.31.1-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

  • Download URL: lazily-0.31.1-cp313-cp313-macosx_10_13_x86_64.whl
  • Upload date:
  • Size: 333.9 kB
  • Tags: CPython 3.13, macOS 10.13+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","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 lazily-0.31.1-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 f64e77cac71b18248139a976564bcc47af8dabcc5dba1b1ee65ea7702d0b3d52
MD5 3f62366d69fef5c96a4b8ff5be287b4d
BLAKE2b-256 85658dae95e0be7be93af3a6191570ec7d2e353a7f49dd5a6f80938810586b78

See more details on using hashes here.

File details

Details for the file lazily-0.31.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: lazily-0.31.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 290.0 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","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 lazily-0.31.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 70f456b72a7c138e4899ffd6aa9b222be070f1467c847acfd5f12cb8d28f1019
MD5 7b2beec1c3b776a332d94030a42bd6a6
BLAKE2b-256 29940514a2695ae29f7dd6b066eec43aefa49797403c85605a312b155052d078

See more details on using hashes here.

File details

Details for the file lazily-0.31.1-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: lazily-0.31.1-cp312-cp312-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 473.8 kB
  • Tags: CPython 3.12, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","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 lazily-0.31.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 54bb8d6c3621ce44bc694e9979203d9d3807a72cd76299160821f6fa9200e828
MD5 6102238d915788a2300b06ab4f312a7f
BLAKE2b-256 dfeb3b3f8022593d358f4450d3828555a9eab97050d13ce5a5c4721671259c90

See more details on using hashes here.

File details

Details for the file lazily-0.31.1-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: lazily-0.31.1-cp312-cp312-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 475.8 kB
  • Tags: CPython 3.12, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","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 lazily-0.31.1-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 1f2172e252b9fd870274027f4424d5b6fa1cecb36f0c77c37c20b5fcf4bccdce
MD5 644fc6ab377cb601245f62a8ee9f0012
BLAKE2b-256 57d3862dfa694913a2c5ecb2f248fd97f835e9fa435ce6c5043c15f82c93d6bb

See more details on using hashes here.

File details

Details for the file lazily-0.31.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: lazily-0.31.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 476.5 kB
  • Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","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 lazily-0.31.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fa2b68711a0e09c9f8c01669665811d31bf5da95da8cf20f0bcbcf59bfd1be95
MD5 e2b1d27e4cbdedca57b48e1dc7071249
BLAKE2b-256 1bcb48c2354999328223d74fa7f2838cbefdcd82e645b67b7c2b8ae7e7c5f23e

See more details on using hashes here.

File details

Details for the file lazily-0.31.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: lazily-0.31.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 468.7 kB
  • Tags: CPython 3.12, manylinux: glibc 2.17+ ARM64, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","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 lazily-0.31.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0871a3eeeac4b2045bc664dd09c00a37c73beb32b52caf6966a52b91d08aabf2
MD5 2d67a3039aee64c976821d93cd08e958
BLAKE2b-256 37e9d2a9ca69801591d493c38299bf9f8f127347c1facfa006088554a1b2167e

See more details on using hashes here.

File details

Details for the file lazily-0.31.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

  • Download URL: lazily-0.31.1-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 328.8 kB
  • Tags: CPython 3.12, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","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 lazily-0.31.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ee517c48a8fc791142041ee4caa1e3ab47bb8def2a377d4ef312542b4888dca1
MD5 249d2cc8d27ef29db8e2d884b413fa52
BLAKE2b-256 e01e81917858980390ad2eb68834e6376b7cbaeaeb73e77289327337a4cb87df

See more details on using hashes here.

File details

Details for the file lazily-0.31.1-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

  • Download URL: lazily-0.31.1-cp312-cp312-macosx_10_13_x86_64.whl
  • Upload date:
  • Size: 335.4 kB
  • Tags: CPython 3.12, macOS 10.13+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","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 lazily-0.31.1-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 7784bf321803a6fadf4c83187ad2a7faefab2e1875062008574e7c2e54dcaf8f
MD5 bc57258552f08ed0ed4c7a2e820fdc9c
BLAKE2b-256 911e7a401f51dbb01b09c2fd2073ef05e044c72c5a230460db9156d1fd1e797d

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