Public API Dispatch Boundary¶
Context¶
Phase 6a needs two things at once:
the GeoPandas-facing method surface must stop rebuilding avoidable wrapper arrays on every call
public method routing must be visible when the repo chooses between repo-owned execution and host-side Shapely fallback
Decision¶
Use one shared API-dispatch boundary:
reuse the existing
GeometryArrayinside GeoSeries and GeoDataFrame delegate helperscache owned-geometry conversions on
GeometryArrayemit explicit dispatch events from repo-owned GeoPandas-facing method surfaces
This keeps the hot path leaner while making public routing observable without forcing slower host prototypes into default execution.
Consequences¶
Public methods can report whether they used a repo-owned path or Shapely host execution.
Owned-buffer conversion can be cached across repeated calls until mutation.
Delegate helpers stop paying needless
GeometryArray(...)reconstruction overhead.Dispatch observability is now separate from fallback observability: both are available and neither hides the other.
Alternatives Considered¶
keep method routing implicit and only log fallback events
force all public methods onto owned host implementations immediately
leave delegate helpers untouched until a full GPU implementation exists
Acceptance Notes¶
The landed implementation adds dispatch events, exposes them through the top-level
geopandas shim, reuses the existing geometry extension array in delegate
helpers, caches owned conversions, and keeps the current host-performance-based
fallback decisions explicit.