Skip to main content

tzfpy

  • PyPI FOSSA Status
  • PyPI - Python Version
  • PyPI - Downloads
  • Anaconda-Server Badge
  • Conda Downloads
  • Conda Platform

Changes in 2.0

tzfpy 2.0 upgrades the Rust core from tzf-rs 1.x to 2.0, which carries no protobuf dependency: the boundary data ships as the TZF embedded binary format (.tzb).

The Python API is unchanged. The same six functions with the same names, signatures and return types: get_tz, get_tzs, timezonenames, data_version, get_tz_polygon_geojson, get_tz_index_geojson. Apart from the four changes listed below, code written against 1.x runs unmodified.

Measured differences:

Metric 1.3.3 2.0.0
Memory after import + first query ~72 MB ~41 MB
Wheel size (macOS arm64) 4.31 MB 2.77 MB
Dataset 2026c 2026c

Breaking changes

  1. get_tzs() results are sorted alphabetically. 1.x returned them in internal polygon order. get_tz() returns the first positive match and is the supported way to obtain a single name.
  2. The _TZFPY_DISABLE_Y_STRIPES environment variable was removed. tzf-rs 2 removed FinderOptions, and the YStripes index is always enabled. Setting the variable has no effect and raises no error.
  3. get_tz_polygon_geojson() and get_tz_index_geojson() raise ValueError for a name the dataset does not carry. In 1.x the same input panicked, surfacing as pyo3_runtime.PanicException.
  4. Exported GeoJSON no longer repeats the duplicated junction vertices that the protobuf expansion carried. Query results are identical; byte-for-byte comparisons of exported GeoJSON against 1.x output are not.

Unchanged: coordinate order is (longitude, latitude), the dataset is 2026c, and a point lying exactly on a shared border belongs to both neighbouring zones.

See the tzf-rs v2 changelog for the Rust-side detail.

Usage

Please note that new timezone names may be added to tzfpy, which could be incompatible with old version package like pytz or tzdata. As an option, tzfpy supports install compatible version of those packages with extra params.

# Install just tzfpy
pip install tzfpy

# Install with pytz
pip install "tzfpy[pytz]"

# Install with tzdata. https://github.com/python/tzdata
pip install "tzfpy[tzdata]"

# Install via conda, see more in https://github.com/conda-forge/tzfpy-feedstock
conda install -c conda-forge tzfpy

Experimental full-precision wheels are distributed separately, from this repository's own index rather than PyPI — see Full-precision wheels.

>>> from tzfpy import get_tz, get_tzs
>>> get_tz(116.3883, 39.9289)  # in (longitude, latitude) order.
'Asia/Shanghai'
>>> get_tzs(87.4160, 44.0400)  # in (longitude, latitude) order.
['Asia/Shanghai', 'Asia/Urumqi']

get_tz returns one name, or '' when no timezone covers the point. It is answered from the pre-index when a tile covers the point and by exact point-in-polygon otherwise. get_tzs is always polygon-exact and returns every match, sorted alphabetically: overlapping timezones and points lying exactly on a shared border yield more than one name.

Or you can try it via uvx:

uvx --with tzfpy python -c "from tzfpy import get_tz;tz = get_tz(116.3883,39.9289);print(tz)"
Asia/Shanghai

Export to GeoJSON

For data visualization, you can get timezone polygon GeoJSON data from tzfpy. get_tz_polygon_geojson returns the timezone's boundary polygons; get_tz_index_geojson returns the bounding boxes of its pre-index tiles: the area where get_tz answers from the fast path. Both return a serialized GeoJSON FeatureCollection, and both raise ValueError for a name the dataset does not carry:

from tzfpy import get_tz, get_tz_index_geojson, get_tz_polygon_geojson

lng = -74.0060
lat = 40.7128
tz = get_tz(lng, lat)
print(f"Timezone for ({lng}, {lat}): {tz}")

with open("tz_nyc_polygon.geojson", "w") as f:
    geojson_data = get_tz_polygon_geojson(tz)
    f.write(geojson_data)

with open("tz_nyc_index.geojson", "w") as f:
    geojson_data = get_tz_index_geojson(tz)
    f.write(geojson_data)

