pyivt
pyivt is a library for Statistics Canada Beyond 20/20 .ivt files, written in Rust. It is designed to be minimal and easily adaptable for existing codebases. Key features are:
- Fast: Orders of magnitude faster than GUI automation for metadata
- Python: Easily integrates into modern data workflows with a minimal API
- Typed: Produces fully type-safe and predictable metadata
- Interoperable: Exports
.ivtfile data to Apache Arrow
Installation
uv add pyivt
Usage
Quick Start
Open an IVT file, read its metadata, and write its data to a Parquet file:
import pyarrow.parquet as pq
import pyivt
ivt = pyivt.open("data.ivt")
print(ivt.metadata.title.en)
pq.write_table(ivt.to_arrow(), "data.parquet")
Opening IVT Files
From Path
import pyivt
ivt = pyivt.open("data.ivt")
From URL
import requests
import pyivt
url = "https://example.com/data.ivt"
res = requests.get(url)
res.raise_for_status()
ivt = pyivt.open(res.content)
Reading Metadata
ivt.metadata is a typed IvtMetadata object. Summary fields are eager; heavy fields load on first access.
| Beyond 20/20 Summary | pyivt Metadata |
|---|---|
| Title | title.en, title.fr |
| Author | author.en, author.fr |
| Category | category.en, category.fr |
| Keywords | keywords.en, keywords.fr |
| Notes | notes.en, notes.fr |
| Number of Datapoints | number_of_datapoints |
| Time Series | time_series (.frequency, .start, .end) or None |
| Read-Only | read_only |
| Dimensions | dimensions |
| Geographies | geographies |
| Footnotes | footnotes |
| Missing Values | missing_values |
geographies is a Geographies object (member_id, geo_label, geo_uid, …), not a dict.
import pyivt
ivt = pyivt.open("data.ivt")
print(ivt.metadata.product_id, ivt.metadata.title.en)
Exporting Data
Ivt.to_arrow() returns an Apache Arrow table. Keyword arguments:
| Argument | Default | Meaning |
|---|---|---|
complete |
True |
Expand the published grid; set False for sparse decoded cells only |
max_cells |
100_000_000 |
Raise if the complete grid would exceed this many cells |
labels |
True |
Include dimension label columns |
language |
"en" |
Label language ("en" or "fr") |
import polars as pl
import pyarrow.parquet as pq
table = ivt.to_arrow()
# pandas
df = table.to_pandas()
# Parquet
pq.write_table(table, "data.parquet")
# Polars
df = pl.from_arrow(table)
License
pyivt is licensed under the MIT License.
Acknowledgements
Metadata
Release files for pyivt 0.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| pyivt-0.0.2.tar.gz | 100.5 kB | With provenance | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| pyivt-0.0.2-cp310-abi3-win_amd64.whl | CPython 3.10 | abi3 | Windows x86-64 | Details |
| pyivt-0.0.2-cp310-abi3-manylinux_2_28_x86_64.whl | CPython 3.10 | abi3 | Linux glibc 2.28+ x86-64 | Details |
| pyivt-0.0.2-cp310-abi3-manylinux_2_28_aarch64.whl | CPython 3.10 | abi3 | Linux glibc 2.28+ ARM64 | Details |
| pyivt-0.0.2-cp310-abi3-macosx_11_0_arm64.whl | CPython 3.10 | abi3 | macOS 11.0+ ARM64 | Details |
| pyivt-0.0.2-cp310-abi3-macosx_10_12_x86_64.whl | CPython 3.10 | abi3 | macOS 10.12+ x86-64 | Details |
Total release size: 6.9 MB
Release files / pyivt-0.0.2.tar.gz
| Download URL | pyivt-0.0.2.tar.gz |
|---|---|
| Size | 100.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fcb7471040952596510c4bfafce50442eb2485d7bd9d59cc9cca7aeab850f340
|
|
BLAKE2b-256 checksum How to use checksums |
362bb6c95f62f85eda081d7348fe955b85bdf48e636a6f69087f3d3d617da641
|
| 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 20, 2026.
Transparency logRelease files / pyivt-0.0.2-cp310-abi3-win_amd64.whl
| Download URL | pyivt-0.0.2-cp310-abi3-win_amd64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.10 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
66a5244efbddedc7287161a5839cea6b8cfa893437cc4c83f5408d7cd9a9f2d5
|
|
BLAKE2b-256 checksum How to use checksums |
29df9b1479c5d1d763edadb5b4adb2fa06e38260016130fb5f978a801412d310
|
| 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 20, 2026.
Transparency logRelease files / pyivt-0.0.2-cp310-abi3-manylinux_2_28_x86_64.whl
| Download URL | pyivt-0.0.2-cp310-abi3-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.10 Linux glibc 2.28+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
7e2d3728a87e6571ee8ec2ee7f75e6a616138188b609d01653d2c0fc588ba6bd
|
|
BLAKE2b-256 checksum How to use checksums |
696dbe7e4867d9423d425fcb89891ed329c610c5b1eead2c52e763a32c12a48f
|
| 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 20, 2026.
Transparency logRelease files / pyivt-0.0.2-cp310-abi3-manylinux_2_28_aarch64.whl
| Download URL | pyivt-0.0.2-cp310-abi3-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.10 Linux glibc 2.28+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
a34b1bfe590d0b9221989844181acabc89a8da71b000c3ab5e8c6cce780d5e5c
|
|
BLAKE2b-256 checksum How to use checksums |
b81043ff46b8c5dfa4f3a58beca710b3bf6546af7ad611272e608231f32e6b33
|
| 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 20, 2026.
Transparency logRelease files / pyivt-0.0.2-cp310-abi3-macosx_11_0_arm64.whl
| Download URL | pyivt-0.0.2-cp310-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.10 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
6b80d3ff606a86f75ea0fa128fca2a0f8bf62c1dca1e97590deccb2fe0a9aa7a
|
|
BLAKE2b-256 checksum How to use checksums |
c2e7a89a7460b116a1b65f66b162fa218e7de32a4fedd4ad0c6352da07eab710
|
| 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 20, 2026.
Transparency logRelease files / pyivt-0.0.2-cp310-abi3-macosx_10_12_x86_64.whl
| Download URL | pyivt-0.0.2-cp310-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.10 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
763876ab8aa7aa70f58593d0989465794ddca3827535212ad4af3df32a04a60f
|
|
BLAKE2b-256 checksum How to use checksums |
e14ace54cfb4bfdad15a51913e6df6fcb33ec960f535f760e3354766534564c3
|
| 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 20, 2026.
Transparency logSecurity for pyivt 0.0.2
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.
Full provenance
All 6 files in this release have been uploaded with provenance metadata.
Attestation for pyivt-0.0.2.tar.gz
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 20, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.