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.9.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.9.0
File Size Uploaded
timeseries_table_format-0.9.0.tar.gz 617.4 kB Details

Built distributions (wheels)

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

Total release size: 185.6 MB

Release files / timeseries_table_format-0.9.0.tar.gz

Download URL timeseries_table_format-0.9.0.tar.gz
Size 617.4 kB
Tags Source
SHA-256 checksum
How to use checksums
e0f127c53db38b8355f5150373fef2a42b754f025035d7bc80f4e1f62a2a9bb0
BLAKE2b-256 checksum
How to use checksums
37bfbff903ea4371f7fc222cc65564d54a6c404a3f6e08b8452b93454cd7cdd2
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 Oct 7, 2026.

Transparency log

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

Download URL timeseries_table_format-0.9.0-cp310-abi3-win_amd64.whl
Size 44.3 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
57fa8dc42a74efb1717d2ec2231d1bd12129b9c21e39be05087874be299a46fe
BLAKE2b-256 checksum
How to use checksums
7adea2c28ef5542a0e308e386bd4e4722f5c632aaa1c496a1406c7e75738e21b
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 Oct 7, 2026.

Transparency log

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

Download URL timeseries_table_format-0.9.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
35d5684ac9568314f3dc47c42829bb3ca534ad2822c28b7055fe99028779ee6f
BLAKE2b-256 checksum
How to use checksums
631dd3decb259db0ec554165386a0b4af9e79107c636bbd609945dc73fc86bba
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 Oct 7, 2026.

Transparency log

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

Download URL timeseries_table_format-0.9.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
1deec48b8dbd8b338ff1babf0cca6d82f1696092dc8b8bcb34387d6dad63ce78
BLAKE2b-256 checksum
How to use checksums
198b13e74391f0bb701d8d095682b287dd3bbf8727c242956c973724747327fd
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 Oct 7, 2026.

Transparency log

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

Download URL timeseries_table_format-0.9.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
eca1fb37d9afbdb7dd93c881d13c29ca061e5bf4ded98207647531cb37081d7d
BLAKE2b-256 checksum
How to use checksums
e4c2fb732bd05a9523f1da12ef721063514c7d84ad444f0ee44946bd72d84e59
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 Oct 7, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.9.0 This release

5 release files

0.8.0

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