Each call re-serializes the geometry, so the cost is proportional to the timezone's polygon size.

Best practices

  1. Always install tzfpy with tzdata extra: pip install tzfpy[tzdata]

  2. Use Python's zoneinfo package(import zoneinfo, aka tzdata in PyPI) to handle timezone names, even if you are using arrow:

    examples/tzfpy_with_datetime.py:

    from datetime import datetime, timezone
    from zoneinfo import ZoneInfo
    
    from tzfpy import get_tz
    
    tz = get_tz(139.7744, 35.6812)  # Tokyo
    
    now = datetime.now(timezone.utc)
    now = now.astimezone(ZoneInfo(tz))
    print(now)
    # 2025-04-29 01:33:56.325194+09:00
    

    examples/tzfpy_with_arrow.py:

    from zoneinfo import ZoneInfo
    
    import arrow
    from tzfpy import get_tz
    
    tz = get_tz(139.7744, 35.6812)  # Tokyo
    
    arrow_now = arrow.now(ZoneInfo(tz))
    print(arrow_now.format("YYYY-MM-DD HH:mm:ss ZZZ"))
    # 2025-04-29 01:33:56.325194+09:00
    

    If you are using whenever, since whenever use tzdata internally, so it's compatible with tzfpy:

    examples/tzfpy_with_whenever.py:

    from whenever import Instant
    from tzfpy import get_tz
    
    now = Instant.now()
    
    tz = get_tz(139.7744, 35.6812)  # Tokyo
    
    now = now.to_tz(tz)
    
    print(now)
    # 2025-04-29T10:33:28.427784+09:00[Asia/Tokyo]
    

Accuracy

The Douglas-Peucker simplification uses an epsilon of 0.001 degrees, which caps boundary displacement at roughly 111 m by construction. Measured against the full-precision 2026c dataset with tzf's internal/cmd/borderchange (spherical model, certified via Lipschitz interval subdivision):

Metric Result
Certified maximum boundary displacement 111.7 m (+1.0 m tolerance)
Boundary length displaced more than 100 m 0.41%
Boundary length displaced more than 500 m 0%
Total mis-assigned area 16,962 km² (~0.003% of Earth)
Mis-assigned area within 100 m of the true border 92.8%

Only queries within about 111 m of a timezone border can differ from the full-precision result, and most of that band is much narrower. See BORDER_CHANGE.md in the tzf repository for the complete evaluation results.

Full-precision wheels

If that ~111 m band matters for your use case, full-precision wheels embed the unsimplified dataset. Same package, same API, no extra knobs — they are built from the ~14 MB full.tzb instead of the ~4 MB lite.tzb and carry a +full PEP 440 local version:

pip install tzfpy --index-url https://ringsaturn.github.io/tzfpy/full/simple/
>>> import importlib.metadata
>>> importlib.metadata.version("tzfpy")
'2.1.0+full'

The index carries a +full wheel for every tagged release. pip and uv pick the newest stable one by default; pass --pre (or set prerelease = "allow" under [tool.uv]) to take a newer pre-release.

data_version() reports the same tzdata release for both variants, so the distribution version above is how you tell them apart at runtime.

The full variant runs on tzf-rs's EmbeddedFinder, which queries the .tzb bytes in place instead of expanding them into polygons the way the lite build's DefaultFinder does. So the trade is query latency, not memory: the full wheel is larger on disk yet lighter in RAM. Measured on an Apple M3 Max (macOS 26.6.2, CPython 3.14.0) over all 154,694 cities in citiespy, tzfpy 2.1.0 on tzf-rs 2.1.2 and the 64-point-chunk 2026d data:

Metric Lite Full
Wheel size (macOS arm64) 3.0 MB 11.8 MB
Loaded extension 4.9 MB 16.0 MB
RSS delta after first query 39.0 MB 16.0 MB
Cold start (import + first query) 15 ms 10 ms
get_tz median 208 ns 250 ns
get_tzs median (polygon scan) 375 ns 791 ns

get_tz still answers most points from the FUZZY preindex, so its fast path costs about 20%. The exact polygon scan behind get_tzs (and behind get_tz on a preindex miss, i.e. near borders) decodes compressed geometry on every call and lands at about 2x; on border cities get_tz sits around 1.2 µs against the lite build's 0.9 µs. Both numbers are per-call and single-threaded. The lite build on PyPI stays the right default; reach for the full wheels when you query near borders and the extra fraction of a microsecond is cheaper than the ~111 m band.

These wheels are published only to GitHub Releases and the index above, never to PyPI (the pre-release tags that carry them publish the lite wheels to TestPyPI, not PyPI). Keeping an experimental variant off PyPI means nobody gets it without asking for it, and the mechanics line up with that policy: the full dataset is git-only in tzf-dist because it exceeds the crates.io size limit, and PyPI rejects local versions by design. If the variant graduates, it will be announced in the changelog.

The two variants sit on separate index paths on purpose — 2.0.0+full sorts above 2.0.0, so sharing one page would make pip silently prefer the full wheel. With uv, pin the index explicitly:

[[tool.uv.index]]
name = "tzfpy-full"
url = "https://ringsaturn.github.io/tzfpy/full/simple/"
explicit = true

[tool.uv.sources]
tzfpy = { index = "tzfpy-full" }

Performance

Benchmark run under v2.0.0 on a MacBook Pro (Apple M3 Max, macOS 26.6.2, CPython 3.10.18), via make bench, over random world cities, 500 rounds after 500 warmup iterations:

Index mode Median (µs) Mean (µs) Throughput (Kops/s) Memory
Default (pre-index + YStripes) 0.6825 0.8990 1112.3 ~40.4 MB

Timings include the Python call overhead and the benchmark's own coordinate generation; the Rust lookup itself measures ~260 ns for a random city on the same machine. The 1.x median on the same machine was 0.636 µs, so query latency is within run-to-run variation of 1.x. The measured reductions are in memory and wheel size.

Memory

Measured with make measure-memory on the same machine (RSS increase after import tzfpy plus one query, CPython 3.10.18):

Version RSS delta (3 runs) Whole process
1.3.3 71.6–73.6 MB 89.7–96.4 MB
2.0.0 39.8–42.3 MB 57.8–60.3 MB

Both rows were measured back to back on the same machine with the same script, against the same 2026c dataset.

Or you can view more benchmark results on GitHub Action summary page.

More benchmarks compared with other packages can be found in ringsaturn/tz-benchmark.

Background

tzfpy was originally written in Go named tzf and use CGO compiled to .so to be used by Python. Since v0.11.0 it's rewritten in Rust built on PyO3 and tzf-rs, a tzf's Rust port.

I have written an article about the history of tzf, its Rust port, and its Rust port's Python binding; you can view it here.

Also, see Project tzf for more information.

Compare with other packages

Please note that directly compare with other packages is not fair, because they have different use cases and design goals, for example, the precise.

TimezoneFinder

I got lots of inspiration from it. Timezonefinder is a very good package and it's mostly written in Python, so it's easy to use. And it's much more widely used compared with tzfpy if you care about that.

However, it's slower than tzfpy, especially around the borders, and I have lots of API requests from there. That's the reason I created tzf originally. And then tzf-rs and tzfpy.

pytzwhere

I recommend to read timezonefinder's Comparison to pytzwhere since it's very detailed.

Contributing

Install:

Available commands:
  build            - Build the project using uv
  build-ext        - Rebuild and install local Rust extension into venv
  fmt              - Format the code using ruff
  lint             - Lint the code using ruff
  sync             - Sync and compile the project using uv
  lock             - Lock dependencies using uv
  upgrade          - Upgrade dependencies using uv
  all              - Run lock, sync, fmt, lint, and test
  test             - Run non-benchmark tests
  test-all         - Run all tests including benchmark
  bench            - Run the query benchmark and print a Markdown table
  measure-memory   - Measure memory usage of tzfpy and TimezoneFinder
make all

LICENSE

This project is licensed under the MIT license. The data is licensed under the ODbL license, same as evansiroky/timezone-boundary-builder

FOSSA Status

Metadata

