Skip to main content

Daffi

License: MIT

📖 Full documentation: https://600apples.github.io/daffi/


Daffi is a lightweight inter-process RPC framework with a compiled core. It lets Python processes (and browser JavaScript clients) call each other's functions over TCP, Unix sockets, or WebSocket — with no serialisation boilerplate, no extra broker process required for direct connections, and throughput up to ~1.2 GiB/s for large binary payloads.


Three building blocks

Class Role
Service Listens on a TCP port. Exposes @callback functions; Clients call them.
Router Pure message forwarder. Needed for the multi-worker layout. Has no callbacks of its own.
Client Connects to a Router or Service. Can issue calls and/or expose its own @callback functions.

Both Service and Client can expose @callback functions. The topology determines the role:

  • Client → Service: only the Service exposes callbacks; Clients are pure callers.
  • Client → Router → Worker: any Client can expose callbacks (acting as a worker), issue calls (acting as a caller), or do both at the same time — all through the Router.

Installation

pip install daffi

Quick start — direct layout (Client → Service)

service.py:

from daffi import Service, callback

@callback
def add(a: float, b: float) -> float:
    return a + b

@callback
def greet(name: str) -> str:
    return f"Hello, {name}!"

svc = Service(app_name="my-service", host="127.0.0.1", port=5000)
svc.start()
svc.join()          # block until svc.stop() is called

client.py:

from daffi import Client

client = Client(app_name="my-client", host="127.0.0.1", port=5000)
conn = client.connect()

result = conn.rpc(timeout=5).add(1, 2)     # → 3.0
greeting = conn.rpc(timeout=5).greet("Alice")  # → "Hello, Alice!"

client.stop()

Run service.py first, then client.py in a second terminal.


Router layout (Client → Router → Worker)

Use a Router when you need many workers behind a single address, or want load-balanced / broadcast calls.

router.py:

from daffi import Router

router = Router(host="127.0.0.1", port=6000)
router.start()
router.join()

worker.py:

from daffi import Client, callback

@callback
def process(task: str) -> str:
    return f"done: {task}"

client = Client(app_name="worker-1", host="127.0.0.1", port=6000)
client.connect()
client.join()   # block until Ctrl+C / SIGTERM

caller.py:

from daffi import Client

client = Client(app_name="caller", host="127.0.0.1", port=6000)
conn = client.connect()

# RPC — routed to one worker (round-robin)
result = conn.rpc(timeout=5).process("job-42")

# Cast — sent to *all* workers, returns {worker_name: result}
all_results = conn.cast(timeout=5).process("broadcast-job")

client.stop()

Call styles

All styles are accessed through the connection handle returned by client.connect(). Every call method returns a proxy; call the desired remote function by attribute access.

conn = client.connect()

rpc — blocking, one worker (round-robin)

When multiple workers expose the same function, rpc() picks one using a round-robin strategy — each call goes to the next worker in rotation, spreading load evenly. Pin to a specific worker with receiver= when you need affinity.

Round-robin only applies in the Router topology (many workers behind one Router). In the Client → Service topology there is always exactly one receiver — the Service itself — so omitting receiver= is the norm and specifying it is redundant.

result = conn.rpc(timeout=5).echo("hello")
result = conn.rpc(timeout=5, serde=SerdeFormat.JSON).add(1, 2)

# Router topology only: pin to a specific worker by name (bypasses round-robin)
result = conn.rpc(timeout=5, receiver="worker-1").process("task")

rpc_nowait — fire-and-forget

conn.rpc_nowait().notify("event happened")

cast — broadcast to all workers, collect results

Most useful in the Router topology where multiple workers expose the same function. The call fans out to every matching worker simultaneously and returns a {worker_name: result} dict once all have responded.

# Returns {worker_name: result, ...}
results = conn.cast(timeout=5).echo("ping")
# e.g. {"worker-01": "ping", "worker-02": "ping", ...}

cast_nowait — broadcast, fire-and-forget

conn.cast_nowait().notify("broadcast event")

stream — chunked send with backpressure

@callback
def receive_chunk(data: bytes) -> None: ...

# Sends each chunk and waits for acknowledgement before sending the next
await_result = conn.stream(serde=SerdeFormat.OPAQUE)
for chunk in my_large_object_chunks:
    await_result.receive_chunk(chunk)

