Skip to main content

Append-only time-series table format with gap/overlap tracking (Python bindings).

Project description

timeseries-table-format (Python)

Python-first workflow for managing local, append-only time-series tables stored as Parquet segments on disk, with SQL querying (DataFusion) that returns pyarrow.Table.

v0 is local-filesystem-only (no S3/object storage backend yet).

Install

pip install timeseries-table-format

Requires: Python 3.10+. pyarrow is installed automatically (dependency: pyarrow>=23.0.0). If pip tries to build from source (Rust errors), see Troubleshooting below.

Verify installation

import timeseries_table_format as ttf

out = ttf.Session().sql("select 1 as x")
print(type(out))  # pyarrow.Table

Return type and interop

Session.sql(...) returns a pyarrow.Table.

  • Polars: pip install polars, then polars.from_arrow(out)

Notebook display (Jupyter/IPython)

In IPython/Jupyter (including VS Code notebooks), pyarrow.Table results will display as a bounded HTML preview by default (the return type is still a real pyarrow.Table).

  • Defaults: max_rows=20 (head/tail), max_cols=50 (left/right), max_cell_chars=2000
  • Opt-out: set TTF_NOTEBOOK_DISPLAY=0 before importing timeseries_table_format, or call timeseries_table_format.disable_notebook_display()
  • Configure: call timeseries_table_format.enable_notebook_display(max_rows=..., max_cols=..., max_cell_chars=..., align=...)
  • Config file (TOML): set TTF_NOTEBOOK_CONFIG=path/to/ttf.toml before importing timeseries_table_format (or call timeseries_table_format.load_notebook_display_config("path/to/ttf.toml")) (On Python 3.10, install tomli to enable TOML parsing.)
  • Alignment: align="right" (default) or align="auto" (strings left, numbers right); auto-enable can be configured with TTF_NOTEBOOK_ALIGN=auto|left|right
  • Cells are visually clipped to a bounded column width with an ellipsis indicator; copying a cell copies the underlying value (up to max_cell_chars).

Example ttf.toml:

[notebook_display]
max_rows = 20
max_cols = 50
max_cell_chars = 2000
align = "auto"

Maintainers: releasing the Python package

The PyPI package version is derived from crates/timeseries-table-python/Cargo.toml (via maturin). If you change the pure-Python sources under python/src/ (or python/pyproject.toml / python/README.md), CI will automatically update crates/timeseries-table-python/python-src.stamp on PRs from branches in this repository.

If you need to update it locally (e.g. working on a fork, or before pushing), run:

python3 scripts/update_python_wheel_stamp.py

If your development environment uses the repo venv, you can also run:

python/.venv/bin/python scripts/update_python_wheel_stamp.py

CI enforces the stamp, and it helps the release automation notice python-only changes for version bumps.

Quickstart: create → append → query

import tempfile
from pathlib import Path

import pyarrow as pa
import pyarrow.parquet as pq

import timeseries_table_format as ttf

with tempfile.TemporaryDirectory() as d:
    table_root = Path(d) / "my_table"

    tbl = ttf.TimeSeriesTable.create(
        table_root=str(table_root),
        time_column="ts",
        bucket="1h",
        entity_columns=["symbol"],
        timezone=None,
    )

    seg_path = table_root / "incoming" / "prices.parquet"
    seg_path.parent.mkdir(parents=True, exist_ok=True)

    pq.write_table(
        pa.table(
            {
                "ts": pa.array([0, 3_600 * 1_000_000, 7_200 * 1_000_000], type=pa.timestamp("us")),
                "symbol": pa.array(["NVDA", "NVDA", "NVDA"], type=pa.string()),
                "close": pa.array([10.0, 20.0, 30.0], type=pa.float64()),
            }
        ),
        str(seg_path),
    )

    tbl.append_parquet(str(seg_path))

    sess = ttf.Session()
    sess.register_tstable("prices", str(table_root))

    out = sess.sql("select ts, symbol, close from prices order by ts")
    print(out)  # pyarrow.Table

Bucket size (important): bucket=1h does not resample your data. It defines the time grid used for overlap detection and coverage tracking. Example: with bucket=1h, timestamps 10:05 and 10:55 fall into the same bucket (10:00–11:00). See https://mag1cfrog.github.io/timeseries-table-format/concepts/bucketing_and_overlap/

Join multiple tables

# Aligned with python/examples/register_and_join_two_tables.py
import tempfile
from pathlib import Path

import pyarrow as pa
import pyarrow.parquet as pq

import timeseries_table_format as ttf

with tempfile.TemporaryDirectory() as d:
    base_dir = Path(d)

    prices_root = base_dir / "prices_tbl"
    prices = ttf.TimeSeriesTable.create(
        table_root=str(prices_root),
        time_column="ts",
        bucket="1h",
        entity_columns=["symbol"],
        timezone=None,
    )
    prices_seg = base_dir / "prices.parquet"
    pq.write_table(
        pa.table(
            {
                "ts": pa.array([0, 3_600 * 1_000_000], type=pa.timestamp("us")),
                "symbol": pa.array(["NVDA", "NVDA"], type=pa.string()),
                "close": pa.array([1.0, 2.0], type=pa.float64()),
            }
        ),
        str(prices_seg),
    )
    prices.append_parquet(str(prices_seg))

    volumes_root = base_dir / "volumes_tbl"
    volumes = ttf.TimeSeriesTable.create(
        table_root=str(volumes_root),
        time_column="ts",
        bucket="1h",
        entity_columns=["symbol"],
        timezone=None,
    )
    volumes_seg = base_dir / "volumes.parquet"
    pq.write_table(
        pa.table(
            {
                "ts": pa.array([0, 3_600 * 1_000_000], type=pa.timestamp("us")),
                "symbol": pa.array(["NVDA", "NVDA"], type=pa.string()),
                "volume": pa.array([10, 20], type=pa.int64()),
            }
        ),
        str(volumes_seg),
    )
    volumes.append_parquet(str(volumes_seg))

    sess = ttf.Session()
    sess.register_tstable("prices", str(prices_root))
    sess.register_tstable("volumes", str(volumes_root))

    out = sess.sql(
        """
        select p.ts as ts, p.symbol as symbol, p.close as close, v.volume as volume
        from prices p
        join volumes v
        on p.ts = v.ts and p.symbol = v.symbol
        order by p.ts
        """
    )
    print(out)  # pyarrow.Table

Parameterized queries

DataFusion infers placeholder types from context when possible (e.g. in WHERE clauses). If you use placeholders in a SELECT projection without type context, you may need an explicit cast.

# Aligned with python/examples/parameterized_queries.py
import timeseries_table_format as ttf

sess = ttf.Session()

out_positional = sess.sql(
    "select cast($1 as bigint) as x, cast($2 as varchar) as y",
    params=[1, "hello"],
)
out_named = sess.sql(
    "select cast($a as bigint) as x, cast($b as varchar) as y",
    params={"a": 2, "b": "world"},
)

print(out_positional)
print(out_named)

Building from source (contributors)

Prereqs:

  • Rust toolchain installed
  • Python 3.10+ (CI targets 3.10–3.14; examples below use 3.12)
  • uv installed

From the repo root:

uv venv -p 3.12 python/.venv
uv pip install -p python/.venv/bin/python -e python --group dev
python/.venv/bin/python -m pytest

Alternative: build with maturin directly:

cd python
uv venv -p 3.12 .venv
uv pip install -p .venv/bin/python pyarrow --group dev
uv run -p .venv/bin/python maturin develop -m pyproject.toml
.venv/bin/python -m pytest

Troubleshooting

  • pip is building from source / fails with Rust errors: no wheel is available for your platform/Python; install Rust and retry, or use a supported Python/platform combination.
  • DataFusionError about an unknown table name: call sess.register_tstable("name", "/path/to/table") first; use sess.tables() to list registrations.
  • Append fails with a time column error: the timestamp column must be an Arrow timestamp(...), and the unit should remain consistent across segments (e.g. timestamp("us")).
  • SchemaMismatchError on append: the new Parquet segment schema must match the table's adopted schema (column names and types).
  • SQL errors / parameter placeholders: try an explicit CAST(...) for placeholders used in SELECT projections.

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

