unstale

pypi / pygeohash

pygeohash

What changed in pygeohash 3, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-25.

8 breaking1 security7 performance1 tooling13 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli 0.2.6 on npm

pygeohash 330 changes

Breaking changes 8

  • The C decoder returns named tuples directly from decode() and decode_exactly(), changing the decoder results.

    3.5.0release notes

  • Type predicates reject empty Pandas Series.

    3.5.0release notes

  • Validates coordinate ordering and world bounds instead of silently returning empty results, and rejects boolean coordinates.

    3.3.2release notes

  • Rejects booleans in the direct C encoder API.

    3.3.2release notes

  • Rejects bare geohash strings as collection input.

    3.3.2release notes

  • Rejects boolean values for coordinates and precision.

    3.3.2release notes

  • Rejects non-string values when detecting geohash Series.

    3.3.2release notes

  • C encoders reject non-finite coordinates.

    3.3.1release notes

Security 1

  • C encode functions validate precision to prevent stack buffer overflow.

    3.3.1release notes

Performance 7

  • The C codec uses table-driven decoding and a pair-unrolled encoding core.

    3.5.0release notes

  • C decode entry points use FASTCALL and C-level case folding.

    3.5.0release notes

  • Derived bounding box construction is faster.

    3.5.0release notes

  • Wrapper validation has a faster common-case path.

    3.5.0release notes

  • Cell enumeration uses an interval walk.

    3.5.0release notes

  • Validation has a fast path and get_adjacent uses an iterative implementation.

    3.5.0release notes

  • Keeps optional imports lazy.

    3.3.2release notes

Tooling 1

  • The package ships the PEP 561 marker, enabling type checkers to recognize its typing information.

    3.3.1release notes

Fixes and other changes 13

  • Native decoder stubs are aligned with named-tuple results.

    3.5.0release notes

  • Uses canonical validation for approximate distance.

    3.3.2release notes

  • Cardinal selectors return the original geohashes.

    3.3.2release notes

  • Accepts uppercase and mixed-case geohashes and rejects over-precision geohashes.

    3.3.2release notes

  • Clamps generated viewport bounds to world bounds.

    3.3.2release notes

  • Computes mean longitude as a circular mean.

    3.3.2release notes

  • Correctly includes cells at box corners.

    3.3.2release notes

  • Correctly finds east/west neighbors across the antimeridian.

    3.3.2release notes

  • Validates the geohash and direction arguments.

    3.3.2release notes

  • Logging helpers emit records and register undoubled logger names.

    3.3.2release notes

  • Validates empty visualization collections.

    3.3.2release notes

  • Identical geohashes now return zero approximate distance.

    3.3.1release notes

  • Bounding-box enumeration stays within geographic limits.

    3.3.1release notes