stream_nowait — chunked send, fire-and-forget

conn.stream_nowait(serde=SerdeFormat.OPAQUE).receive_chunk(chunk)

Serialisation formats

Pass serde=SerdeFormat.X to any call method.

Format Import Notes
PICKLE from daffi import SerdeFormat Default. Any Python object.
JSON same Human-readable; requires JSON-serialisable values.
OPAQUE same Raw bytes or string — zero-copy, fastest for binary and string data.
MSGPACK same Compact binary; requires pip install daffi[msgpack].
from daffi import Client, SerdeFormat

conn = client.connect()
result = conn.rpc(serde=SerdeFormat.JSON, timeout=5).add(1, 2)

@callback decorator

Decorate any top-level function or bound method to make it callable remotely. Registration is global and happens at import time.

from daffi import callback

@callback
def echo(payload):
    return payload

@callback
def compute(x: int, y: int) -> int:
    return x * y

Concurrent callback execution (workers)

By default every node processes incoming callbacks inline on a single thread (workers=1). Callbacks are executed one at a time — a slow callback blocks the next one.

Pass workers=N (N ≥ 2) to spin up a thread pool so that up to N callbacks run in parallel:

import time
from daffi import Service, callback

@callback
def slow_task(n: int) -> int:
    time.sleep(1)        # simulates I/O-bound work
    return n * n

# workers=1 (default) — three concurrent callers would each wait ~1 s
svc = Service(host="127.0.0.1", port=5000, workers=1)

# workers=4 — three concurrent callers all finish in ~1 s
svc = Service(host="127.0.0.1", port=5000, workers=4)

svc.start()
svc.join()

The same parameter works on a Client acting as a worker in the Router topology:

from daffi import Client, callback

@callback
def process(task: str) -> str:
    time.sleep(0.5)
    return f"done: {task}"

# This single Client instance can now handle up to 8 concurrent incoming calls
client = Client(app_name="worker-1", host="127.0.0.1", port=6000, workers=8)
client.connect()
client.join()

When to increase workers:

  • Callbacks do I/O (network calls, file reads, database queries).
  • Callbacks are fast and pure — keep workers=1 (no threading overhead).

For CPU-bound callbacks, Python's GIL limits true parallelism within one process. Run multiple worker nodes behind a Router instead of increasing workers on a single node.


Event handlers

Receive connected / disconnected notifications for nodes joining or leaving the network.

def on_event(event: dict):
    # event["type"]   → "connected" or "disconnected"
    # event["member"] → app_name of the node that changed state
    print(f"[{event['type']}] {event['member']}")

svc = Service(host="127.0.0.1", port=5000)
svc.add_event_handler(on_event)
svc.start()

Both Service and Client support add_event_handler.


Unix sockets

Use unix_sock_path instead of host/port for inter-process communication on the same machine.

svc = Service(unix_sock_path="/tmp/daffi.sock")
svc.start()

client = Client(unix_sock_path="/tmp/daffi.sock")
conn = client.connect()

TLS

# Server (Router or Service)
router = Router(
    host="127.0.0.1", port=6000,
    tls=True,
    cert_file="/path/to/server.crt",
    key_file="/path/to/server.key",
)
router.start()

# Client — supply ca_file to verify the server certificate,
# or leave it empty to skip verification
client = Client(
    host="127.0.0.1", port=6000,
    tls=True,
    ca_file="/path/to/ca.crt",
)
conn = client.connect()

Metadata

Release files for daffi 3.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for daffi 3.0.1
File Size Uploaded Provenance Actions
daffi-3.0.1.tar.gz 132.1 kB With provenance Details for daffi-3.0.1.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for daffi 3.0.1
File Actions
daffi-3.0.1-cp314-cp314-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ x86-64 Details for daffi-3.0.1-cp314-cp314-musllinux_1_2_x86_64.whl
daffi-3.0.1-cp314-cp314-musllinux_1_2_aarch64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ ARM64 Details for daffi-3.0.1-cp314-cp314-musllinux_1_2_aarch64.whl
daffi-3.0.1-cp314-cp314-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64 Details for daffi-3.0.1-cp314-cp314-manylinux_2_28_x86_64.whl
daffi-3.0.1-cp314-cp314-manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ ARM64 Details for daffi-3.0.1-cp314-cp314-manylinux_2_28_aarch64.whl
daffi-3.0.1-cp314-cp314-macosx_13_0_arm64.whl CPython 3.14 CPython 3.14 macOS 13.0+ ARM64 Details for daffi-3.0.1-cp314-cp314-macosx_13_0_arm64.whl
daffi-3.0.1-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details for daffi-3.0.1-cp313-cp313-musllinux_1_2_x86_64.whl
daffi-3.0.1-cp313-cp313-musllinux_1_2_aarch64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ ARM64 Details for daffi-3.0.1-cp313-cp313-musllinux_1_2_aarch64.whl
daffi-3.0.1-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details for daffi-3.0.1-cp313-cp313-manylinux_2_28_x86_64.whl
daffi-3.0.1-cp313-cp313-manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64 Details for daffi-3.0.1-cp313-cp313-manylinux_2_28_aarch64.whl
daffi-3.0.1-cp313-cp313-macosx_13_0_arm64.whl CPython 3.13 CPython 3.13 macOS 13.0+ ARM64 Details for daffi-3.0.1-cp313-cp313-macosx_13_0_arm64.whl
daffi-3.0.1-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details for daffi-3.0.1-cp312-cp312-musllinux_1_2_x86_64.whl
daffi-3.0.1-cp312-cp312-musllinux_1_2_aarch64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ ARM64 Details for daffi-3.0.1-cp312-cp312-musllinux_1_2_aarch64.whl
daffi-3.0.1-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details for daffi-3.0.1-cp312-cp312-manylinux_2_28_x86_64.whl
daffi-3.0.1-cp312-cp312-manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ ARM64 Details for daffi-3.0.1-cp312-cp312-manylinux_2_28_aarch64.whl
daffi-3.0.1-cp312-cp312-macosx_13_0_arm64.whl CPython 3.12 CPython 3.12 macOS 13.0+ ARM64 Details for daffi-3.0.1-cp312-cp312-macosx_13_0_arm64.whl
daffi-3.0.1-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details for daffi-3.0.1-cp311-cp311-musllinux_1_2_x86_64.whl
daffi-3.0.1-cp311-cp311-musllinux_1_2_aarch64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ ARM64 Details for daffi-3.0.1-cp311-cp311-musllinux_1_2_aarch64.whl
daffi-3.0.1-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details for daffi-3.0.1-cp311-cp311-manylinux_2_28_x86_64.whl
daffi-3.0.1-cp311-cp311-manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ ARM64 Details for daffi-3.0.1-cp311-cp311-manylinux_2_28_aarch64.whl
daffi-3.0.1-cp311-cp311-macosx_13_0_arm64.whl CPython 3.11 CPython 3.11 macOS 13.0+ ARM64 Details for daffi-3.0.1-cp311-cp311-macosx_13_0_arm64.whl
daffi-3.0.1-cp310-cp310-musllinux_1_2_x86_64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-64 Details for daffi-3.0.1-cp310-cp310-musllinux_1_2_x86_64.whl
daffi-3.0.1-cp310-cp310-musllinux_1_2_aarch64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ ARM64 Details for daffi-3.0.1-cp310-cp310-musllinux_1_2_aarch64.whl
daffi-3.0.1-cp310-cp310-manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64 Details for daffi-3.0.1-cp310-cp310-manylinux_2_28_x86_64.whl
daffi-3.0.1-cp310-cp310-manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ ARM64 Details for daffi-3.0.1-cp310-cp310-manylinux_2_28_aarch64.whl
daffi-3.0.1-cp310-cp310-macosx_13_0_arm64.whl CPython 3.10 CPython 3.10 macOS 13.0+ ARM64 Details for daffi-3.0.1-cp310-cp310-macosx_13_0_arm64.whl

Total release size: 83.0 MB

Release files / daffi-3.0.1.tar.gz

Download URL daffi-3.0.1.tar.gz
Size 132.1 kB
Tags Source
SHA-256 checksum
How to use checksums
ee6fb940885eb10090e113f2ac92fce102d508f758df34e6c11de87fb0fc52e6
BLAKE2b-256 checksum
How to use checksums
2491b48b2985c5eb456c8c5fdcf5a242fa72ea7e64338d330713debffd56e4f8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / daffi-3.0.1-cp314-cp314-musllinux_1_2_x86_64.whl

