Skip to main content

honua-sdk

Python client for Honua Server, the multi-protocol geospatial server behind Honua -- query geospatial features, geocode addresses, stream data over gRPC, and convert results to GeoDataFrames. Sync and async clients included.

Status: Alpha (0.x). APIs may change before 1.0. Breaking changes to the public API are gated by a compatibility snapshot and a per-capability SDK coverage snapshot.

See the monorepo README for the full documentation index, install matrix, and release notes.

Highlights

  • Sync and async clients (HonuaClient, AsyncHonuaClient) with shared retry, refreshable-auth, and error-handling behavior.
  • Source-bound facade (client.source(...)) returns normalized features across GeoServices FeatureServer, OGC API Features, STAC, and OData.
  • Protocol wrappers for FeatureServer/MapServer/ImageServer/GeometryServer, SceneServer, ElevationServer, OGC Features/Maps/Tiles/Coverages/Processes/Records, STAC, WFS, WMS, WMTS, OData, and geocoding.
  • Optional geopandas extra converts query responses to GeoDataFrames in one call via honua_sdk.geopandas; the raster extra adds raster result interop (rasterio / rioxarray / xarray).
  • Optional grpc extra unlocks streaming feature queries through honua_sdk.grpc.HonuaGrpcClient / HonuaGrpcAsyncClient.
  • Two CLIs ship with the package: honua (services / layers / style apply / sanitized doctor diagnostic bundles) and honua-migrate (offline ArcPy migration tooling: scan and translate ArcPy scripts, classify .pyt and .atbx toolboxes and geoprocessing services -- no arcpy install needed).

Install

pip install honua-sdk                   # core data-plane client
pip install "honua-sdk[geopandas]"      # + GeoDataFrame helpers
pip install "honua-sdk[grpc]"           # + streaming gRPC client
pip install "honua-sdk[raster]"         # + raster interop (rasterio/rioxarray/xarray)
pip install "honua-sdk[grpc,geopandas,raster]"  # everything

Requires Python 3.11+.

Install extras from the same package index and with the same version constraints as the core SDK. For a reproducible release, pin the same SDK version in each command; an older Git tag would replace the installed package with that version.

Minimal Example

The examples read the public, anonymous demo server at https://demo.honua.io and its maui-zoning FeatureServer (layer 2: zoning polygons with zone_code, zone_dist, cp_area and island). To use your own server, change the base URL, service and layer.

from honua_sdk import HonuaClient, Query, SourceDescriptor, SourceLocator

with HonuaClient("https://demo.honua.io") as client:
    source = client.source(
        SourceDescriptor(
            id="maui-zoning",
            protocol="geoservices-feature-service",
            locator=SourceLocator(service_id="maui-zoning", layer_id=2),
        )
    )
    result = source.query(Query(where="island = 'Maui'", out_fields=["*"]))
    print(f"Found {len(result.features)} features")
    for feature in result.features[:3]:
        print(feature.id, feature.properties)

    # Requires the [geopandas] extra
    gdf = result.to_geodataframe()  # GeoDataFrame with geometry column + CRS set

The same SourceDescriptor with a different protocol (ogc-features, stac, odata, ...) returns the same normalized Result shape.

Always use the with HonuaClient(...) as client: form -- it guarantees the underlying httpx connections are returned to the pool on exit, even when a request raises.

Async

import asyncio

from honua_sdk import AsyncHonuaClient, Query, SourceDescriptor, SourceLocator

async def main() -> None:
    async with AsyncHonuaClient("https://demo.honua.io") as client:
        source = client.source(
            SourceDescriptor(
                id="maui-zoning",
                protocol="geoservices-feature-service",
                locator=SourceLocator(service_id="maui-zoning", layer_id=2),
            )
        )
        result = await source.query(Query(where="island = 'Maui'", out_fields=["*"]))
        print(f"Found {len(result.features)} features")
        async for feature in source.stream(Query(where="zone_code = '929'")):  # parks
            print(feature.id, feature.properties)


asyncio.run(main())

Works with FastAPI, asyncio pipelines, Jupyter, and any other async framework. asyncio.run(main()) is for scripts; Jupyter and IPython already run an event loop, where asyncio.run raises RuntimeError, so call await main() in a notebook cell instead. Sync and async clients share identical method names, retry, and error-handling behavior.

Protocol IDs follow the canonical cross-SDK names (geoservices-feature-service, ogc-features, stac, odata, ...). Common aliases (feature-server, featureserver, ogc-api-features, ...) are accepted and normalized through honua_sdk.normalize_protocol(...).

Server capability baseline

This SDK requires a Honua Server that advertises these capabilities in its capability manifest:

  • discovery.capability-manifest
  • serve.geoservices-featureserver
  • serve.ogc-api-features

All three ship in Honua Server's first published release, so that release is the minimum supported server (minimumServerVersion: first-release). The machine-readable declaration is release/sdk-capability-baseline.json; the Honua platform release reads it at the source revision this package was built from to decide which server versions this SDK is certified against.

Documentation

Rendered docs site: honua-io.github.io/honua-sdk-python. Platform docs: honua.io and honua.gitbook.io/honuaio.

Related: honua-admin (control-plane client), honua-sdk-js (JS/TS SDKs + MCP server), honua-sdk-dotnet (.NET SDKs).

License

Apache-2.0

Metadata

Release files for honua-sdk 0.1.17

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for honua-sdk 0.1.17
File Size Uploaded Provenance
honua_sdk-0.1.17.tar.gz 268.0 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for honua-sdk 0.1.17
File Interpreter ABI Platform
honua_sdk-0.1.17-py3-none-any.whl Python 3 none any Details

Total release size: 580.6 kB

Release files / honua_sdk-0.1.17.tar.gz

Download URL honua_sdk-0.1.17.tar.gz
Size 268.0 kB
Tags Source
SHA-256 checksum
How to use checksums
27f08cb523716a53a6dce1526f5889ce804805c725924c8a62c8bb8b58cf9484
BLAKE2b-256 checksum
How to use checksums
7c120bca8e62c61dedeb024e70bc1d2f90fe76f875d04b8afa7c54cfd9e3ce45
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Release files / honua_sdk-0.1.17-py3-none-any.whl

Download URL honua_sdk-0.1.17-py3-none-any.whl
Size 312.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
df6e3ffdb13e25a4771d5b6f7845e433a40f3ecbba99cfc4e969916129c68b89
BLAKE2b-256 checksum
How to use checksums
f06e58c61eceb96559c5b9ab8f8db1c9177dfdc672a4056a41eb574dfb8f9f52
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Security for honua-sdk 0.1.17

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for honua_sdk-0.1.17.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page