Skip to main content

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.

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(0, 10)
        .map(lambda x: x * 3)
        .filter(lambda x: x > 10)
        .to_mat(datum.Sink.collect())
    )
    completion = graph.run(runtime)
    print(completion.wait())

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


Download files

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

Source Distribution

datum_stream-0.10.4.tar.gz (719.1 kB view details)

Uploaded Source

Built Distributions

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

datum_stream-0.10.4-cp313-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.4 MB view details)

Uploaded CPython 3.13+manylinux: glibc 2.17+ x86-64

datum_stream-0.10.4-cp313-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (7.5 MB view details)

Uploaded CPython 3.13+manylinux: glibc 2.17+ ARM64

File details

Details for the file datum_stream-0.10.4.tar.gz.

File metadata

  • Download URL: datum_stream-0.10.4.tar.gz
  • Upload date:
  • Size: 719.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for datum_stream-0.10.4.tar.gz
Algorithm Hash digest
SHA256 9bffa18801bbcf1380db451fdee3cf54069e151a2729fe83de3fa1e6e926f30f
MD5 e141e45184242687d78d1f09430298e8
BLAKE2b-256 30f450fb641065530096c998cfe1b7ea06d5c420df39280f0b2cad9b57b3296a

See more details on using hashes here.

File details

Details for the file datum_stream-0.10.4-cp313-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for datum_stream-0.10.4-cp313-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9a4954e676b6537b8335ad5297633985af570c1cfbc27933da4ffc3378ba04fc
MD5 8c600a86f57943f0dd7fcb594c77f671
BLAKE2b-256 08c1ba5e1a1b4988a4507a312fb84d08d7e42cb77b86ed3259f22e7ba714b056

See more details on using hashes here.

File details

Details for the file datum_stream-0.10.4-cp313-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for datum_stream-0.10.4-cp313-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 64285bb66738d4c0daeba24ffa71fe10952a693d5df2adfbae1455ea42907ac8
MD5 ac43407d2aee24bb90f54cb9105bd07e
BLAKE2b-256 0d302e0d4146ec6253cdf9ff8abefa8e0989cf90a3ed64f16aacedb003bb08c0

See more details on using hashes here.

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