Lightweight inter-process RPC framework with a high-performance native core
Project description
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()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file daffi-3.0.0.tar.gz.
File metadata
- Download URL: daffi-3.0.0.tar.gz
- Upload date:
- Size: 128.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5b7ceda92062d1bf0dc2d4cd7845921836eed3eb4348207ba74ecbac8c1a5444
|
|
| MD5 |
d12e44e4c623028c12cd33ea6490b6d7
|
|
| BLAKE2b-256 |
ca7b21174fe9d75a696b0cc57cb67f31d3fe639846fe42b9669d4202ba476e6d
|
Provenance
The following attestation bundles were made for daffi-3.0.0.tar.gz:
Publisher:
wheels.yml on 600apples/daffi
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
daffi-3.0.0.tar.gz -
Subject digest:
5b7ceda92062d1bf0dc2d4cd7845921836eed3eb4348207ba74ecbac8c1a5444 - Sigstore transparency entry: 1854023099
- Sigstore integration time:
-
Permalink:
600apples/daffi@d0c79b28501f81767fb4b942c9bae36706049574 -
Branch / Tag:
refs/tags/3.0.0 - Owner: https://github.com/600apples
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@d0c79b28501f81767fb4b942c9bae36706049574 -
Trigger Event:
push
-
Statement type:
File details
Details for the file daffi-3.0.0-cp313-cp313-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: daffi-3.0.0-cp313-cp313-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 3.8 MB
- Tags: CPython 3.13, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0c0486cd03dec7c70236d50a9c0883a3cd78d4a38e4fb369516c5dbc8c22275a
|
|
| MD5 |
21e004f0c2b89e14e94089c60ba8b550
|
|
| BLAKE2b-256 |
517d2ca16e620368d9e3e64b4ec682755c1e63995b3409a328e9cc2f1ead1f67
|
Provenance
The following attestation bundles were made for daffi-3.0.0-cp313-cp313-musllinux_1_2_x86_64.whl:
Publisher:
wheels.yml on 600apples/daffi
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
daffi-3.0.0-cp313-cp313-musllinux_1_2_x86_64.whl -
Subject digest:
0c0486cd03dec7c70236d50a9c0883a3cd78d4a38e4fb369516c5dbc8c22275a - Sigstore transparency entry: 1854023591
- Sigstore integration time:
-
Permalink:
600apples/daffi@d0c79b28501f81767fb4b942c9bae36706049574 -
Branch / Tag:
refs/tags/3.0.0 - Owner: https://github.com/600apples
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@d0c79b28501f81767fb4b942c9bae36706049574 -
Trigger Event:
push
-
Statement type:
File details
Details for the file daffi-3.0.0-cp313-cp313-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: daffi-3.0.0-cp313-cp313-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 3.9 MB
- Tags: CPython 3.13, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e26b4716fb0f4fe792616efb978391d2a64430d312903a208fab6d73f5babedf
|
|
| MD5 |
6724296916eabcfc1925f4063f827bad
|
|
| BLAKE2b-256 |
b03cf45ff893ee2b754d406235c045ecd28ba4bcabacfe2431909d9c78e15351
|
Provenance
The following attestation bundles were made for daffi-3.0.0-cp313-cp313-musllinux_1_2_aarch64.whl:
Publisher:
wheels.yml on 600apples/daffi
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
daffi-3.0.0-cp313-cp313-musllinux_1_2_aarch64.whl -
Subject digest:
e26b4716fb0f4fe792616efb978391d2a64430d312903a208fab6d73f5babedf - Sigstore transparency entry: 1854023513
- Sigstore integration time:
-
Permalink:
600apples/daffi@d0c79b28501f81767fb4b942c9bae36706049574 -
Branch / Tag:
refs/tags/3.0.0 - Owner: https://github.com/600apples
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@d0c79b28501f81767fb4b942c9bae36706049574 -
Trigger Event:
push
-
Statement type:
File details
Details for the file daffi-3.0.0-cp313-cp313-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: daffi-3.0.0-cp313-cp313-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 3.1 MB
- Tags: CPython 3.13, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
efe6acc6f6a1a469014e90030b38e88f05bd0f74e3ee167aed6d63f4bdabafdc
|
|
| MD5 |
cbe56798f8cf1fad1d0930b70544d266
|
|
| BLAKE2b-256 |
0ccae88e4841c3d24eec693346103300f8318ae43520125df1c87e306d9d69af
|
Provenance
The following attestation bundles were made for daffi-3.0.0-cp313-cp313-manylinux_2_28_x86_64.whl:
Publisher:
wheels.yml on 600apples/daffi
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
daffi-3.0.0-cp313-cp313-manylinux_2_28_x86_64.whl -
Subject digest:
efe6acc6f6a1a469014e90030b38e88f05bd0f74e3ee167aed6d63f4bdabafdc - Sigstore transparency entry: 1854023328
- Sigstore integration time:
-
Permalink:
600apples/daffi@d0c79b28501f81767fb4b942c9bae36706049574 -
Branch / Tag:
refs/tags/3.0.0 - Owner: https://github.com/600apples
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@d0c79b28501f81767fb4b942c9bae36706049574 -
Trigger Event:
push
-
Statement type:
File details
Details for the file daffi-3.0.0-cp313-cp313-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: daffi-3.0.0-cp313-cp313-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 2.9 MB
- Tags: CPython 3.13, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
48d0582244e76e5cb3cbec8f7231b39b8770641acdc60dfc54f7c37dea705d63
|
|
| MD5 |
ca41776c52ea39ee3e5e4e9f9d3f2547
|
|
| BLAKE2b-256 |
e1c6e5bd0677aabda1e5edec05784c83fb676f069bd6b4b475b054a87944ebd3
|
Provenance
The following attestation bundles were made for daffi-3.0.0-cp313-cp313-manylinux_2_28_aarch64.whl:
Publisher:
wheels.yml on 600apples/daffi
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
daffi-3.0.0-cp313-cp313-manylinux_2_28_aarch64.whl -
Subject digest:
48d0582244e76e5cb3cbec8f7231b39b8770641acdc60dfc54f7c37dea705d63 - Sigstore transparency entry: 1854023140
- Sigstore integration time:
-
Permalink:
600apples/daffi@d0c79b28501f81767fb4b942c9bae36706049574 -
Branch / Tag:
refs/tags/3.0.0 - Owner: https://github.com/600apples
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@d0c79b28501f81767fb4b942c9bae36706049574 -
Trigger Event:
push
-
Statement type:
File details
Details for the file daffi-3.0.0-cp313-cp313-macosx_13_0_arm64.whl.
File metadata
- Download URL: daffi-3.0.0-cp313-cp313-macosx_13_0_arm64.whl
- Upload date:
- Size: 2.8 MB
- Tags: CPython 3.13, macOS 13.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dc4754af32f4c863d162ed3d1a58d4b555197a4a9ad8aa4e69075e4cc0f564f7
|
|
| MD5 |
91337465fed33fc170f54d417bbf4d3c
|
|
| BLAKE2b-256 |
84678d458ec569630d0ab478329aab828edd26cda3028f64e3b9c48ab3c10c7b
|
Provenance
The following attestation bundles were made for daffi-3.0.0-cp313-cp313-macosx_13_0_arm64.whl:
Publisher:
wheels.yml on 600apples/daffi
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
daffi-3.0.0-cp313-cp313-macosx_13_0_arm64.whl -
Subject digest:
dc4754af32f4c863d162ed3d1a58d4b555197a4a9ad8aa4e69075e4cc0f564f7 - Sigstore transparency entry: 1854023186
- Sigstore integration time:
-
Permalink:
600apples/daffi@d0c79b28501f81767fb4b942c9bae36706049574 -
Branch / Tag:
refs/tags/3.0.0 - Owner: https://github.com/600apples
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@d0c79b28501f81767fb4b942c9bae36706049574 -
Trigger Event:
push
-
Statement type:
File details
Details for the file daffi-3.0.0-cp312-cp312-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: daffi-3.0.0-cp312-cp312-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 3.8 MB
- Tags: CPython 3.12, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3b56f9478058000a6e98241140e661f7ae9f2cab6b20e20799d67beb11516037
|
|
| MD5 |
f46e5ccc2aa1e446a2cb7ee209ea74df
|
|
| BLAKE2b-256 |
f90649e4d35a813cb758d5237e5c3af636e79b9410d8f5f4996c2153980dc020
|
Provenance
The following attestation bundles were made for daffi-3.0.0-cp312-cp312-musllinux_1_2_x86_64.whl:
Publisher:
wheels.yml on 600apples/daffi
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
daffi-3.0.0-cp312-cp312-musllinux_1_2_x86_64.whl -
Subject digest:
3b56f9478058000a6e98241140e661f7ae9f2cab6b20e20799d67beb11516037 - Sigstore transparency entry: 1854023472
- Sigstore integration time:
-
Permalink:
600apples/daffi@d0c79b28501f81767fb4b942c9bae36706049574 -
Branch / Tag:
refs/tags/3.0.0 - Owner: https://github.com/600apples
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@d0c79b28501f81767fb4b942c9bae36706049574 -
Trigger Event:
push
-
Statement type:
File details
Details for the file daffi-3.0.0-cp312-cp312-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: daffi-3.0.0-cp312-cp312-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 3.9 MB
- Tags: CPython 3.12, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3727eb6ec2c8b86ec59096747b4c503b6faeb10db922eb66ce47e8a35e811e74
|
|
| MD5 |
78413e743b457c1af777299d9ab0cf96
|
|
| BLAKE2b-256 |
acd6bbd1b80e3505c842e7d3cde69c88c3261bbfc11a449fe54c070ce422d170
|
Provenance
The following attestation bundles were made for daffi-3.0.0-cp312-cp312-musllinux_1_2_aarch64.whl:
Publisher:
wheels.yml on 600apples/daffi
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
daffi-3.0.0-cp312-cp312-musllinux_1_2_aarch64.whl -
Subject digest:
3727eb6ec2c8b86ec59096747b4c503b6faeb10db922eb66ce47e8a35e811e74 - Sigstore transparency entry: 1854023427
- Sigstore integration time:
-
Permalink:
600apples/daffi@d0c79b28501f81767fb4b942c9bae36706049574 -
Branch / Tag:
refs/tags/3.0.0 - Owner: https://github.com/600apples
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@d0c79b28501f81767fb4b942c9bae36706049574 -
Trigger Event:
push
-
Statement type:
File details
Details for the file daffi-3.0.0-cp312-cp312-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: daffi-3.0.0-cp312-cp312-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 3.1 MB
- Tags: CPython 3.12, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e4a33d2325f33a68cfd9a552c58f94c2abdc31e4c29c6c202ce5115590e5eef3
|
|
| MD5 |
4e72067ce2463ec379af94655136b1f9
|
|
| BLAKE2b-256 |
695c6dcb29e7ce9ba4e1ba134cca9d9b69eac074475950e7519f27c6d073542e
|
Provenance
The following attestation bundles were made for daffi-3.0.0-cp312-cp312-manylinux_2_28_x86_64.whl:
Publisher:
wheels.yml on 600apples/daffi
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
daffi-3.0.0-cp312-cp312-manylinux_2_28_x86_64.whl -
Subject digest:
e4a33d2325f33a68cfd9a552c58f94c2abdc31e4c29c6c202ce5115590e5eef3 - Sigstore transparency entry: 1854023242
- Sigstore integration time:
-
Permalink:
600apples/daffi@d0c79b28501f81767fb4b942c9bae36706049574 -
Branch / Tag:
refs/tags/3.0.0 - Owner: https://github.com/600apples
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@d0c79b28501f81767fb4b942c9bae36706049574 -
Trigger Event:
push
-
Statement type:
File details
Details for the file daffi-3.0.0-cp312-cp312-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: daffi-3.0.0-cp312-cp312-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 2.9 MB
- Tags: CPython 3.12, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
41db187e564857b67215f2e53ecd5ae5826f94e502c19028f8047e9cf15ab818
|
|
| MD5 |
853034b5d6953113dd9499c3ef850e2d
|
|
| BLAKE2b-256 |
2fbb30f5cf69a4f115059ab8c6606cf04dc0d7ef61298c45c27764326a46201b
|
Provenance
The following attestation bundles were made for daffi-3.0.0-cp312-cp312-manylinux_2_28_aarch64.whl:
Publisher:
wheels.yml on 600apples/daffi
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
daffi-3.0.0-cp312-cp312-manylinux_2_28_aarch64.whl -
Subject digest:
41db187e564857b67215f2e53ecd5ae5826f94e502c19028f8047e9cf15ab818 - Sigstore transparency entry: 1854023376
- Sigstore integration time:
-
Permalink:
600apples/daffi@d0c79b28501f81767fb4b942c9bae36706049574 -
Branch / Tag:
refs/tags/3.0.0 - Owner: https://github.com/600apples
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@d0c79b28501f81767fb4b942c9bae36706049574 -
Trigger Event:
push
-
Statement type:
File details
Details for the file daffi-3.0.0-cp312-cp312-macosx_13_0_arm64.whl.
File metadata
- Download URL: daffi-3.0.0-cp312-cp312-macosx_13_0_arm64.whl
- Upload date:
- Size: 2.8 MB
- Tags: CPython 3.12, macOS 13.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7d39ada9f8691deb8940b7c61c9725603662d2c19b6931a5838616566a20e5c7
|
|
| MD5 |
75a6c9eb741a29171dd11986e5c331f5
|
|
| BLAKE2b-256 |
7a34903a9da9f6df8e442eccefb3a4f874799433170167b3aac2129adb161c1f
|
Provenance
The following attestation bundles were made for daffi-3.0.0-cp312-cp312-macosx_13_0_arm64.whl:
Publisher:
wheels.yml on 600apples/daffi
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
daffi-3.0.0-cp312-cp312-macosx_13_0_arm64.whl -
Subject digest:
7d39ada9f8691deb8940b7c61c9725603662d2c19b6931a5838616566a20e5c7 - Sigstore transparency entry: 1854023927
- Sigstore integration time:
-
Permalink:
600apples/daffi@d0c79b28501f81767fb4b942c9bae36706049574 -
Branch / Tag:
refs/tags/3.0.0 - Owner: https://github.com/600apples
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@d0c79b28501f81767fb4b942c9bae36706049574 -
Trigger Event:
push
-
Statement type:
File details
Details for the file daffi-3.0.0-cp311-cp311-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: daffi-3.0.0-cp311-cp311-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 3.8 MB
- Tags: CPython 3.11, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
260e9545339b5f203a20a14ee2b331d96a572f9d7f7f193d602685a10ec27217
|
|
| MD5 |
2b196b3dcf57c85ddd51bdfd4329d496
|
|
| BLAKE2b-256 |
4ff431c0c59ef2e368d5bf09d5ac59e28f0347d05f6b90a6d0f84c3749ed4cd2
|
Provenance
The following attestation bundles were made for daffi-3.0.0-cp311-cp311-musllinux_1_2_x86_64.whl:
Publisher:
wheels.yml on 600apples/daffi
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
daffi-3.0.0-cp311-cp311-musllinux_1_2_x86_64.whl -
Subject digest:
260e9545339b5f203a20a14ee2b331d96a572f9d7f7f193d602685a10ec27217 - Sigstore transparency entry: 1854023738
- Sigstore integration time:
-
Permalink:
600apples/daffi@d0c79b28501f81767fb4b942c9bae36706049574 -
Branch / Tag:
refs/tags/3.0.0 - Owner: https://github.com/600apples
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@d0c79b28501f81767fb4b942c9bae36706049574 -
Trigger Event:
push
-
Statement type:
File details
Details for the file daffi-3.0.0-cp311-cp311-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: daffi-3.0.0-cp311-cp311-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 3.9 MB
- Tags: CPython 3.11, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e85ed4833c44f8ac780907c2fcf50075b57ff19762ce44afa9224a4ffbd658ed
|
|
| MD5 |
a3530d83481c82ab25ef4260c34e4746
|
|
| BLAKE2b-256 |
cbb48afecb54b9d369cc681dcde9da2db1d4f74edc0153c53cadaa8b7edb6338
|
Provenance
The following attestation bundles were made for daffi-3.0.0-cp311-cp311-musllinux_1_2_aarch64.whl:
Publisher:
wheels.yml on 600apples/daffi
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
daffi-3.0.0-cp311-cp311-musllinux_1_2_aarch64.whl -
Subject digest:
e85ed4833c44f8ac780907c2fcf50075b57ff19762ce44afa9224a4ffbd658ed - Sigstore transparency entry: 1854024247
- Sigstore integration time:
-
Permalink:
600apples/daffi@d0c79b28501f81767fb4b942c9bae36706049574 -
Branch / Tag:
refs/tags/3.0.0 - Owner: https://github.com/600apples
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@d0c79b28501f81767fb4b942c9bae36706049574 -
Trigger Event:
push
-
Statement type:
File details
Details for the file daffi-3.0.0-cp311-cp311-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: daffi-3.0.0-cp311-cp311-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 3.1 MB
- Tags: CPython 3.11, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4a338673412d2eb1b47181ad42a7396ddb9c0483d959d77393747ccbe96fbc4a
|
|
| MD5 |
885e2465c3486a36223610bb13dc7515
|
|
| BLAKE2b-256 |
a219c42bef978a0c9f5237d9c784717fc87e55bef1b3a841b9b917c2674ebc75
|
Provenance
The following attestation bundles were made for daffi-3.0.0-cp311-cp311-manylinux_2_28_x86_64.whl:
Publisher:
wheels.yml on 600apples/daffi
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
daffi-3.0.0-cp311-cp311-manylinux_2_28_x86_64.whl -
Subject digest:
4a338673412d2eb1b47181ad42a7396ddb9c0483d959d77393747ccbe96fbc4a - Sigstore transparency entry: 1854023659
- Sigstore integration time:
-
Permalink:
600apples/daffi@d0c79b28501f81767fb4b942c9bae36706049574 -
Branch / Tag:
refs/tags/3.0.0 - Owner: https://github.com/600apples
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@d0c79b28501f81767fb4b942c9bae36706049574 -
Trigger Event:
push
-
Statement type:
File details
Details for the file daffi-3.0.0-cp311-cp311-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: daffi-3.0.0-cp311-cp311-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 2.9 MB
- Tags: CPython 3.11, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1f93dd10e0e89642be2b02fa12192390a1261d98b184670e79c1ccb95b57a91d
|
|
| MD5 |
46c512dfb3f9db26dcd69f1dac0ef6c2
|
|
| BLAKE2b-256 |
7d8eb086d1120ec4085a00ae473285d22d98489a50971b6e393986df409cb90a
|
Provenance
The following attestation bundles were made for daffi-3.0.0-cp311-cp311-manylinux_2_28_aarch64.whl:
Publisher:
wheels.yml on 600apples/daffi
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
daffi-3.0.0-cp311-cp311-manylinux_2_28_aarch64.whl -
Subject digest:
1f93dd10e0e89642be2b02fa12192390a1261d98b184670e79c1ccb95b57a91d - Sigstore transparency entry: 1854024101
- Sigstore integration time:
-
Permalink:
600apples/daffi@d0c79b28501f81767fb4b942c9bae36706049574 -
Branch / Tag:
refs/tags/3.0.0 - Owner: https://github.com/600apples
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@d0c79b28501f81767fb4b942c9bae36706049574 -
Trigger Event:
push
-
Statement type:
File details
Details for the file daffi-3.0.0-cp311-cp311-macosx_13_0_arm64.whl.
File metadata
- Download URL: daffi-3.0.0-cp311-cp311-macosx_13_0_arm64.whl
- Upload date:
- Size: 2.8 MB
- Tags: CPython 3.11, macOS 13.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d92b0c4f4e1c3a56d53916b5875c0c6d65e37e6664d8507be3b4b90714065462
|
|
| MD5 |
732748ba5895a8a869a9f07ae960979c
|
|
| BLAKE2b-256 |
be56c70880637d70441c6a5fa7f70e760d76b5869fd1059ade626783c334c70c
|
Provenance
The following attestation bundles were made for daffi-3.0.0-cp311-cp311-macosx_13_0_arm64.whl:
Publisher:
wheels.yml on 600apples/daffi
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
daffi-3.0.0-cp311-cp311-macosx_13_0_arm64.whl -
Subject digest:
d92b0c4f4e1c3a56d53916b5875c0c6d65e37e6664d8507be3b4b90714065462 - Sigstore transparency entry: 1854023279
- Sigstore integration time:
-
Permalink:
600apples/daffi@d0c79b28501f81767fb4b942c9bae36706049574 -
Branch / Tag:
refs/tags/3.0.0 - Owner: https://github.com/600apples
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@d0c79b28501f81767fb4b942c9bae36706049574 -
Trigger Event:
push
-
Statement type:
File details
Details for the file daffi-3.0.0-cp310-cp310-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: daffi-3.0.0-cp310-cp310-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 3.8 MB
- Tags: CPython 3.10, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ff04efcbc6d0eefb26b42331493a592863cd1bb39551a395c1f79c0f924fcd8
|
|
| MD5 |
bafda6e1b41d12e5302acfc3793ff425
|
|
| BLAKE2b-256 |
78339ac266e97c9c867a3694183c79de4dcd5722f4e5032c54c58032050fb98e
|
Provenance
The following attestation bundles were made for daffi-3.0.0-cp310-cp310-musllinux_1_2_x86_64.whl:
Publisher:
wheels.yml on 600apples/daffi
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
daffi-3.0.0-cp310-cp310-musllinux_1_2_x86_64.whl -
Subject digest:
2ff04efcbc6d0eefb26b42331493a592863cd1bb39551a395c1f79c0f924fcd8 - Sigstore transparency entry: 1854024007
- Sigstore integration time:
-
Permalink:
600apples/daffi@d0c79b28501f81767fb4b942c9bae36706049574 -
Branch / Tag:
refs/tags/3.0.0 - Owner: https://github.com/600apples
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@d0c79b28501f81767fb4b942c9bae36706049574 -
Trigger Event:
push
-
Statement type:
File details
Details for the file daffi-3.0.0-cp310-cp310-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: daffi-3.0.0-cp310-cp310-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 3.9 MB
- Tags: CPython 3.10, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
84e50bf394834d851619c68b5b4129921b5bfd7d01ef2779ae3d10dabe67034b
|
|
| MD5 |
047db030bd02889dd1efea7e0df6b0b3
|
|
| BLAKE2b-256 |
36c4168e97357bf7fe366cabd1376a10dcd0e03617d29027bbe0a27aba10f3cf
|
Provenance
The following attestation bundles were made for daffi-3.0.0-cp310-cp310-musllinux_1_2_aarch64.whl:
Publisher:
wheels.yml on 600apples/daffi
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
daffi-3.0.0-cp310-cp310-musllinux_1_2_aarch64.whl -
Subject digest:
84e50bf394834d851619c68b5b4129921b5bfd7d01ef2779ae3d10dabe67034b - Sigstore transparency entry: 1854023555
- Sigstore integration time:
-
Permalink:
600apples/daffi@d0c79b28501f81767fb4b942c9bae36706049574 -
Branch / Tag:
refs/tags/3.0.0 - Owner: https://github.com/600apples
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@d0c79b28501f81767fb4b942c9bae36706049574 -
Trigger Event:
push
-
Statement type:
File details
Details for the file daffi-3.0.0-cp310-cp310-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: daffi-3.0.0-cp310-cp310-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 3.1 MB
- Tags: CPython 3.10, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9efd5a05afbaec73747fec6feee2addf95e8deb18b5b0227f1dc993c8865a64e
|
|
| MD5 |
8cf8ed59603f35a4d7558c134f21dbe4
|
|
| BLAKE2b-256 |
d0ba1ff2b5f84fac713c6b030a182d4827092cf08a2217aaf7453cff71d3ea90
|
Provenance
The following attestation bundles were made for daffi-3.0.0-cp310-cp310-manylinux_2_28_x86_64.whl:
Publisher:
wheels.yml on 600apples/daffi
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
daffi-3.0.0-cp310-cp310-manylinux_2_28_x86_64.whl -
Subject digest:
9efd5a05afbaec73747fec6feee2addf95e8deb18b5b0227f1dc993c8865a64e - Sigstore transparency entry: 1854024317
- Sigstore integration time:
-
Permalink:
600apples/daffi@d0c79b28501f81767fb4b942c9bae36706049574 -
Branch / Tag:
refs/tags/3.0.0 - Owner: https://github.com/600apples
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@d0c79b28501f81767fb4b942c9bae36706049574 -
Trigger Event:
push
-
Statement type:
File details
Details for the file daffi-3.0.0-cp310-cp310-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: daffi-3.0.0-cp310-cp310-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 2.9 MB
- Tags: CPython 3.10, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
de4d50f43a8e7012e2063f87ac2657d91e786899da7fea020fda78cdc42053c2
|
|
| MD5 |
59b5826a190b3c7a6ad0aefa7f12a5de
|
|
| BLAKE2b-256 |
abeb8554cd518138aa3185e709656dab981832e7cc165b43af375acfac2dda78
|
Provenance
The following attestation bundles were made for daffi-3.0.0-cp310-cp310-manylinux_2_28_aarch64.whl:
Publisher:
wheels.yml on 600apples/daffi
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
daffi-3.0.0-cp310-cp310-manylinux_2_28_aarch64.whl -
Subject digest:
de4d50f43a8e7012e2063f87ac2657d91e786899da7fea020fda78cdc42053c2 - Sigstore transparency entry: 1854023824
- Sigstore integration time:
-
Permalink:
600apples/daffi@d0c79b28501f81767fb4b942c9bae36706049574 -
Branch / Tag:
refs/tags/3.0.0 - Owner: https://github.com/600apples
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@d0c79b28501f81767fb4b942c9bae36706049574 -
Trigger Event:
push
-
Statement type:
File details
Details for the file daffi-3.0.0-cp310-cp310-macosx_13_0_arm64.whl.
File metadata
- Download URL: daffi-3.0.0-cp310-cp310-macosx_13_0_arm64.whl
- Upload date:
- Size: 2.8 MB
- Tags: CPython 3.10, macOS 13.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2e8ed5f60e33c2d0890ab6e1d46cf712a1603508edbea0cdcb9ca5c50f254ca8
|
|
| MD5 |
8cfbadb17fb8da9e277856222aeff7fb
|
|
| BLAKE2b-256 |
0e79a0e60e3eff4d6d3de70e57d1551a7159be7a6e525f11d6344b8cdfe95403
|
Provenance
The following attestation bundles were made for daffi-3.0.0-cp310-cp310-macosx_13_0_arm64.whl:
Publisher:
wheels.yml on 600apples/daffi
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
daffi-3.0.0-cp310-cp310-macosx_13_0_arm64.whl -
Subject digest:
2e8ed5f60e33c2d0890ab6e1d46cf712a1603508edbea0cdcb9ca5c50f254ca8 - Sigstore transparency entry: 1854024175
- Sigstore integration time:
-
Permalink:
600apples/daffi@d0c79b28501f81767fb4b942c9bae36706049574 -
Branch / Tag:
refs/tags/3.0.0 - Owner: https://github.com/600apples
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@d0c79b28501f81767fb4b942c9bae36706049574 -
Trigger Event:
push
-
Statement type: