Skip to main content

without-dag

Concurrent execution of DAG-shaped async workflows, liftable into a without Processor. A Processor[In, Out] is otherwise an opaque stream-to-stream closure; this package lets the inside of a per-event step be a graph of async sub-steps that run with bounded concurrency and recombine into one output. It is the value-level fan-out/fan-in the substrate leaves room for: one input value drives many concurrent computations.

Graph is the typed frontend: a builder that threads value types through the wiring so a mismatched dependency is a mypy error and a cycle is unrepresentable. It compiles once into a CompiledGraph, an async callable reused per event:

from without_dag import Graph


async def fetch(request: Request) -> Fetched: ...
async def parse(fetched: Fetched) -> Parsed: ...
async def render(fetched: Fetched, parsed: Parsed) -> Report: ...


graph, (request,) = Graph.of(Request)
fetched = graph.node("fetched", fetch, request)
parsed = graph.node("parsed", parse, fetched)
report = graph.node("report", render, fetched, parsed)
run = graph.build(output=report, limit=4)

result: Report = await run(some_request)

Each node runs once (memoized, so a diamond's shared ancestor executes a single time with no glitch), acyclicity is proven at the boundary via stdlib graphlib, and a single-input graph is an async (In) -> Out callable, exactly what from_map lifts into a Processor.

A node's key is a name you choose, so it means the same thing after a crash: run.stream(...) yields each (key, result) as it lands, and handing that mapping back as run(..., checkpoint=...) skips every step it names. Sink the pairs to a Redis hash or a table row under a workflow's idempotency key and the graph is a resumable durable workflow, with no engine underneath it. Resumable is a claim about one runner over time: running the same workflow from two processes at once needs the store to say who may write, which is a guarantee the store owns rather than the graph.

See the without-dag guide (with the API reference) for the full surface: the object-interface execution core (Plan, drive, evaluate), the typed frontend, resuming from a checkpoint, and lifting into a processor.

Metadata

Release files for without-dag 0.0.9

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

Source distribution (sdist)

Source distribution for without-dag 0.0.9
File Size Uploaded
without_dag-0.0.9.tar.gz 9.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for without-dag 0.0.9
File Interpreter ABI Platform
without_dag-0.0.9-py3-none-any.whl Python 3 none any Details

Total release size: 21.1 kB

Release files / without_dag-0.0.9.tar.gz

Download URL without_dag-0.0.9.tar.gz
Size 9.7 kB
Tags Source
SHA-256 checksum
How to use checksums
d36ce47e65f3f44a7714a68987c13ac2eeafd61d7b65ea238cb62d5373cb1685
BLAKE2b-256 checksum
How to use checksums
0e026cf8c7aa976bcedcc3027ede45e3950cb299576feb6fbd2d16e272d08905
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.14 {"installer":{"name":"uv","version":"0.12.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / without_dag-0.0.9-py3-none-any.whl

Download URL without_dag-0.0.9-py3-none-any.whl
Size 11.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
eea243ed0351fb0e74f7aa9e1bd49874c7900aa2303c8ddf8de06e6510430ffe
BLAKE2b-256 checksum
How to use checksums
83817a81f5c6d42fbc74ffbbd82692ef174e73161fb89feb0dc855af43b8cb2d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.14 {"installer":{"name":"uv","version":"0.12.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.0.9 This release

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

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