Skip to main content

Python reader/writer for the Lastra columnar time series format. Bit-exact compatible with QTSurfer/lastra-java + lastra-ts.

Project description

Lastra

CI PyPI License

Python reader/writer for the Lastra columnar time series format.
Bit-exact compatibility with lastra-java and lastra-ts.


Status

0.8.0 — first published release, aligned with lastra-java 0.8.0. Reader and writer are feature-complete; the wire-format spec lives in FORMAT.md.

Install

pip install lastra

Usage

from lastra import LastraReader

with open("ohlcv.lastra", "rb") as f:
    r = LastraReader.from_stream(f)

    # Read only what you need — other columns are not decompressed
    ts = r.read_series_long("ts")        # numpy int64 array
    close = r.read_series_double("close") # numpy float64 array

    # Column metadata
    meta = r.get_series_column("ema1").metadata
    # {"indicator": "ema", "periods": "10"}

    # Events (independent timestamps)
    sig_ts = r.read_event_long("ts")
    sig_data = r.read_event_binary("data")  # list[bytes | None]

Pandas / Polars / Arrow adapters (planned for 0.9):

df = LastraReader(f).to_pandas()      # all series columns
pl_df = LastraReader(f).to_polars()
table = LastraReader(f).to_arrow()

Why Lastra

Lastra is a columnar file format optimised for numeric time series — financial tick data, IoT sensors, infrastructure metrics. It applies semantic compression per column:

  • ALP: decimal-aware → ~3-4 bits/value for prices at 2 decimal places
  • Pongo: decimal erasure + Gorilla XOR → ~18 bits/value
  • Gorilla: XOR for volatile metrics
  • DELTA_VARINT: ~1 byte/value for regular timestamps

A typical OHLCV column at 2 decimal places compresses to ~13× the raw size — about 2× better than Apache Parquet (SNAPPY) or ORC for the same data. See the lastra-java README for benchmarks.

Reference implementations

Language Repo Status
Java QTSurfer/lastra-java Reference (writer + reader)
TypeScript QTSurfer/lastra-ts Reader feature-complete
Python QTSurfer/lastra-py This repo

Conversion to/from Parquet, CSV, Arrow

See QTSurfer/lastra-convert-py — Python CLI port of the QTSurfer/lastra-convert (Java) tool.

License

Copyright 2026 Wualabs LTD. Apache License 2.0 — see LICENSE.

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

lastra-0.8.1.tar.gz (41.7 kB view details)

Uploaded Source

Built Distribution

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

lastra-0.8.1-py3-none-any.whl (34.6 kB view details)

Uploaded Python 3

File details

Details for the file lastra-0.8.1.tar.gz.

File metadata

  • Download URL: lastra-0.8.1.tar.gz
  • Upload date:
  • Size: 41.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lastra-0.8.1.tar.gz
Algorithm Hash digest
SHA256 635ae2212d5423b957164ef5d839f62d5e957ceec9b3e3eb4b97db9d55e3270a
MD5 a17ccbb43c98d26a905098ddfdd1d5bb
BLAKE2b-256 26cdbfe3d4129b3125d1605856ec92a366c7d5eb5141436f34bddb3e9d931f78

See more details on using hashes here.

Provenance

The following attestation bundles were made for lastra-0.8.1.tar.gz:

Publisher: release.yml on QTSurfer/lastra-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lastra-0.8.1-py3-none-any.whl.

File metadata

  • Download URL: lastra-0.8.1-py3-none-any.whl
  • Upload date:
  • Size: 34.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lastra-0.8.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d76a101e8223a3a5a41567eaca8a26914bd85806cfd92f2b42b68bddf56b20c5
MD5 ee58599789840d41bef720139fc65560
BLAKE2b-256 fc0c021c2f1e4ea800ee0e16d69c9588ecb43c2fc5a508be8b5bb1ceb2365e93

See more details on using hashes here.

Provenance

The following attestation bundles were made for lastra-0.8.1-py3-none-any.whl:

Publisher: release.yml on QTSurfer/lastra-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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