Download URL daffi-3.0.1-cp314-cp314-musllinux_1_2_x86_64.whl
Size 3.8 MB
Tags CPython 3.14 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
95b77054be6aae1c0b117c4a53f6b7db9cdc63e1d46ed05798da6c365e731f82
BLAKE2b-256 checksum
How to use checksums
7f917b128f47dbc62d371a43483a91274e25820b36239ada3c2497d33335a519
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / daffi-3.0.1-cp314-cp314-musllinux_1_2_aarch64.whl

Download URL daffi-3.0.1-cp314-cp314-musllinux_1_2_aarch64.whl
Size 4.0 MB
Tags CPython 3.14 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
fb6193e26e4262cd99c5647d28cb92711fd93cf61506641978baf3cbdd152067
BLAKE2b-256 checksum
How to use checksums
22ec7c49ec493b9b5aabad13036deab96b59e724034e83de879507d68001b5fe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / daffi-3.0.1-cp314-cp314-manylinux_2_28_x86_64.whl

Download URL daffi-3.0.1-cp314-cp314-manylinux_2_28_x86_64.whl
Size 3.1 MB
Tags CPython 3.14 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
0784f7e4ce73f2e95c4faf2c20416abe2240c607c243459f2ff57b5c9d70ebfa
BLAKE2b-256 checksum
How to use checksums
53e13400eaa347daeb122587827f6d09f8f03f223fb8400838f40b0a9ff8e178
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / daffi-3.0.1-cp314-cp314-manylinux_2_28_aarch64.whl

Download URL daffi-3.0.1-cp314-cp314-manylinux_2_28_aarch64.whl
Size 2.9 MB
Tags CPython 3.14 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
87a2e4edf16e5009041e0b419ee2ada119ac6909b5963e677cf5c1d2902c65c5
BLAKE2b-256 checksum
How to use checksums
448eca504f0e59a60b3845a1dfb401993d7492c1620fca3a6bfc2adcd896f905
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / daffi-3.0.1-cp314-cp314-macosx_13_0_arm64.whl

Download URL daffi-3.0.1-cp314-cp314-macosx_13_0_arm64.whl
Size 2.8 MB
Tags CPython 3.14 macOS 13.0+ ARM64
SHA-256 checksum
How to use checksums
fb6a040f3561158d9c4253af122804db2eb57b89aff6750f0d9d2ccf1b546c1a
BLAKE2b-256 checksum
How to use checksums
bd38ea74a57ad1cc75055501bac222081c05e50be6221be603ed9060953dccfa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / daffi-3.0.1-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL daffi-3.0.1-cp313-cp313-musllinux_1_2_x86_64.whl
Size 3.8 MB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
e510209439da435170d394370a181af575426341848a3e96134d5480702ba842
BLAKE2b-256 checksum
How to use checksums
173bc3e3c74c212409d53d66ac32ff359825f94e37bdc9390f06490d1a3d5c22
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / daffi-3.0.1-cp313-cp313-musllinux_1_2_aarch64.whl

Download URL daffi-3.0.1-cp313-cp313-musllinux_1_2_aarch64.whl
Size 4.0 MB
Tags CPython 3.13 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
e9d690a68087ab2417b7fbca08728e7975f1b198649c5bdc147ff21b4af3d2f8
BLAKE2b-256 checksum
How to use checksums
da9e69e385c72887f6ab767c78b0acc5d86821acc645bdddd2c47e534c85d714
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / daffi-3.0.1-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL daffi-3.0.1-cp313-cp313-manylinux_2_28_x86_64.whl
Size 3.1 MB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
aaea73bd3881c803c73dad6b9998b5c85d9beb223087e99ab7187b48d77e309f
BLAKE2b-256 checksum
How to use checksums
2d46bab39d9bf7fe52dba155b1628f2119fc6f2d7f4d027ad6cbc66d867dd2be
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / daffi-3.0.1-cp313-cp313-manylinux_2_28_aarch64.whl