timeseries_table_format-0.1.2.tar.gz (228.6 kB view details)

Uploaded Source

Built Distributions

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

timeseries_table_format-0.1.2-cp314-cp314-win_amd64.whl (33.4 MB view details)

Uploaded CPython 3.14Windows x86-64

timeseries_table_format-0.1.2-cp314-cp314-manylinux_2_35_x86_64.whl (37.8 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.35+ x86-64

timeseries_table_format-0.1.2-cp314-cp314-macosx_11_0_arm64.whl (33.2 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

timeseries_table_format-0.1.2-cp313-cp313-win_amd64.whl (33.4 MB view details)

Uploaded CPython 3.13Windows x86-64

timeseries_table_format-0.1.2-cp313-cp313-manylinux_2_35_x86_64.whl (37.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.35+ x86-64

timeseries_table_format-0.1.2-cp313-cp313-macosx_11_0_arm64.whl (33.3 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

timeseries_table_format-0.1.2-cp312-cp312-win_amd64.whl (33.4 MB view details)

Uploaded CPython 3.12Windows x86-64

timeseries_table_format-0.1.2-cp312-cp312-manylinux_2_35_x86_64.whl (37.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.35+ x86-64

timeseries_table_format-0.1.2-cp312-cp312-macosx_11_0_arm64.whl (33.3 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

timeseries_table_format-0.1.2-cp311-cp311-win_amd64.whl (33.4 MB view details)

Uploaded CPython 3.11Windows x86-64

timeseries_table_format-0.1.2-cp311-cp311-manylinux_2_35_x86_64.whl (37.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.35+ x86-64

timeseries_table_format-0.1.2-cp311-cp311-macosx_11_0_arm64.whl (33.3 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

timeseries_table_format-0.1.2-cp310-cp310-win_amd64.whl (33.4 MB view details)

Uploaded CPython 3.10Windows x86-64

timeseries_table_format-0.1.2-cp310-cp310-manylinux_2_35_x86_64.whl (37.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.35+ x86-64

timeseries_table_format-0.1.2-cp310-cp310-macosx_11_0_arm64.whl (33.3 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file timeseries_table_format-0.1.2.tar.gz.

File metadata

  • Download URL: timeseries_table_format-0.1.2.tar.gz
  • Upload date:
  • Size: 228.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for timeseries_table_format-0.1.2.tar.gz
Algorithm Hash digest
SHA256 6d55b401c93d542baf8e511efffe7df6f84b51e8b90a9fecdc591cf7288b81d4
MD5 9ab9f171c4ec4861c75c63179a7b6374
BLAKE2b-256 8789e282a0e57efa72d8ba021cd74502e3b0e97c6a29440dd686002d41f796ef

See more details on using hashes here.

Provenance

The following attestation bundles were made for timeseries_table_format-0.1.2.tar.gz:

Publisher: publish-pypi.yml on mag1cfrog/timeseries-table-format

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

File details

Details for the file timeseries_table_format-0.1.2-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for timeseries_table_format-0.1.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 3db7c2b6bb53ab5a5a7931e92b25241ac1ef4d87bfbdb0c51eebfa592d940ca7
MD5 913147fdeace040852f20266caa91772
BLAKE2b-256 876c91353889a1d1be13fc56c811e369d3f75e4a06fd99788fb095806c2caeff

See more details on using hashes here.

Provenance

The following attestation bundles were made for timeseries_table_format-0.1.2-cp314-cp314-win_amd64.whl:

Publisher: publish-pypi.yml on mag1cfrog/timeseries-table-format

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

File details

Details for the file timeseries_table_format-0.1.2-cp314-cp314-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for timeseries_table_format-0.1.2-cp314-cp314-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 fcc81b2df3a063510df02a38a98143689b44e4b01e958816e07050f6679013c0
MD5 98cb1bab9cdefae7db6a17377416f8f0
BLAKE2b-256 2abc482630823971d065fb50e88a09299c2f792e8720b26b32d17c6e4099156e

See more details on using hashes here.

Provenance

The following attestation bundles were made for timeseries_table_format-0.1.2-cp314-cp314-manylinux_2_35_x86_64.whl:

Publisher: publish-pypi.yml on mag1cfrog/timeseries-table-format

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

File details

Details for the file timeseries_table_format-0.1.2-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for timeseries_table_format-0.1.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ff770084ef04dc88045a8a5010dfa09034c27d4b8a86beab708d59b428e18a40
MD5 f5f59ac9e9f4a1360cfbeffb895acbae
BLAKE2b-256 77c426e4f9b201250df7766a06a6f6b1b970e01cb6d7abab3b83cbea71013f3c

See more details on using hashes here.

Provenance

The following attestation bundles were made for timeseries_table_format-0.1.2-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: publish-pypi.yml on mag1cfrog/timeseries-table-format

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

File details

Details for the file timeseries_table_format-0.1.2-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for timeseries_table_format-0.1.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 054bfc0efb89d0778011f4c86b07d5294bf261a33d8187bc8266076d6a6a2e31
MD5 b2126d0048fd3119f1123ee73ee8759a
BLAKE2b-256 f73f74878ec9c07408047ee8e68cef73f329b6b4ebceddfcd3f859be67595ff1

See more details on using hashes here.

Provenance

The following attestation bundles were made for timeseries_table_format-0.1.2-cp313-cp313-win_amd64.whl:

Publisher: publish-pypi.yml on mag1cfrog/timeseries-table-format

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

File details

Details for the file timeseries_table_format-0.1.2-cp313-cp313-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for timeseries_table_format-0.1.2-cp313-cp313-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 6f2f40adf6b2c29f99cd1733aecaed71a9610b23a84dd8a405237455b6652284
MD5 e354bf3fcc78b09739391924c67d1fc0
BLAKE2b-256 6f8912f44945497c6528ff76ec02a08999f12135632a5c411046ef4d42edc5f7

See more details on using hashes here.

Provenance

The following attestation bundles were made for timeseries_table_format-0.1.2-cp313-cp313-manylinux_2_35_x86_64.whl:

Publisher: publish-pypi.yml on mag1cfrog/timeseries-table-format

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

File details

Details for the file timeseries_table_format-0.1.2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for timeseries_table_format-0.1.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6d379638225848a6ea559467656107ccf9c0e88103c1fb399f7f82a7a349155a
MD5 f66ec7eb4a734cc2fa14e938ed0dea86
BLAKE2b-256 1ca690bb2ac506df442c22cdd31ba49d77336341f8299e62c7726a6b85e1d932

See more details on using hashes here.

Provenance

The following attestation bundles were made for timeseries_table_format-0.1.2-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish-pypi.yml on mag1cfrog/timeseries-table-format

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

File details

Details for the file timeseries_table_format-0.1.2-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for timeseries_table_format-0.1.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 2273ef382fc828004ad3adf167a7e2e540b2ae9c424a414bb7b1e149c7b1683d
MD5 fb54118220ddea4bd28e5d5aa14202bc
BLAKE2b-256 a5f9c1e45b505e0a7a432763c9daa7d3a3a0e78d8af33350d8ce5fca6bddc1cd

See more details on using hashes here.

Provenance

The following attestation bundles were made for timeseries_table_format-0.1.2-cp312-cp312-win_amd64.whl:

Publisher: publish-pypi.yml on mag1cfrog/timeseries-table-format

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

File details

Details for the file timeseries_table_format-0.1.2-cp312-cp312-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for timeseries_table_format-0.1.2-cp312-cp312-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 999c27314557a0e452f368bced9afc41d08aa40525bb764ac9db7e663fe23e85
MD5 52c3d5237c1b99246d35a344914158ea
BLAKE2b-256 073ce0890236689ad6f5c2b9e0658384c41f3ee3c0cd8b0bf29b8d2c361694ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for timeseries_table_format-0.1.2-cp312-cp312-manylinux_2_35_x86_64.whl:

Publisher: publish-pypi.yml on mag1cfrog/timeseries-table-format

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

File details

Details for the file timeseries_table_format-0.1.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for timeseries_table_format-0.1.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d328391ca7176043d1e15803a29cd6d5706b5f3201d2b31368d93a27e8da2907
MD5 72e580652ad2c5258a9b6a41092db3dc
BLAKE2b-256 267c499dcc7be59c5428fa83fddedc66dfd5bfd3d4847a2a4527dd2d7e9cf4e4

See more details on using hashes here.

Provenance

The following attestation bundles were made for timeseries_table_format-0.1.2-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish-pypi.yml on mag1cfrog/timeseries-table-format

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

File details

Details for the file timeseries_table_format-0.1.2-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for timeseries_table_format-0.1.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a3837b1919356bfc67fc37088d76233a0a0767d377ba442d7e53d94600ea51d1
MD5 5fc7120ac1fc837d717edb46f041c65c
BLAKE2b-256 a945bcd5dabadea32acb4114b95730388a406925891436bc7a3b3f09f46680d2

See more details on using hashes here.

Provenance

The following attestation bundles were made for timeseries_table_format-0.1.2-cp311-cp311-win_amd64.whl:

Publisher: publish-pypi.yml on mag1cfrog/timeseries-table-format

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

File details

Details for the file timeseries_table_format-0.1.2-cp311-cp311-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for timeseries_table_format-0.1.2-cp311-cp311-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 629de7888986dee8c054e0bf96c526309418bc05a54a995fcce8a178502975c9
MD5 d930247fb212ad7d92d4985da94b53a7
BLAKE2b-256 696eb83e4c82d65d78b9c17ed68d217e863f43010623c372f83c8cf5a02e095f

See more details on using hashes here.

Provenance

The following attestation bundles were made for timeseries_table_format-0.1.2-cp311-cp311-manylinux_2_35_x86_64.whl:

Publisher: publish-pypi.yml on mag1cfrog/timeseries-table-format

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

File details

Details for the file timeseries_table_format-0.1.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for timeseries_table_format-0.1.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 27fdf8f7f155eb869c6e19b0a7811176f738f722f621f50390b4c5ce77caa8b1
MD5 3df2306e48344b02c9f15630fa012ecc
BLAKE2b-256 a5fa5aec3772a5250a926000ce81a0a63aec92da90f6ed25b4d21148356c1b91

See more details on using hashes here.

Provenance

The following attestation bundles were made for timeseries_table_format-0.1.2-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish-pypi.yml on mag1cfrog/timeseries-table-format

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

File details

Details for the file timeseries_table_format-0.1.2-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for timeseries_table_format-0.1.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 88310f6c0f5cfc04f56fd945959d8b056ab24940e65c0b26c92b08726ff5dec3
MD5 c761d18a57eb2b7f2975eb57185bb915
BLAKE2b-256 e938fe2ba94caaa36ac047688a2be0b24c9c40e548d85d630f48277ef64c5f4c

See more details on using hashes here.

Provenance

The following attestation bundles were made for timeseries_table_format-0.1.2-cp310-cp310-win_amd64.whl:

Publisher: publish-pypi.yml on mag1cfrog/timeseries-table-format

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

File details

Details for the file timeseries_table_format-0.1.2-cp310-cp310-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for timeseries_table_format-0.1.2-cp310-cp310-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 d8b2ff2e1bea8f298b34d19a1c656627b83491b6f47992bd0c0396dd06c214a0
MD5 ee28c02dc1ac69435a5d838656c6aee6
BLAKE2b-256 398bdf15bdab862bfc7031de6f8a691122abe0671ecda7e3f78074222c79d110

See more details on using hashes here.

Provenance

The following attestation bundles were made for timeseries_table_format-0.1.2-cp310-cp310-manylinux_2_35_x86_64.whl:

Publisher: publish-pypi.yml on mag1cfrog/timeseries-table-format

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

File details

Details for the file timeseries_table_format-0.1.2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for timeseries_table_format-0.1.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d69f70f9b1992e561236835f3a604aa4c793b0e61be15c201d73721579026e1e
MD5 b834f63e13eb07f4e66bddcfa59b3df3
BLAKE2b-256 57eeaa4f77c124e96622d4fb6e1677db197be1fed62de5761b48162cd9e1f83a

See more details on using hashes here.

Provenance

The following attestation bundles were made for timeseries_table_format-0.1.2-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: publish-pypi.yml on mag1cfrog/timeseries-table-format

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