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, andsequencebecomes a handle onto them there. - Reads are zero-copy.
timestamps,values,spans,to_numpy()andrange()return read-only NumPy arrays over the Rust memory.strvalues 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 asbytearraydoes. Delete the arrays, or copy them withnumpy.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)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| chronoloompy-0.2.0.tar.gz | 25.6 kB | Without provenance | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| 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.