Release files for tzfpy 2.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tzfpy 2.1.2
File Size Uploaded Provenance Actions
tzfpy-2.1.2.tar.gz 149.4 kB With provenance Details for tzfpy-2.1.2.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for tzfpy 2.1.2
File Actions
tzfpy-2.1.2-cp314-cp314t-win_arm64.whl CPython 3.14 CPython 3.14 free-threading Windows ARM64 Details for tzfpy-2.1.2-cp314-cp314t-win_arm64.whl
tzfpy-2.1.2-cp314-cp314t-win_amd64.whl CPython 3.14 CPython 3.14 free-threading Windows x86-64 Details for tzfpy-2.1.2-cp314-cp314t-win_amd64.whl
tzfpy-2.1.2-cp314-cp314t-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64 Details for tzfpy-2.1.2-cp314-cp314t-musllinux_1_2_x86_64.whl
tzfpy-2.1.2-cp314-cp314t-musllinux_1_2_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ ARM64 Details for tzfpy-2.1.2-cp314-cp314t-musllinux_1_2_aarch64.whl
tzfpy-2.1.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 Details for tzfpy-2.1.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
tzfpy-2.1.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64 Details for tzfpy-2.1.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
tzfpy-2.1.2-cp314-cp314t-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64 Details for tzfpy-2.1.2-cp314-cp314t-macosx_11_0_arm64.whl
tzfpy-2.1.2-cp314-cp314t-macosx_10_12_x86_64.whl CPython 3.14 CPython 3.14 free-threading macOS 10.12+ x86-64 Details for tzfpy-2.1.2-cp314-cp314t-macosx_10_12_x86_64.whl
tzfpy-2.1.2-cp310-abi3-win_arm64.whl CPython 3.10 abi3 Windows ARM64 Details for tzfpy-2.1.2-cp310-abi3-win_arm64.whl
tzfpy-2.1.2-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details for tzfpy-2.1.2-cp310-abi3-win_amd64.whl
tzfpy-2.1.2-cp310-abi3-musllinux_1_2_x86_64.whl CPython 3.10 abi3 Linux musl 1.2+ x86-64 Details for tzfpy-2.1.2-cp310-abi3-musllinux_1_2_x86_64.whl
tzfpy-2.1.2-cp310-abi3-musllinux_1_2_aarch64.whl CPython 3.10 abi3 Linux musl 1.2+ ARM64 Details for tzfpy-2.1.2-cp310-abi3-musllinux_1_2_aarch64.whl
tzfpy-2.1.2-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.10 abi3 Linux glibc 2.17+ x86-64 Details for tzfpy-2.1.2-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
tzfpy-2.1.2-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl CPython 3.10 abi3 Linux glibc 2.17+ ARM64 Details for tzfpy-2.1.2-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
tzfpy-2.1.2-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details for tzfpy-2.1.2-cp310-abi3-macosx_11_0_arm64.whl
tzfpy-2.1.2-cp310-abi3-macosx_10_12_x86_64.whl CPython 3.10 abi3 macOS 10.12+ x86-64 Details for tzfpy-2.1.2-cp310-abi3-macosx_10_12_x86_64.whl

Total release size: 48.4 MB

Release files / tzfpy-2.1.2.tar.gz

Download URL tzfpy-2.1.2.tar.gz
Size 149.4 kB
Tags Source
SHA-256 checksum
How to use checksums
511c954f4a4105a34d313855b551386dbb549962616971d1f2d1b774938afc35
BLAKE2b-256 checksum
How to use checksums
59f93b43dd8f531098bb10632f90e2262a8a959775c6e3162bf6032537039349
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 1, 2026.

Transparency log

Release files / tzfpy-2.1.2-cp314-cp314t-win_arm64.whl

Download URL tzfpy-2.1.2-cp314-cp314t-win_arm64.whl
Size 2.9 MB
Tags CPython 3.14 CPython 3.14 free-threading Windows ARM64
SHA-256 checksum
How to use checksums
d072569202dbd4f3811317201cc887d7f306371dcab511287d1a1452c5994efd
BLAKE2b-256 checksum
How to use checksums
534faf1429fc99fbf2dbe7e2b4cb1081149c9c0305b9d2db15afffbdaae3651a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 1, 2026.

Transparency log

Release files / tzfpy-2.1.2-cp314-cp314t-win_amd64.whl

Download URL tzfpy-2.1.2-cp314-cp314t-win_amd64.whl
Size 2.9 MB
Tags CPython 3.14 CPython 3.14 free-threading Windows x86-64
SHA-256 checksum
How to use checksums
81d6f0b5623d204a9137767d0e09f1ae7f9f363ac004ca1d912f87c84300e186
BLAKE2b-256 checksum
How to use checksums
fdd8912bff46f346aaf1cd8a638284efb4b0c999fd145777609bb6b88a6babc9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 1, 2026.

Transparency log

Release files / tzfpy-2.1.2-cp314-cp314t-musllinux_1_2_x86_64.whl

Download URL tzfpy-2.1.2-cp314-cp314t-musllinux_1_2_x86_64.whl
Size 3.2 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
28bb3b23975d841cce2ee548d183dad61cb49e361043dae037ed9f058d2f006d
BLAKE2b-256 checksum
How to use checksums
2bb0a5632af32159070af096d57649cba0c8a3772b98ab12bbcdc1f833ada525
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 1, 2026.

Transparency log

Release files / tzfpy-2.1.2-cp314-cp314t-musllinux_1_2_aarch64.whl

Download URL tzfpy-2.1.2-cp314-cp314t-musllinux_1_2_aarch64.whl
Size 3.2 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
9733d3ef61a59fda744b800bf5d29b337076f2a7e0a2a0386ca8a756edb9e8e9
BLAKE2b-256 checksum
How to use checksums
def9cd98a8748414616f6e052ae63a5a80f21928f01b86d574d7b4a756ad8796
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 1, 2026.

Transparency log

Release files / tzfpy-2.1.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL tzfpy-2.1.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 3.0 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
3b06a6b34b37101ab7dc9738069642f88f8de87301435b6616d2d742b256dae0
BLAKE2b-256 checksum
How to use checksums
7a2e382df57cba4d4f3a5677f0c2d8d787a2dee6014fcb4d4c0f6a092112c8db
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 1, 2026.

Transparency log

Release files / tzfpy-2.1.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl

Download URL tzfpy-2.1.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Size 3.0 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
6fa570d661617fe855ff5d125398375d0cc1dd557ec9728c7aa0b2464834ed30
BLAKE2b-256 checksum
How to use checksums
7f526a643c39ea245ebb4964d62befaa06f06c3a870215a3be58b10afc3eca4a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 1, 2026.

Transparency log

Release files / tzfpy-2.1.2-cp314-cp314t-macosx_11_0_arm64.whl

Download URL tzfpy-2.1.2-cp314-cp314t-macosx_11_0_arm64.whl
Size 3.0 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
aa4501e046872fcf8569ca8f0fd9be65b1e752a82492a7f668e0f7c05470e8db
BLAKE2b-256 checksum
How to use checksums
b7b12e0402cc56d03064e7c92e5e0ef270f12cf0aa496d637a4d35fbd6140d26
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 1, 2026.

Transparency log

Release files / tzfpy-2.1.2-cp314-cp314t-macosx_10_12_x86_64.whl

Download URL tzfpy-2.1.2-cp314-cp314t-macosx_10_12_x86_64.whl
Size 3.0 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
35cbc7a59a389cbb2cf648af575cb7904e2ab3c6d8d45b0b1ee169cde75de6f4
BLAKE2b-256 checksum
How to use checksums
b4e59db66e47d9cbb521011f853b1583681e7c8bfc3b153b096fd529e77d0be4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 1, 2026.

Transparency log

Release files / tzfpy-2.1.2-cp310-abi3-win_arm64.whl

Download URL tzfpy-2.1.2-cp310-abi3-win_arm64.whl
Size 2.9 MB
Tags CPython 3.10 Windows ARM64 abi3
SHA-256 checksum
How to use checksums
425a306e6a0c1cac010aa8b6dc10a637e2df455f4adcec2d614c1b4c9a01a3e1
BLAKE2b-256 checksum
How to use checksums
e69901d3ed03cfb0426787417e2f4f67e7f0bb58cf2df52b7bcfd0bb484b581c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 1, 2026.

Transparency log

Release files / tzfpy-2.1.2-cp310-abi3-win_amd64.whl

Download URL tzfpy-2.1.2-cp310-abi3-win_amd64.whl
Size 2.9 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
0e33878fca9ac716eb9b53cb8849df0f548e2b7a9496410fc0edbac1cc88be7b
BLAKE2b-256 checksum
How to use checksums
ae99c8e242741a3283d53fde71a16d787fa11c870908098942b8c1a8f90c3ca4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 1, 2026.

Transparency log

Release files / tzfpy-2.1.2-cp310-abi3-musllinux_1_2_x86_64.whl

Download URL tzfpy-2.1.2-cp310-abi3-musllinux_1_2_x86_64.whl
Size 3.2 MB
Tags CPython 3.10 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
84e1759f5c703d8e36ca6ef17e8bcb047796a751202d4f4827dfc02069f145e3
BLAKE2b-256 checksum
How to use checksums
c2b072e5b9dc801417003e1a5efac5d96d513bb8da2e590ce71980673eada96c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 1, 2026.

Transparency log

Release files / tzfpy-2.1.2-cp310-abi3-musllinux_1_2_aarch64.whl

Download URL tzfpy-2.1.2-cp310-abi3-musllinux_1_2_aarch64.whl
Size 3.2 MB
Tags CPython 3.10 Linux musl 1.2+ ARM64 abi3
SHA-256 checksum
How to use checksums
01f05f4802827c5c6184fe91243731b965792f51c9bed1f029e8face52e6ab08
BLAKE2b-256 checksum
How to use checksums
5ae1821d0addbb506ed791b8b1bfd1ac242342bdb5f805d1804ca11d3e5111b8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 1, 2026.

Transparency log

Release files / tzfpy-2.1.2-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL tzfpy-2.1.2-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 3.0 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
906a69fe9a9821ff2a2cff33e51cef08f0bfb95ea80891437fa4a254f497ed16
BLAKE2b-256 checksum
How to use checksums
3a145f603839ccd916af44f6c46d104fcb20d3bae48c961cc6e52af951b1a6a9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 1, 2026.

Transparency log

Release files / tzfpy-2.1.2-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl

Download URL tzfpy-2.1.2-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Size 3.0 MB
Tags CPython 3.10 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
9337ccab4cdfa7a09cc1e924851591365eac6858d56120a4dccdd02653f93eb4
BLAKE2b-256 checksum
How to use checksums
8c802e4edd01b34c57f29344a52b89afa6b800db5ad063c38654de27e029d3a0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 1, 2026.

Transparency log

Release files / tzfpy-2.1.2-cp310-abi3-macosx_11_0_arm64.whl

Download URL tzfpy-2.1.2-cp310-abi3-macosx_11_0_arm64.whl
Size 3.0 MB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
63c002eee6869b4c5945d29aa835cf6eecd31ccab193635a287e12e04e853211
BLAKE2b-256 checksum
How to use checksums
824db3b81ed17f10eca1aaf03e0efa7528daa291a8bb95d1c155835d05c82206
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 1, 2026.

Transparency log

Release files / tzfpy-2.1.2-cp310-abi3-macosx_10_12_x86_64.whl

Download URL tzfpy-2.1.2-cp310-abi3-macosx_10_12_x86_64.whl
Size 3.0 MB
Tags CPython 3.10 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
642bb17b7ba90c96a881a2c1698e2696988d413ba42e4cf2dec61fea284fbc87
BLAKE2b-256 checksum
How to use checksums
50c5c54f5205fb794a8840fce63db66bbae6c76c63e1627a5928173e384bc922
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 1, 2026.

Transparency log

Security for tzfpy 2.1.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 17 files in this release have been uploaded with provenance metadata.

Select from 17 files

Attestation for tzfpy-2.1.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 Nov 1, 2026.

Transparency log

A 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.

Release history Release notifications | RSS feed

This release

2.1.2 This release

17 release files Full provenance

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