Skip to main content

chronoloompy

Temporal data processing primitives for Python, backed by the chronoloom Rust crate.

pip install chronoloompy
import numpy as np
from chronoloompy import Batch, SequenceSystem, TimeIntervalSequence

machine = SequenceSystem()
temperature = machine.add_points(
    "temperature", np.arange(0, 600, 10), np.full(60, 21.5)
)
machine.add_points("log", [0], ["boot"])
up = machine.add_spans("up", [0, 300], [200, 600])

machine.record_batch(
    Batch().points("temperature", [600], [22.0]).spans("up", [600], [660])
)

temperature.range(100, 200)  # (timestamps, values), as NumPy arrays
idle = up - TimeIntervalSequence("busy", [50], [80])
idle.label  # 'up \\ busy'
idle.spans  # array([[  0,  50], [ 80, 200], [300, 660]])

Intervals are half-open — start is included, end is excluded — and a timeline keeps its spans merged, so touching spans become one.

Memory model

chronoloompy is only an API: every class is implemented in Rust, and the data never moves into Python.

  • Sequences live in Rust. machine["temperature"] is a handle onto the system's member, not a copy. SequenceSystem.insert(sequence) moves the sequence's events in, and sequence becomes a handle onto them there.
  • Reads are zero-copy. timestamps, values, spans, to_numpy() and range() return read-only NumPy arrays over the Rust memory. str values are the exception: NumPy cannot read them in place, so they are copied.
  • Views pin their sequence. While any such array is alive, a change that could move or free the memory under it — recording into that sequence, removing it, replacing it — raises BufferError, just as bytearray does. Delete the arrays, or copy them with numpy.array(view), to change it again. Other members of the same system stay writable.
  • Writes copy once. Building a sequence from NumPy arrays reads them in place and writes the events straight into the core's own layout; sorting and merging then run with the GIL released.

Point sequences carry float64, int64, bool or str values, inferred from the values given or chosen with dtype=.

Relationship to chronoloom

chronoloom is a standalone Rust crate published to crates.io and usable from any Rust project. chronoloompy exposes it through a thin pyo3 binding (rust/): the algebra is implemented once, in chronoloom, and the binding only converts values and guards the memory NumPy reads.

Development

