Skip to main content

A powerful Python workflow orchestration framework with advanced resource management and observability

Project description

PuffinFlow

The fast LangGraph alternative. Rust core. Python simplicity.

PyPI version Python versions License: MIT

2x lower latency · 1.7x higher throughput · 4x faster import · Same features, simpler code


Why PuffinFlow?

LangGraph is the go-to framework for building AI agent workflows. But it's slow, complex, and the API fights you at every step. PuffinFlow gives you the same capabilities — Command, Send, reducers, streaming, persistent memory, subgraphs — with a Rust-backed core that's measurably faster.

LangGraph sequential 5-step:    2.5 ms
PuffinFlow sequential 5-step:   1.3 ms  (2x faster)

LangGraph throughput:            680 wf/sec
PuffinFlow throughput:         1,150 wf/sec  (1.7x higher)

LangGraph cold import:          1,000 ms
PuffinFlow cold import:           252 ms  (4x faster)

Full benchmark methodology and results: BENCHMARKS.md

Run the benchmarks yourself: python benchmarks/benchmark.py

Quick Start

pip install puffinflow
from puffinflow import Agent, state, Command

class MyAgent(Agent):
    @state()
    async def think(self, ctx):
        question = ctx.get_variable("question")
        answer = await call_llm(question)
        return Command(update={"answer": answer}, goto="respond")

    @state()
    async def respond(self, ctx):
        ctx.set_output("result", ctx.get_variable("answer"))
        return None  # done

agent = MyAgent("my-agent")
result = await agent.run(initial_context={"variables": {"question": "What is PuffinFlow?"}})
print(result.outputs["result"])

LangGraph vs PuffinFlow

Every LangGraph concept maps directly. If you know LangGraph, you know PuffinFlow.

LangGraph PuffinFlow Notes
StateGraph(State) Agent("name") No schema class needed
graph.add_node("name", fn) agent.add_state("name", fn) or @state() Decorator auto-discovers states
graph.add_edge("a", "b") return "b" from state a Routing is just a return value
graph.add_conditional_edges(...) return "x" if cond else "y" No edge DSL needed
Command(update=, goto=) Command(update=, goto=) Same API
Send("node", payload) Send("state", payload) Same API
Annotation.reducer agent.add_reducer("key", add_reducer) Explicit, not buried in type hints
MemorySaver MemoryStore / SqliteStore Async, namespaced KV store
graph.stream() agent.stream() Async generator with event types
Subgraphs agent.add_subgraph(...) Input/output mapping built in

Side-by-Side: Research Agent

LangGraph (35 lines of boilerplate)

from typing import Annotated
from typing_extensions import TypedDict
from langgraph.graph import StateGraph, START, END
from langgraph.graph.message import add_messages

class State(TypedDict):
    topic: str
    sources: Annotated[list, add_messages]
    summary: str

def research(state: State):
    results = search_web(state["topic"])
    return {"sources": results}

def summarize(state: State):
    summary = call_llm(f"Summarize: {state['sources']}")
    return {"summary": summary}

def route(state: State):
    if len(state["sources"]) > 3:
        return "summarize"
    return "research"

graph = StateGraph(State)
graph.add_node("research", research)
graph.add_node("summarize", summarize)
graph.add_edge(START, "research")
graph.add_conditional_edges("research", route)
graph.add_edge("summarize", END)
app = graph.compile()
result = app.invoke({"topic": "quantum computing"})

PuffinFlow (16 lines, same result)

from puffinflow import Agent, state, Command

class Researcher(Agent):
    @state()
    async def research(self, ctx):
        results = await search_web(ctx.get_variable("topic"))
        if len(results) > 3:
            return Command(update={"sources": results}, goto="summarize")
        return Command(update={"sources": results}, goto="research")

    @state()
    async def summarize(self, ctx):
        summary = await call_llm(f"Summarize: {ctx.get_variable('sources')}")
        ctx.set_output("summary", summary)
        return None

agent = Researcher("researcher")
result = await agent.run(initial_context={"variables": {"topic": "quantum computing"}})

No StateGraph, no TypedDict, no add_edge, no START/END constants, no compile(). Just Python.

Features

Command Pattern — Unified State Updates and Routing

States return a Command that combines data writes and routing in one value:

@state()
async def decide(self, ctx):
    result = await analyze(ctx.get_variable("input"))
    return Command(
        update={"analysis": result, "confidence": 0.95},
        goto="act" if result.confident else "gather_more"
    )

