Python bindings for Datum stream blueprints
Project description
datum-stream
Python bindings for Datum stream blueprints.
Datum mirrors the Source -> Flow -> Sink and GraphDSL vocabulary from the Rust
crate while keeping Python execution explicit: building a pipeline creates an
immutable blueprint, and work starts only when a runnable graph is materialized
with a Runtime.
Install
python -m pip install datum-stream
The package requires Python 3.13 or newer and depends on PyArrow. User Python
code always runs through Arrow UDF batches: integer-stream map, filter, and
flat_map wrap callables into single-column Arrow batches, while map_batches
is the vectorized RecordBatch -> RecordBatch tier.
For scalar integer hot paths, use the named kernels such as map_add,
map_multiply, and filter_greater_than. For Arrow batch streams, use typed
col() expressions for lowerable work and map_batches for arbitrary Python.
Terminal arithmetic is named too: Sink.fold() / Sink.fold_sum() sum values,
and Sink.fold_product() multiplies them. Graph partitions select the typed
PartitionStrategy.MODULO constant.
The package ships PEP 561 stubs (py.typed) with generic Source, Flow,
Sink, RunnableGraph, Inlet, and Outlet types. Public construction is
always strict: graph wiring and declared Arrow schemas are validated during
builder calls, and empty Arrow inputs require an explicit schema=....
Example
import datum
with datum.Runtime() as runtime:
graph = (
datum.Source.range(1, 5)
.map_add(1)
.to_mat(datum.Sink.fold_product())
)
completion = graph.run(runtime)
assert completion.wait() == 120
Scope
The current Python surface covers integer linear streams, a focused GraphDSL
surface (Broadcast, Balance, Merge, Partition, Zip, Concat, and
Interleave), Arrow batch UDFs, and Datum Connect for trusted client/server
execution. Connect can run linear plans, supported junction graphs, tuple
FlowShape results, direct ZipShape runs, and Merge/Concat/Interleave FanInShape
runs. Local Connect defaults to arrow-ipc; remote Arrow payloads should prefer
arrow-ipc-zstd when compression is wanted. Those wire-format defaults were
chosen by measurement.
For the broader guide, see the Datum Python docs in
docs/guides/python.
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 Distribution
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 datum_stream-0.11.0.tar.gz.
File metadata
- Download URL: datum_stream-0.11.0.tar.gz
- Upload date:
- Size: 743.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4dca123b068a19dab9dabef7d89b9ce0d5d6592c066d08130b12f7089fbe54e2
|
|
| MD5 |
26a721387a51e0eb222b9d6c80922fbd
|
|
| BLAKE2b-256 |
44afcb32e253fb8d6159afc6759044d1f58b027d257edd660959bca9ed7f5cf0
|
File details
Details for the file datum_stream-0.11.0-cp313-abi3-manylinux_2_39_x86_64.whl.
File metadata
- Download URL: datum_stream-0.11.0-cp313-abi3-manylinux_2_39_x86_64.whl
- Upload date:
- Size: 7.5 MB
- Tags: CPython 3.13+, manylinux: glibc 2.39+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
923f6e5b76d11c9a5a8e3acb661745ddd0ccd6bb828e28ea10c9537cbcd762ae
|
|
| MD5 |
fd08239736f5b42f795fff03d9bcb348
|
|
| BLAKE2b-256 |
68101eb9c327339aee09cbabcaa3956eb8adbb4a8b1a2d641eaf1fb0620e7efc
|