Requires uv and a Rust toolchain (managed automatically via the repo's rust-toolchain.toml if you have rustup installed).

make install   # uv sync -- builds the extension
make fmt       # ruff format + cargo fmt
make lint      # ruff, mypy, cargo fmt --check, clippy
make test      # pytest + cargo test
make build     # release wheel into dist/

The extension rebuilds automatically when rust/**/*.rs, rust/Cargo.toml, or rust/Cargo.lock change — see cache-keys in pyproject.toml. Editing ../chronoloom does not rebuild it: the binding depends on the released crate from crates.io, so a local core change only reaches Python once it is published and rust/Cargo.toml requires that version.

Run make setup from the repository root once to install the git hooks.

License

MIT — see LICENSE.

Metadata

Release files for chronoloompy 0.2.0

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

Source distribution (sdist)

Source distribution for chronoloompy 0.2.0
File Size Uploaded Provenance
chronoloompy-0.2.0.tar.gz 25.6 kB Without provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for chronoloompy 0.2.0
File
chronoloompy-0.2.0-cp312-abi3-win_arm64.whl CPython 3.12 abi3 Windows ARM64 Details
chronoloompy-0.2.0-cp312-abi3-win_amd64.whl CPython 3.12 abi3 Windows x86-64 Details
chronoloompy-0.2.0-cp312-abi3-musllinux_1_2_x86_64.whl CPython 3.12 abi3 Linux musl 1.2+ x86-64 Details
chronoloompy-0.2.0-cp312-abi3-musllinux_1_2_aarch64.whl CPython 3.12 abi3 Linux musl 1.2+ ARM64 Details
chronoloompy-0.2.0-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 abi3 Linux glibc 2.17+ x86-64 Details
chronoloompy-0.2.0-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.12 abi3 Linux glibc 2.17+ ARM64 Details
chronoloompy-0.2.0-cp312-abi3-macosx_11_0_arm64.whl CPython 3.12 abi3 macOS 11.0+ ARM64 Details
chronoloompy-0.2.0-cp312-abi3-macosx_10_12_x86_64.whl CPython 3.12 abi3 macOS 10.12+ x86-64 Details

Total release size: 3.8 MB

Release files / chronoloompy-0.2.0.tar.gz

Download URL chronoloompy-0.2.0.tar.gz
Size 25.6 kB
Tags Source
SHA-256 checksum
How to use checksums
0299b1bbb96680250583effc04d73495c9f68873ad42b9b96ab3daa11ccbfdce
BLAKE2b-256 checksum
How to use checksums
3d119158faaa23d1d4769d5f01c475044ec6ea130ddc746dc004eea331c9687b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","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 / chronoloompy-0.2.0-cp312-abi3-win_arm64.whl

Download URL chronoloompy-0.2.0-cp312-abi3-win_arm64.whl
Size 295.9 kB
Tags CPython 3.12 Windows ARM64 abi3
SHA-256 checksum
How to use checksums
56c1fd624695ca1331a506fefce51a51a78141b588172141c6100f4977e22251
BLAKE2b-256 checksum
How to use checksums
6823f48bf67fbcd72d157ae8e94e3a4f84d9010f1e958549220b1a8cf7be5467
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","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 / chronoloompy-0.2.0-cp312-abi3-win_amd64.whl

Download URL chronoloompy-0.2.0-cp312-abi3-win_amd64.whl
Size 307.9 kB
Tags CPython 3.12 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
4e963ee938af4a0a2f03c8b9d619b17854e464a2717e8ff6f226046b30cbfd1f
BLAKE2b-256 checksum
How to use checksums
e840c52bfe55a8cc3d5bad0041edc05cab7140ce110cc548fc3d9e87350060a5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","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 / chronoloompy-0.2.0-cp312-abi3-musllinux_1_2_x86_64.whl

Download URL chronoloompy-0.2.0-cp312-abi3-musllinux_1_2_x86_64.whl
Size 684.4 kB
Tags CPython 3.12 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
0da20000cc886b630077d0fec7e2c1e6dabf6215e1cb24bab3dfbd807889d816
BLAKE2b-256 checksum
How to use checksums
5556cca978a0e527edd94f86bef54553f58e57f0841027dc88a6fa32a9d0eaad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","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 / chronoloompy-0.2.0-cp312-abi3-musllinux_1_2_aarch64.whl

Download URL chronoloompy-0.2.0-cp312-abi3-musllinux_1_2_aarch64.whl
Size 645.5 kB
Tags CPython 3.12 Linux musl 1.2+ ARM64 abi3
SHA-256 checksum
How to use checksums
6a79513bfa6f06fd5d511968c930bf3a430f96c4f241e8c4a37fe899642e6e61
BLAKE2b-256 checksum
How to use checksums
48fa377af980ed239ae46b7c681a6b4e8a34029165470c12866010bcc9293213
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","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 / chronoloompy-0.2.0-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL chronoloompy-0.2.0-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 478.4 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
3bbc9d1a2ad13a928adcdec3ca479e05a891c16864d17ac3330bcee598a6a7bd
BLAKE2b-256 checksum
How to use checksums
c2d3436d4c5d9044c389c24568a5edf3ca83be71699651988c9f54bf5d19e576
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","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 / chronoloompy-0.2.0-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL chronoloompy-0.2.0-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 468.4 kB
Tags CPython 3.12 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
65654d8bd3a6d49cf7ab431eec32ed3bfd063f6de3e1d9bf5be20e1cd5301961
BLAKE2b-256 checksum
How to use checksums
bafc16529c7832a7efefe63b5ee5402cb99484f12e79c154c9f8e111cf49bb74
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","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 / chronoloompy-0.2.0-cp312-abi3-macosx_11_0_arm64.whl

Download URL chronoloompy-0.2.0-cp312-abi3-macosx_11_0_arm64.whl
Size 424.5 kB
Tags CPython 3.12 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
99278f7100ccc83f429a82b24299c90dfa5bd565522eca02bf4fb26a32473d9c
BLAKE2b-256 checksum
How to use checksums
6b23f56fb8a10470ea2d0b0e99f130437757d43985a6c5c4e77fffb7beab18c9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","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 / chronoloompy-0.2.0-cp312-abi3-macosx_10_12_x86_64.whl

Download URL chronoloompy-0.2.0-cp312-abi3-macosx_10_12_x86_64.whl
Size 440.9 kB
Tags CPython 3.12 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
e715decda47c6472dbed3eaeb3d4199a5ce5bff0d5ec1ca3d4c3af2eee64d524
BLAKE2b-256 checksum
How to use checksums
b38bfd0f4b6cebbd04bf874587335f17b1b0f2a8f343dc55357c1d236dcaca7f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","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}

Security for chronoloompy 0.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.2.0 This release

9 release files No provenance

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