v1.3.3
·
21 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
v1.3.3
Bug Fixes
- Queries exactly on a timezone border no longer return an empty result. Via
tzf-rs1.3.7 (tzf-rs#208): the geometry library treated a point lying on a shared polygon edge as outside both neighbouring polygons. This was easiest to hit with nautical zones, whose borders sit on whole meridians (7.5,22.5, ...), exactly the kind of coordinate people type by hand. The finder now usesPolygon::contains_point_allow_on_edge(geometry-rs 0.5.1), so a border point belongs to both adjacent zones:get_tzs()returns both names andget_tz()returns the first grid-indexed match. On a global 1° grid, 2,753 previously empty queries now resolve; non-border lookups are unaffected in both result and speed. - Fixed wrong results for
America/Argentina/Ushuaia, via the boundary dataset refresh intzf-rs1.3.6.
Dependencies
tzf-rs1.3.5 → 1.3.7. The dataset is still2026c, sodata_version()is unchanged, but the underlying boundaries carry the Ushuaia fix.
Packaging
- New Emscripten / Pyodide wheels (
*-pyemscripten_*_wasm32.whl, CPython 3.14) are built in CI and attached to the GitHub Release. They are deliberately not uploaded to PyPI. - The release job now creates the GitHub Release as a draft and publishes it only after every asset is attached, so the release never appears half-filled.
- CI/test workflows moved to
actions/setup-python@v7;uv.locknow triggers the CI build workflow.
Typing
tzfpy.pyimodernised:List[str]→list[str], dropped thetypingimport and the redundant...bodies. No runtime change, but type checkers now see builtin generics.
Docs & Tooling
- README gained an Accuracy section with measured border-error numbers instead of the vague "not so accurate around borders" note: the Douglas-Peucker epsilon of 0.001° caps boundary displacement at ~111 m (certified 111.2 m), 0.41% of border length is displaced more than 100 m, none beyond 500 m, and total mis-assigned area is 16,828 km² (~0.003% of Earth), 92.8% of it within 100 m of the true border. Full evaluation lives in
tzf's BORDER_CHANGE.md. make benchnow runsscripts/benchmark_index_modes.py, which compares the default YStripes index against_TZFPY_DISABLE_Y_STRIPES=1and prints one Markdown table (latency, throughput, memory) instead of two raw pytest runs.- New
make measure-memorytarget;scripts/measure_memory_tzfpy.pygained CLI args and JSON output. - Dev dependency bumps (ruff 0.16.0, FastAPI/uvicorn in
examples/) and a newpyodidedependency group for the Emscripten build.
Full Changelog: v1.3.2...v1.3.3