Protocol Parity

May 8, 2026 ยท View on GitHub

This tracks the Python SDK protocol surface against the JS SDK and Honua Server protocol adapters.

SurfacePython SDKJS SDK parityNotes
Shared Source/Query/Resultclient.source(...), SourceDescriptor, Query, ResultAligned by fixtureCanonical source-bound facade with Pythonic snake_case names and protocol escape hatch.
Shared feature queryclient.query(...), client.iter_query(...)Legacy compact helperNormalized QueryFeature output spans FeatureServer, OGC API Features, STAC, and OData.
gRPC FeatureServicehonua_sdk.grpc.HonuaGrpcClient, HonuaGrpcAsyncClientCanonical shared protocol idGenerated FeatureService client with unary and streaming query helpers; grpc is included in the shared semantic fixture/default capability registry.
GeoServices FeatureServerclient.feature_server(id), query_features, apply_editsPartialRead/query/edit, metadata, typed query pages, and item iterators are available.
GeoServices MapServerclient.map_server(id), export_mapPartialMetadata, export, identify, and tile helpers are available.
GeoServices ImageServerclient.image_server(id)New in PythonMetadata, exportImage, identify, query, tile, and legend helpers are available.
GeoServices GeocodeServerclient.geocoder(), HonuaGeocodingClientPython-specificForward, reverse, and suggest helpers are available.
GeoServices GeometryServerclient.geometry_server()New in PythonDiscovery plus project, buffer, simplify, and generic operation helpers are available.
OGC API Featuresclient.ogc_features()Matches core JS shapeLanding, conformance, collections, queryables, item pages, item iterators, collect-all paging, and item CRUD are available.
OGC API Mapsclient.ogc_maps()New in PythonLanding, conformance, OpenAPI, map, styled map, and map tileset helpers are available.
OGC API Tilesclient.ogc_tiles()New in PythonLanding, conformance, collections, tile matrix sets, tilesets, and tile helpers are available.
OGC API Coveragesclient.ogc_coverages()New in PythonThin wrapper is present for the advertised endpoint family; server support may vary by deployment.
OGC API Processesclient.ogc_processes()New in PythonIncluded because Honua Server exposes the surface; useful for integration test coverage.
OGC API Recordsclient.ogc_records()New in PythonLanding, conformance, OpenAPI, collections, queryables, record search pages, record iterators, and record detail helpers are available.
STACclient.stac()New in PythonCatalog, collections, items, item, search, item pages, and search item iterators are available.
WFS 2.0client.wfs()New in PythonCapabilities, describeFeatureType, getFeature, and transaction helpers are available.
WMSclient.wms(service_id)New in PythonService-scoped capabilities, map, feature-info, and binary metadata helpers are available.
WMTSclient.wmts(service_id)New in PythonService-scoped capabilities, tile, and binary metadata helpers are available.
OData v4client.odata()New in PythonService document, metadata, query helpers, layers, layer features, paged iterators, and feature helpers are available.

The Python SDK offers a source-bound shared query API for application code that wants one feature shape across queryable data protocols. SourceDescriptor, Query, and Result follow the cross-SDK fixture while keeping Python naming conventions such as out_fields, return_geometry, and query_all(). The lower-level protocol clients intentionally keep protocol-native JSON, XML text, and bytes as their default return shapes. Additive helpers provide typed FeatureServer pages, ODataQuery parameter grouping, and BinaryResponse metadata for WMS/WMTS payloads without forcing heavy local models. That keeps parity focused on endpoint coverage, auth, retries, timeouts, and normalized errors while preserving standard payloads for GeoPandas, PySTAC, GDAL/OGR, and analyst workflows.

Sync and async HTTP clients expose the same protocol factory names. The compatibility gate snapshots those factories and fails on unallowlisted drift.

See Protocol Examples for concise examples of each public protocol wrapper and its response shape.

Metadata and catalog reads are intentionally split by source of truth: list_services() and the GeoServices wrappers expose service/layer metadata, stac() exposes STAC catalogs and scene/item search, ogc_records() exposes OGC API Records catalog search and detail payloads, and honua_admin exposes admin metadata resources, manifests, and migration inventory reads. Scenes use STAC item/search helpers unless a deployment also publishes them into an OGC Records collection.

The staging smoke lane backs this parity table with SDK-owned live probes for the public protocol clients. The smoke report records the SDK package version, server commit/image metadata, seed profile, protocol surface, SDK method, request path, and bounded HTTP error body summaries for each probe. Optional surfaces are reported as skipped when a deployment does not advertise or enable them.