Download URL daffi-3.0.1-cp313-cp313-manylinux_2_28_aarch64.whl
Size 2.9 MB
Tags CPython 3.13 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
0e4052fbac624666fda0c896efbfe934c500cd1c7485da79b0ac3316b2e7c1f3
BLAKE2b-256 checksum
How to use checksums
3b901eac489d88917cc4a8a2dd28c09c12e621e7c0a95c947ac83318a4dcf110
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / daffi-3.0.1-cp313-cp313-macosx_13_0_arm64.whl

Download URL daffi-3.0.1-cp313-cp313-macosx_13_0_arm64.whl
Size 2.8 MB
Tags CPython 3.13 macOS 13.0+ ARM64
SHA-256 checksum
How to use checksums
28599c8d14fdd8ee50975cb2586dc67633412dceb8fb069b7479ab6f6dfb5eb0
BLAKE2b-256 checksum
How to use checksums
c08a5d7ffcf1ac87750e86194bf964b4075a4c3e7f1e554ce6d44367f29369f7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / daffi-3.0.1-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL daffi-3.0.1-cp312-cp312-musllinux_1_2_x86_64.whl
Size 3.8 MB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
9c60ea389879b45987cd05b676b1883ee821c21d2410941618dc45aa8ea13d03
BLAKE2b-256 checksum
How to use checksums
4cbc24434dc9630b146e1187a856011f20c7f1f6530ea23d0ed205a0c519cc29
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / daffi-3.0.1-cp312-cp312-musllinux_1_2_aarch64.whl

Download URL daffi-3.0.1-cp312-cp312-musllinux_1_2_aarch64.whl
Size 4.0 MB
Tags CPython 3.12 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
605490a3fd35fb5e340da851bf57fbed9554bc65a3622b11f102b38ac4d8e8e0
BLAKE2b-256 checksum
How to use checksums
4827329e75f15d4893815223f3eb7ac99b16f0c09f33d38567a43a0a7308fa6a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / daffi-3.0.1-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL daffi-3.0.1-cp312-cp312-manylinux_2_28_x86_64.whl
Size 3.1 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
5f19e6c169bcf8e325713ca1bb083b822e9af27fed71ab7b4d87da403e407881
BLAKE2b-256 checksum
How to use checksums
f2b947828843f22ef79b74603d6a64aaaf767ddb1951948f870af60df914c464
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / daffi-3.0.1-cp312-cp312-manylinux_2_28_aarch64.whl

Download URL daffi-3.0.1-cp312-cp312-manylinux_2_28_aarch64.whl
Size 2.9 MB
Tags CPython 3.12 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
2d7ad066cd58103d7c58e67b3a6cbaac3bc3ab4b4ae9d4da1729c0583e4809e5
BLAKE2b-256 checksum
How to use checksums
19493abfb99d58a841a2b8040bd2ab8a77dacd5d47f6386f600bc654b8c2d834
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / daffi-3.0.1-cp312-cp312-macosx_13_0_arm64.whl

Download URL daffi-3.0.1-cp312-cp312-macosx_13_0_arm64.whl
Size 2.8 MB
Tags CPython 3.12 macOS 13.0+ ARM64
SHA-256 checksum
How to use checksums
3e2e9fae9e4fee0e227a0e5edd4802caf171bb0d8f5fce4a86e124ebadc20027
BLAKE2b-256 checksum
How to use checksums
83c73aba0021e98aa973d9c9422f079e881112f2a46563c0d01cc26c2f32849b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / daffi-3.0.1-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL daffi-3.0.1-cp311-cp311-musllinux_1_2_x86_64.whl
Size 3.8 MB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
f31ebb9f4d55834c272f9bd49d3d3dee557597b1101e00e12678a26dfe0e5f6c
BLAKE2b-256 checksum
How to use checksums
19a86d143b536ef79f18540951c865b8d82f3ad65897ebbb54b825252e7b02ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / daffi-3.0.1-cp311-cp311-musllinux_1_2_aarch64.whl

Download URL daffi-3.0.1-cp311-cp311-musllinux_1_2_aarch64.whl
Size 4.0 MB
Tags CPython 3.11 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
98ae9683205a257b51de30376e8d88e874bc9899255d1c387d6bdb37edab17db
BLAKE2b-256 checksum
How to use checksums
3c2270da1f627952d838d99b8263cee9e552222d437144b51553df7df48901e4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / daffi-3.0.1-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL daffi-3.0.1-cp311-cp311-manylinux_2_28_x86_64.whl
Size 3.1 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
20fe6da5674b20ae8a8dfc83829ce8c1a417477fdf538055f6dd55ead3a49c1b
BLAKE2b-256 checksum
How to use checksums
6a486ff60b2f53b6deeb7a1d5f65d6d44a18accfc126208f8354f08b50a3f38e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / daffi-3.0.1-cp311-cp311-manylinux_2_28_aarch64.whl

