Skip to content

v1.3.2

Latest

Choose a tag to compare

@github-actions github-actions released this 12 Jul 01:35
Immutable release. Only release title and notes can be modified.
0609e89

tzfpy v1.3.2

This release upgrades tzf-rs from v1.3.2 to v1.3.5, bringing updated timezone boundary data, significantly lower memory usage, and faster timezone lookups.

Highlights

  • Updated timezone boundary data to 2026c.
  • Reduced typical memory usage from approximately 120 MB to 70 MB.
  • Improved default indexed lookup performance.
  • Kept the existing Python API and lookup behavior compatible.

Performance improvements

The upgraded YStripes index uses a more compact representation:

  • Timezone names are interned and tile keys use packed integer storage.
  • Polygon coordinates remain in scaled i32 storage.
  • YStripes operates directly on integer coordinates.
  • Single-index lookups avoid unnecessary candidate allocation and merging.

According to the upstream benchmarks:

  • DefaultFinder memory usage was reduced by approximately 53% in tzf-rs v1.3.4.
  • tzf-rs v1.3.5 provides an additional approximately 15% reduction for the YStripes finder.
  • Edge lookup performance improved by approximately 32% in v1.3.5.
  • Random-city YStripes lookups improved by approximately 20%.

The tzfpy benchmark on Apple M3 Max now records approximately 663 ns per lookup with the default index, reaching about 1.5 million lookups per second.

Updated timezone data

The bundled timezone boundary data has been updated from 2026b to 2026c through tzf-dist 0.0.2026-c.

Applications can inspect the bundled data version with:

import tzfpy

print(tzfpy.data_version())

Compatibility

There are no Python API changes in this release. Existing calls to get_tz, get_tzs, timezonenames, data_version, and GeoJSON export functions continue to work without modification.

Lookup correctness was validated upstream against linear raycasting using 700,000 coordinates, including random coordinates and points aligned to the internal storage grid, with zero mismatches.

Other updates

  • Upgraded PyO3 to v0.29.0.
  • Added uvx usage documentation.
  • Updated dependency and license information.
  • Updated build and release workflows.

Upstream details:

Full Changelog: v1.3.1...v1.3.2