Skip to main content

timeseries-table-format (Python)

Build local time-series tables with immutable Parquet segments. The Python API tracks coverage, rejects overlapping appends, updates selected row values, and queries tables with DataFusion SQL. Query results are returned as pyarrow.Table objects.

Early MVP: APIs and on-disk layouts may change before v1.0.

What it provides

  • Timestamp, Int64, or UInt64 ordered indexes
  • Per-entity index-interval uniqueness within and across appends
  • Local table roots with managed metadata and table-relative Parquet segment paths
  • Dry-run and apply vacuum modes for expired unreferenced table-managed files
  • DataFusion SQL over managed tables and standalone Parquet data
  • Materialized and streaming Arrow result APIs
  • Explicit nullable-column addition through table.add_columns(pyarrow.Schema)
  • Atomic keyed value updates through table.update_rows(source, columns=..., expected_version=...)

The current release supports local filesystems only. It does not yet support object storage, small-file compaction, column dropping/renaming, automatic schema merging, row insertion/deletion through updates, merges, or time-travel queries.

add_columns adds new nullable top-level fields after the first successful append establishes the schema. Historical rows read as null without rewriting data; later appends may omit nullable payload fields while retaining all keys and matching the types/nullability of provided fields. Replace SQL registrations with Session.register_tstable after adding columns. See the guide and runnable example.

update_rows backfills or overwrites selected existing fields using complete entity and raw index keys. Capture the source version before reading and computing assignments; any intervening commit conflicts. The operation consumes Arrow batches incrementally and rewrites affected segments in one transaction. Explicit null clears a nullable destination, and unselected fields remain unchanged. Newly planned SQL queries see value changes without re-registration. See the update guide and runnable example for error handling, report semantics, and scratch/rewrite costs.

Install

pip install timeseries-table-format

The package requires Python 3.10 or later and installs pyarrow automatically. See Installation for supported platforms, Python implementations, and source-build guidance.

Verify the installation

import timeseries_table_format as ttf

result = ttf.Session().sql("SELECT 1 AS value")
assert result.column("value").to_pylist() == [1]

Create, append, and query a table

Assuming prices.parquet contains a Timestamp column named ts and a string column named symbol:

import pyarrow as pa
import pyarrow.parquet as pq
import timeseries_table_format as ttf

table = ttf.TimeSeriesTable.create(
    table_root="prices",
    index_column="ts",
    index_type="timestamp",
    index_granularity="1h",
    entity_columns=["symbol"],
)
parquet_file = pq.ParquetFile("prices.parquet")
report = table.append(
    pa.RecordBatchReader.from_batches(
        parquet_file.schema_arrow,
        parquet_file.iter_batches(),
    )
)
version = report.committed_version

session = ttf.Session()
session.register_tstable("prices", "prices")
result = session.sql("SELECT * FROM prices ORDER BY symbol, ts")

For a complete runnable example, follow Create, append, and query your first table.

Documentation

Contributing

See Develop the Python package for local setup, tests, quality checks, documentation builds, benchmarks, and release guidance.

License

MIT. See the repository license.

Metadata

Release files for timeseries-table-format 0.8.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 timeseries-table-format 0.8.0
File Size Uploaded
timeseries_table_format-0.8.0.tar.gz 595.6 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for timeseries-table-format 0.8.0
File
timeseries_table_format-0.8.0-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details
timeseries_table_format-0.8.0-cp310-abi3-manylinux_2_28_x86_64.whl CPython 3.10 abi3 Linux glibc 2.28+ x86-64 Details
timeseries_table_format-0.8.0-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details
timeseries_table_format-0.8.0-cp310-abi3-macosx_10_12_x86_64.whl CPython 3.10 abi3 macOS 10.12+ x86-64 Details

Total release size: 185.4 MB

Release files / timeseries_table_format-0.8.0.tar.gz

Download URL timeseries_table_format-0.8.0.tar.gz
Size 595.6 kB
Tags Source
SHA-256 checksum
How to use checksums
631b862fa9d4f1801e8d3156a1bcf03740fd7f2e1cb84a0487129a49b183b11d
BLAKE2b-256 checksum
How to use checksums
b805221529138b01b3fc468d1e0948a0e5e357741059bbc9644c9272aab42f4b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / timeseries_table_format-0.8.0-cp310-abi3-win_amd64.whl

Download URL timeseries_table_format-0.8.0-cp310-abi3-win_amd64.whl
Size 44.2 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
281a289c5f0da3da8142c915b5487f7991f91a87c75d13472d36e36d1c989886
BLAKE2b-256 checksum
How to use checksums
0cd9a2c1188c9c0c90fe063ccfff3447274a8e63da6c73cf8eff49ca3c706a1b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / timeseries_table_format-0.8.0-cp310-abi3-manylinux_2_28_x86_64.whl

Download URL timeseries_table_format-0.8.0-cp310-abi3-manylinux_2_28_x86_64.whl
Size 49.5 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
0e65f3df5c0e514b07295d2148fcc1f5eeab7109f28045879db4503b32c1df5f
BLAKE2b-256 checksum
How to use checksums
e1c29510728a265a65a76e70f3f1610313fc58a555984784acb1211a42995742
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / timeseries_table_format-0.8.0-cp310-abi3-macosx_11_0_arm64.whl

Download URL timeseries_table_format-0.8.0-cp310-abi3-macosx_11_0_arm64.whl
Size 44.8 MB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
e349e146618df14c45a86b031d8a2ea29df20671e422e60c80b6dab24eb2e771
BLAKE2b-256 checksum
How to use checksums
6f47abf9a88bc297ffc4e0ccd288873d1aa4d79013c9a7d67021078342b3ef14
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / timeseries_table_format-0.8.0-cp310-abi3-macosx_10_12_x86_64.whl

Download URL timeseries_table_format-0.8.0-cp310-abi3-macosx_10_12_x86_64.whl
Size 46.3 MB
Tags CPython 3.10 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
06f54c40f194019f79d8c252663d3dda3e0aebfe4cb7ffaff33b19fdc308b044
BLAKE2b-256 checksum
How to use checksums
894326b854d10c583aab00afe8284a4dd2ef1e6a9ac99374920f70ca1b992db8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release history Release notifications | RSS feed

0.9.0

5 release files

This release

0.8.0 This release

5 release files

0.7.0

5 release files

0.6.1

5 release files

0.6.0

5 release files

0.5.0

5 release files

0.4.0

5 release files

0.3.0

5 release files

0.1.3

16 release files

0.1.2

16 release files

0.1.1

7 release files

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