Download URL daffi-3.0.1-cp311-cp311-manylinux_2_28_aarch64.whl
Size 2.9 MB
Tags CPython 3.11 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
74f37727fb2f372083c30a6d90ed59fccf068bde0c925b6f275a1e5dc6dc0da4
BLAKE2b-256 checksum
How to use checksums
a04e7181eb9674004cd62b9cdb167c538a786b4f19805f0b1435d9a7f4b30e77
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / daffi-3.0.1-cp311-cp311-macosx_13_0_arm64.whl

Download URL daffi-3.0.1-cp311-cp311-macosx_13_0_arm64.whl
Size 2.8 MB
Tags CPython 3.11 macOS 13.0+ ARM64
SHA-256 checksum
How to use checksums
6ee7324a149fc0ee4ecf2ad4666d05d42f362e7b25541d378cca28b4f3333c30
BLAKE2b-256 checksum
How to use checksums
6152bbdfab4ddb1a891fcdf75aa2b5fd9cf1ddc90cdc43a01795d38236b0c484
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / daffi-3.0.1-cp310-cp310-musllinux_1_2_x86_64.whl

Download URL daffi-3.0.1-cp310-cp310-musllinux_1_2_x86_64.whl
Size 3.8 MB
Tags CPython 3.10 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
f8aa0d1e1dbb007df1bab9bc47bc5abae7d330c25f2eff5498c33525667687c3
BLAKE2b-256 checksum
How to use checksums
1757aaa2416b336278316d981009c51d8b35b8291cc8cb3959aae9d4bc26cf94
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / daffi-3.0.1-cp310-cp310-musllinux_1_2_aarch64.whl

Download URL daffi-3.0.1-cp310-cp310-musllinux_1_2_aarch64.whl
Size 4.0 MB
Tags CPython 3.10 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
87c9d01e278225b68d057d3080da7ff0eafd6d16653483175fc43ec634058544
BLAKE2b-256 checksum
How to use checksums
572e81234b12502c8a974d02493f4908cdf74176c18fd71bd12ff2e3cfef7da2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / daffi-3.0.1-cp310-cp310-manylinux_2_28_x86_64.whl

Download URL daffi-3.0.1-cp310-cp310-manylinux_2_28_x86_64.whl
Size 3.1 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
08fe4fa74380b7c05c4ff89e3683d0279e14bd906dbd17208d154d37adaec18e
BLAKE2b-256 checksum
How to use checksums
0dcb64346cdaae31d764b1c0f01617666ca7eb9f6ce9486ea7e4f327af282d7e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / daffi-3.0.1-cp310-cp310-manylinux_2_28_aarch64.whl

Download URL daffi-3.0.1-cp310-cp310-manylinux_2_28_aarch64.whl
Size 2.9 MB
Tags CPython 3.10 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
d60a0e052b31afc0f6b76e1ef07e26f4ffe0c71ee7594ae2bb8e46446bffb37f
BLAKE2b-256 checksum
How to use checksums
c60e0d057c635d69bd6754a62976dd9e6fb66fb3fa2f4c04d393c6f4a23217ce
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / daffi-3.0.1-cp310-cp310-macosx_13_0_arm64.whl

Download URL daffi-3.0.1-cp310-cp310-macosx_13_0_arm64.whl
Size 2.8 MB
Tags CPython 3.10 macOS 13.0+ ARM64
SHA-256 checksum
How to use checksums
72a84b336fd4a54bd0dab9b3ef59f087ae5660cd28c3355c351d98419999cf66
BLAKE2b-256 checksum
How to use checksums
a3399c53be51c0500d7eb754c0d34da0783624fc1cac690af71bbdbd4081e042
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Security for daffi 3.0.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 26 files in this release have been uploaded with provenance metadata.

Select from 26 files

Attestation for daffi-3.0.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page