Send API — Dynamic Fan-Out

Dispatch different payloads to parallel branches of the same state. True map-reduce:

from puffinflow import Send

@state()
async def scatter(self, ctx):
    documents = ctx.get_variable("documents")
    return [Send("process_doc", {"doc": doc}) for doc in documents]

@state()
async def process_doc(self, ctx):
    doc = ctx.get_variable("doc")
    summary = await summarize(doc)
    return Command(update={"summaries": [summary]})

Reducers — Safe Parallel Merging

When parallel branches write the same key, reducers merge correctly instead of clobbering:

from puffinflow import add_reducer

agent = MyAgent("agent")
agent.add_reducer("summaries", add_reducer)  # list concat

# Now both branches writing to "summaries" get merged: [summary1, summary2, ...]

Built-in reducers: add_reducer (list concat, number add, dict merge), append_reducer, replace_reducer. Or write your own:

agent.add_reducer("scores", lambda old, new: max(old, new))

Streaming — Real-Time Output

Stream events as they happen. Tokens, state transitions, custom events:

async for event in agent.stream():
    if event.event_type == "token":
        print(event.data["token"], end="", flush=True)
    elif event.event_type == "node_complete":
        print(f"\n[{event.state_name} done]")

Emit tokens from inside a state:

@state()
async def generate(self, ctx):
    full_text = ""
    for chunk in llm.stream("Write a poem"):
        ctx.emit_token(chunk)
        full_text += chunk
    return Command(update={"poem": full_text})

Store API — Persistent Agent Memory

Key-value store that survives across runs. Namespace-scoped. Async:

from puffinflow import MemoryStore

store = MemoryStore()  # or SqliteStore("agent.db") for persistence
agent = MyAgent("agent", store=store)

@state()
async def remember(self, ctx):
    # Save user preferences
    await ctx.store.put(("users", "alice"), "prefs", {"theme": "dark"})
    return "recall"

@state()
async def recall(self, ctx):
    item = await ctx.store.get(("users", "alice"), "prefs")
    # item.value == {"theme": "dark"}

Subgraph Composition — Modular Agent Pipelines

Compose agents into larger pipelines. Each child agent is a black box:

researcher = ResearchAgent("research")
writer = WriterAgent("writer")

class Pipeline(Agent):
    def __init__(self):
        super().__init__("pipeline")

        self.add_subgraph("research", researcher,
            input_map={"topic": "query"},
            output_map={"findings": "research_results"})

        self.add_subgraph("write", writer,
            input_map={"research_results": "content"},
            output_map={"draft": "article"},
            dependencies=["research"])

result = await Pipeline().run(
    initial_context={"variables": {"topic": "AI agents"}}
)
print(result.variables["article"])

Plus Everything You Need for Production

  • Resource management — Declare CPU/memory/GPU per state: @state(cpu=4.0, memory=2048.0)
  • Retry policies — Exponential backoff with jitter, dead letter queues
  • Circuit breakers — Three-state failure protection per agent
  • Bulkheads — Concurrency isolation between states
  • Checkpointing — Save/restore agent state mid-execution
  • Multi-agent teamsAgentTeam, AgentPool, AgentOrchestrator
  • Observability — OpenTelemetry tracing, Prometheus metrics, alerting

Performance

Orchestration overhead measured with identical sum(i*i for i in range(5000)) workloads. Only framework overhead differs. Median of 20 runs.

Lightweight frameworks (async/graph-based)

Test PuffinFlow LangGraph LlamaIndex
Sequential 3-step 0.7 ms 1.5 ms 2.0 ms
Sequential 5-step 1.3 ms 2.5 ms 3.0 ms
Per-step overhead 0.3 ms 0.4 ms 0.5 ms
Fan-out (3+1 agg) 1.2 ms 3.4 ms 1.6 ms
Throughput (wf/sec) 1,150 680 430
Peak memory (500 wf) 2.50 MB 4.93 MB 0.67 MB
Import time 252 ms 1,000 ms 1,600 ms

Per-step overhead = (5-step − 3-step) / 2. Import time measures from pkg import ... with real symbols in a cold subprocess, Python startup subtracted.

pip install puffinflow langgraph llama-index-core
python benchmarks/benchmark.py

Install

