Daffi
📖 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
ServiceandClientcan expose@callbackfunctions. The topology determines the role:
- Client → Service: only the
Serviceexposes callbacks; Clients are pure callers.- Client → Router → Worker: any
Clientcan 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
workerson 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)
| 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)
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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logSecurity 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.
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 logA 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.