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
- Decide if the project fits your workload
- Append files incrementally
- Register and join tables
- Use SQL parameters
- Stream query results
- Configure native logging
- Configure notebook display
- Read the API reference
- Troubleshoot common problems
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)
| File | Size | Uploaded | |
|---|---|---|---|
| timeseries_table_format-0.8.0.tar.gz | 595.6 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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