pip install puffinflow                                    # Core (includes Rust engine)
pip install puffinflow[performance]                       # + profiling/benchmark tools
pip install puffinflow[observability]                     # + OpenTelemetry/Prometheus
pip install puffinflow[all]                               # Everything
pip install "puffinflow[dev]"                             # + test/lint tools

Examples

See examples/ for runnable code:

Contributing

We welcome contributions. See CONTRIBUTING.md for details.

License

MIT License. Free for commercial and personal use.


Examples · Benchmarks · Issues · Discussions

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

puffinflow-2.1.0.tar.gz (646.8 kB view details)

Uploaded Source

Built Distributions

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

puffinflow-2.1.0-cp313-cp313-win_amd64.whl (330.0 kB view details)

Uploaded CPython 3.13Windows x86-64

puffinflow-2.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (415.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

puffinflow-2.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (404.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

puffinflow-2.1.0-cp313-cp313-macosx_11_0_arm64.whl (391.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

puffinflow-2.1.0-cp313-cp313-macosx_10_12_x86_64.whl (403.4 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

puffinflow-2.1.0-cp312-cp312-win_amd64.whl (330.4 kB view details)

Uploaded CPython 3.12Windows x86-64

puffinflow-2.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (416.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

puffinflow-2.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (404.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

puffinflow-2.1.0-cp312-cp312-macosx_11_0_arm64.whl (391.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

puffinflow-2.1.0-cp312-cp312-macosx_10_12_x86_64.whl (403.8 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

puffinflow-2.1.0-cp311-cp311-win_amd64.whl (329.3 kB view details)

Uploaded CPython 3.11Windows x86-64

puffinflow-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (415.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

puffinflow-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (403.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

puffinflow-2.1.0-cp311-cp311-macosx_11_0_arm64.whl (391.3 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

puffinflow-2.1.0-cp311-cp311-macosx_10_12_x86_64.whl (403.0 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

puffinflow-2.1.0-cp310-cp310-win_amd64.whl (329.6 kB view details)

Uploaded CPython 3.10Windows x86-64

puffinflow-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (415.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

puffinflow-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (404.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

puffinflow-2.1.0-cp310-cp310-macosx_11_0_arm64.whl (391.5 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

puffinflow-2.1.0-cp310-cp310-macosx_10_12_x86_64.whl (403.2 kB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

puffinflow-2.1.0-cp39-cp39-win_amd64.whl (330.0 kB view details)

Uploaded CPython 3.9Windows x86-64

puffinflow-2.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (415.7 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

puffinflow-2.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (404.6 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

puffinflow-2.1.0-cp39-cp39-macosx_11_0_arm64.whl (392.1 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

puffinflow-2.1.0-cp39-cp39-macosx_10_12_x86_64.whl (403.6 kB view details)

Uploaded CPython 3.9macOS 10.12+ x86-64

File details

Details for the file puffinflow-2.1.0.tar.gz.

File metadata

  • Download URL: puffinflow-2.1.0.tar.gz
  • Upload date:
  • Size: 646.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for puffinflow-2.1.0.tar.gz
Algorithm Hash digest
SHA256 a2f98c70f95a4709900cbc6671ae00717688458bbfffd27e066b6caf6d47161b
MD5 6496453492068aada4874be9e2c0a15c
BLAKE2b-256 a5f1bb456ccc779785583f24b5e1db745a1756a5c7df0e038ce841177cd3f82c

See more details on using hashes here.

Provenance

The following attestation bundles were made for puffinflow-2.1.0.tar.gz:

Publisher: ci-cd.yml on Puffinflow-io/puffinflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file puffinflow-2.1.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: puffinflow-2.1.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 330.0 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for puffinflow-2.1.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 e1c94b9c86d82dc4c70a68de48b2df02c0ce88a8735a5814e7acefd05902939f
MD5 9b741afe429b7df6cd06fe0b7c6b7ecf
BLAKE2b-256 f06d88f6626d87d08dbafcb78bafeffde306f0c4ac9b9f42e7f0e240795b6616

See more details on using hashes here.

Provenance

The following attestation bundles were made for puffinflow-2.1.0-cp313-cp313-win_amd64.whl:

Publisher: ci-cd.yml on Puffinflow-io/puffinflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file puffinflow-2.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for puffinflow-2.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7a5cbbf03d97b85fec547b0531d4994bd459d0ab5e4b077bba1d1d089f285453
MD5 31411b2a5314be47d8533d6519061d5a
BLAKE2b-256 4f67acfdc960be99a7a5f52067e1ab45f4664523096940804e4be07425a717d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for puffinflow-2.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: ci-cd.yml on Puffinflow-io/puffinflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file puffinflow-2.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for puffinflow-2.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9c72100f404b6c07b58a2d78ecf424636fa1e90c0f3bf72bf0489a5248eb9119
MD5 45d4523d3bbd8b51d77456c93148aae1
BLAKE2b-256 139d35db12ce81d70c34103c664154538922a1e81a9b92fae0d517a51cac525a

See more details on using hashes here.

Provenance

The following attestation bundles were made for puffinflow-2.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: ci-cd.yml on Puffinflow-io/puffinflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file puffinflow-2.1.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for puffinflow-2.1.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 13996a197ed76187e1e93a049a3be18735da8914c9eeb07d176d967a221963f0
MD5 d025dd23b9f97b8726b42a390ae67467
BLAKE2b-256 738406b146a8bfb4a12c8a2ae691d82b8f3a68dd05be0b1a00cefac33779ea54

See more details on using hashes here.

Provenance

The following attestation bundles were made for puffinflow-2.1.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: ci-cd.yml on Puffinflow-io/puffinflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file puffinflow-2.1.0-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for puffinflow-2.1.0-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 fa2719eacb43bb26f97b7105965928a3ff9ba44d82ca6665574e11d0f0f497d5
MD5 06661ee4a1e8c16ac5a11f10f5ed6bdc
BLAKE2b-256 38b0dcff5eeab5300da7d781e10704a007c4cda3a4decf5bddf5b70e1743a554

See more details on using hashes here.

Provenance

The following attestation bundles were made for puffinflow-2.1.0-cp313-cp313-macosx_10_12_x86_64.whl:

Publisher: ci-cd.yml on Puffinflow-io/puffinflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file puffinflow-2.1.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: puffinflow-2.1.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 330.4 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for puffinflow-2.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 feca0dcb736236b246f1737cea796e98c9b05d93bd13b63e7540733807cfa4ca
MD5 54abc984be930091d70574b1f0078206
BLAKE2b-256 ad628a0b333729e9dcd1af88a763f14b2a3bfc13af308698c7b01fd7ff34accc

See more details on using hashes here.

Provenance

The following attestation bundles were made for puffinflow-2.1.0-cp312-cp312-win_amd64.whl:

Publisher: ci-cd.yml on Puffinflow-io/puffinflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file puffinflow-2.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for puffinflow-2.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 455465bd7f2e4cacaaa025b147f25148fe1dea734fbdf92c018f7d44af7a4cd7
MD5 fa3752091f8ec0a4db6a430302226721
BLAKE2b-256 edd55833c2852be499b29aa17747b21711300cc3436569ac4f98078903420665

See more details on using hashes here.

Provenance

The following attestation bundles were made for puffinflow-2.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: ci-cd.yml on Puffinflow-io/puffinflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file puffinflow-2.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for puffinflow-2.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 956f1efd70f3d50545ef26faa360953751eb4bcbc807e967aeaa6527c6c97f77
MD5 92099757f3950acdf43b59638312d462
BLAKE2b-256 d5dac69b93465397c1f984cdb49df70aac46bddfc7953fa220241674290e6fdc

See more details on using hashes here.

Provenance

The following attestation bundles were made for puffinflow-2.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: ci-cd.yml on Puffinflow-io/puffinflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file puffinflow-2.1.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for puffinflow-2.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 06ebd63f96528aab82a762ea5ade92669ed7be51d48f58e5fb57c51de1e7904d
MD5 4da2250fe20b094f8c950fad8905b06a
BLAKE2b-256 6931598359aa18ab4e768f266f0418a60214f4c102fa8d9f6634b8e2ad988beb

See more details on using hashes here.

Provenance

The following attestation bundles were made for puffinflow-2.1.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: ci-cd.yml on Puffinflow-io/puffinflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file puffinflow-2.1.0-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for puffinflow-2.1.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c38482ca2b6c4ffc2807fb2b818fced43a3c1da45708e0f13be0e7a445dd49ca
MD5 ad595e3c8a16179043361c347ac03918
BLAKE2b-256 7a71339768ac9d55fe0d35ab026a5fa5f22e13454ae259be17b98729370bff15

See more details on using hashes here.

Provenance

The following attestation bundles were made for puffinflow-2.1.0-cp312-cp312-macosx_10_12_x86_64.whl:

Publisher: ci-cd.yml on Puffinflow-io/puffinflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file puffinflow-2.1.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: puffinflow-2.1.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 329.3 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for puffinflow-2.1.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a9ba227d44f7b977b9bf8f0b913a39daa62a3354e41d024c1ae698879908d64e
MD5 a2612702d7384100b1c9b3e765ae4df5
BLAKE2b-256 dccdfb0ecfb5187c3e9e887f3096f431736b81bba7cdbb3b6b6907bbc8f6f29e

See more details on using hashes here.

Provenance

The following attestation bundles were made for puffinflow-2.1.0-cp311-cp311-win_amd64.whl:

Publisher: ci-cd.yml on Puffinflow-io/puffinflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file puffinflow-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for puffinflow-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9d13f6d5373073f7c3badb66fe580c506d9672341aa12109751015dcd6ab3ed7
MD5 ba43d0ac9ed54a00934f82bab94032d5
BLAKE2b-256 018542f5dfd29d38928d4897489a50ea15fef94e3e7664dd05cd14d86b7d4aab

See more details on using hashes here.

Provenance

The following attestation bundles were made for puffinflow-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: ci-cd.yml on Puffinflow-io/puffinflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file puffinflow-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for puffinflow-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 841edf53beb44b46cf1e4c549bed5550dd39bd0b8c73623d01044bd9cfd32f5f
MD5 b63d6f2b2f1865b324d79bc3adbc821f
BLAKE2b-256 238f8df074bcae0fefd12ee64c365192c8784b1056274449b8b60fa171590e3a

See more details on using hashes here.

Provenance

The following attestation bundles were made for puffinflow-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: ci-cd.yml on Puffinflow-io/puffinflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file puffinflow-2.1.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for puffinflow-2.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 af55de3b508cde5ed2ab932f9f2b73da6998a7606797f6af14f66d3d73249565
MD5 cf219a9436ff5dc07e1848d834295af5
BLAKE2b-256 54e6eef5526ec7d3fe543351199309ed49977b3d332e16d56553819f607be56f

See more details on using hashes here.

Provenance

The following attestation bundles were made for puffinflow-2.1.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: ci-cd.yml on Puffinflow-io/puffinflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file puffinflow-2.1.0-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for puffinflow-2.1.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 400b75e9bdf0ecdf66f0158da7bdfccc1f70099dd1cd51a5defb870c24f15273
MD5 f9fb9d709bd0fb61801a07cc74c4ec16
BLAKE2b-256 10e5243d30b52b171028847dccb0f4ef515bce1f6a5c024f58ec09d32e6c0009

See more details on using hashes here.

Provenance

The following attestation bundles were made for puffinflow-2.1.0-cp311-cp311-macosx_10_12_x86_64.whl:

Publisher: ci-cd.yml on Puffinflow-io/puffinflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file puffinflow-2.1.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: puffinflow-2.1.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 329.6 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for puffinflow-2.1.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 0ac0b67ea3f83220491065ecb000097e3f9fa404e64dd950b8f19e7aa7ea3442
MD5 657cf6db6a7b980d85b7f2fdc7937597
BLAKE2b-256 a64a62c6160bb91a4419f4ef17a7fc996fc9ba0bde43482185c06ae7fb163a29

See more details on using hashes here.

Provenance

The following attestation bundles were made for puffinflow-2.1.0-cp310-cp310-win_amd64.whl:

Publisher: ci-cd.yml on Puffinflow-io/puffinflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file puffinflow-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for puffinflow-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 893cda5805b00966d6a09fd611edb652b5c3984acabd4cebb7425f6147a0d4cf
MD5 93d9b4727fad06eb411ee0d54f3e7025
BLAKE2b-256 e5a5d5dd2927d2923e22ce3a742b98e452eee697f17bfec9bf88ba67f470b2ee

See more details on using hashes here.

Provenance

The following attestation bundles were made for puffinflow-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: ci-cd.yml on Puffinflow-io/puffinflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file puffinflow-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for puffinflow-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ed77256cec7ab79ada14d772d09fab06479bc27c22eb91a4352266f9f471bec2
MD5 6b836d71a95ec0ac5886e892630d1932
BLAKE2b-256 7beb6ad3314dd465b45884c128b8244b7cb25fedb6dd5e3bb6646d64d727bc56

See more details on using hashes here.

Provenance

The following attestation bundles were made for puffinflow-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: ci-cd.yml on Puffinflow-io/puffinflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file puffinflow-2.1.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for puffinflow-2.1.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fe3d16a57dfa9ed2a56c8b87f7d719454bb00a6c06cbd4ca047d9fd9ea2e6158
MD5 ab904265395f1066c601f240c7f06fb1
BLAKE2b-256 a92c217b9bd9714910eef7e1461640a499b6a23d7493319443c6c51574fbbae9

See more details on using hashes here.

Provenance

The following attestation bundles were made for puffinflow-2.1.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: ci-cd.yml on Puffinflow-io/puffinflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file puffinflow-2.1.0-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for puffinflow-2.1.0-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 aabdc8c5cfc507feda22998d929b9ea9391afeab19b6a655063f58b0cb238df6
MD5 4288c3658a5435fb4712ecf9a75b2327
BLAKE2b-256 302abbe93d05e224d6b5eb3eb8ce1134b435ae4f7ae06e45c0f9b84a3f02e723

See more details on using hashes here.

Provenance

The following attestation bundles were made for puffinflow-2.1.0-cp310-cp310-macosx_10_12_x86_64.whl:

Publisher: ci-cd.yml on Puffinflow-io/puffinflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file puffinflow-2.1.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: puffinflow-2.1.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 330.0 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for puffinflow-2.1.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 ed97a650c0f7520433b6a3e5cb45d15f678c3b7a3ebc9d9c9e08c9bd059f0f1f
MD5 d6bf98dfd95d2b82e1ab84de150b4988
BLAKE2b-256 d6e1fb9fa1a8b7eef8c49b2a19fec2b8ad489bc43e1aae880c4f392bd4e3a040

See more details on using hashes here.

Provenance

The following attestation bundles were made for puffinflow-2.1.0-cp39-cp39-win_amd64.whl:

Publisher: ci-cd.yml on Puffinflow-io/puffinflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file puffinflow-2.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for puffinflow-2.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 18ee71733422a2b1e07c8af16beecb6871df5627b0a06ff8d3107b8e4ee3aac2
MD5 1942f145dea5eb8f576bee4f73122895
BLAKE2b-256 01be7675d2a4e77bee06d2802c06f7dd6d60d73ae8cc5ba0ad2fbab7708fbfcc

See more details on using hashes here.

Provenance

The following attestation bundles were made for puffinflow-2.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: ci-cd.yml on Puffinflow-io/puffinflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file puffinflow-2.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for puffinflow-2.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 70cec126c2c56c24322712da0722fce5ea72b31847ab1077115296b433fda5c1
MD5 b0b86a516a03b9af746d9247fcf7daca
BLAKE2b-256 5ebc35bd05424ca05c94be0640401926b63fe0a312bbe48ba5180ce19ba9a8c7

See more details on using hashes here.

Provenance

The following attestation bundles were made for puffinflow-2.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: ci-cd.yml on Puffinflow-io/puffinflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file puffinflow-2.1.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for puffinflow-2.1.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b4b758d93689c6430c8a46e30f209ea1d657b41e436749d253bc32e66157e8b3
MD5 fa59aadd6185abfc8fa8d5293c829a7b
BLAKE2b-256 c1c63cd7b6d179fbc6c3d2fd3194df3499346dd38404d681e5f4f05b0f82fc2e

See more details on using hashes here.

Provenance

The following attestation bundles were made for puffinflow-2.1.0-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: ci-cd.yml on Puffinflow-io/puffinflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file puffinflow-2.1.0-cp39-cp39-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for puffinflow-2.1.0-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b2fc7f3abf349bd65cbb5eb7623175bec460700317db3518478193880f7c33e2
MD5 b83d19f88587a2a97b9f0012dcd42e28
BLAKE2b-256 d5afca855ad56ff6a8f9329c6a609d894df22a506bd513d7bddce7ce012e9d99

See more details on using hashes here.

Provenance

The following attestation bundles were made for puffinflow-2.1.0-cp39-cp39-macosx_10_12_x86_64.whl:

Publisher: ci-cd.yml on Puffinflow-io/puffinflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page