A Python wrapper library for the Huwise Automation API
Project description
huwise-utils-py
A Python library for the Huwise Automation API.
Features
- Type-safe configuration with Pydantic-based
HuwiseConfig - Object-oriented API with
HuwiseDatasetclass and method chaining - Async support for high-performance bulk operations
- Airflow-friendly logging via Python stdlib logging
- Dependency injection support for testable code
- Backwards compatible function-based API available
Installation
Using uv (recommended):
uv add huwise-utils-py
Or via pip:
pip install huwise-utils-py
Requirements
- Python Version: 3.12 or higher
- Domain: Optional (defaults to
data.bs.ch; setHUWISE_DOMAINfor other portals) - API Key: Required for Automation API operations
Quick Start
Configuration
Create a .env file:
HUWISE_API_TYPE=automation/v1.0
If your portal is not data.bs.ch, also set:
HUWISE_DOMAIN=your-portal.example.org
Set your API key:
HUWISE_API_KEY=your-api-key
Using HuwiseDataset (Recommended)
from huwise_utils_py import HuwiseDataset
# Create a dataset instance from its ID
dataset = HuwiseDataset.from_id("100123")
# Read metadata
title = dataset.get_title()
description = dataset.get_description()
# Update with method chaining
dataset.set_title("New Title", publish=False).set_description("New description").publish()
# Create a new dataset
created = HuwiseDataset.create(
metadata={"default": {"title": {"value": "My New Dataset"}}},
dataset_id="my-new-dataset",
is_restricted=False,
resource_source_url="https://data-bs.ch/stata/fgi/stac/AFBA_Abfuhrzonen.geojson",
resource_title="my-new-dataset.geojson",
)
# Update dataset-level schema/configuration
created.update_configuration(dataset_id="my-renamed-dataset", is_restricted=True)
# Append a dataset field configuration processor
created.append_field_configuration(
{
"type": "rename",
"label": "Rename field",
"from_name": "old_name",
"to_name": "new_name",
}
)
Using Functions
from huwise_utils_py import get_dataset_title, set_dataset_title
# Read
title = get_dataset_title(dataset_id="100123")
# Write
set_dataset_title("New Title", dataset_id="100123")
# Create
from huwise_utils_py import create_dataset
new_dataset = create_dataset(
metadata={"default": {"title": {"value": "My New Dataset"}}},
dataset_id="my-new-dataset",
resource_source_url="https://data-bs.ch/stata/fgi/stac/AFBA_Abfuhrzonen.geojson",
resource_title="my-new-dataset.geojson",
)
# Upsert an HTTP resource (idempotent create/update)
from huwise_utils_py import upsert_dataset_resource_http
upsert_dataset_resource_http(
dataset_id="100095stac",
source_url="https://data-bs.ch/stata/fgi/stac/AFBA_Abfuhrzonen.geojson",
title="100095stac.geojson",
)
Bulk Operations
from huwise_utils_py import bulk_get_metadata, bulk_get_metadata_async
import asyncio
# Synchronous
metadata = bulk_get_metadata(dataset_ids=["100123", "100456", "100789"])
# Asynchronous (10-100x faster for many datasets)
metadata = asyncio.run(bulk_get_metadata_async(dataset_ids=["100123", "100456", "100789"]))
API Key Setup
To use huwise-utils-py, create an API key with these permissions:
- Browse all datasets
- Create new datasets
- Edit all datasets
- Publish own datasets
For OGD Basel, create your API key here.
Important: Add **/.env to your .gitignore to protect your credentials.
Documentation
Full documentation is available at opendatabs.github.io/huwise-utils-py.
API Reference
This library is a Python client for the Huwise Automation API. The Automation API enables programmatic management of datasets, metadata, resources, security, and more on Huwise (ex Opendatasoft) portals.
For the complete API specification including all available endpoints, request/response schemas, and authentication details, see the official Automation API documentation.
Related Projects
- odsAutomationR - An R package for accessing the Automation API, developed by the Canton of Thurgau. If you're working in R, this package provides similar functionality.
Further Links
License
This project is licensed under the MIT License. See the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file huwise_utils_py-1.5.0.tar.gz.
File metadata
- Download URL: huwise_utils_py-1.5.0.tar.gz
- Upload date:
- Size: 27.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7d36bfac9bbab6d73fed05e426af7caf40fd3e0649b122a7efc9d31a46a47e0a
|
|
| MD5 |
576709f84bf82bc659ffb053ce48d1a2
|
|
| BLAKE2b-256 |
33dd8078303df01b68b24adc45d767700bc1ff6945a93a2881bba06cc9958b79
|
File details
Details for the file huwise_utils_py-1.5.0-py3-none-any.whl.
File metadata
- Download URL: huwise_utils_py-1.5.0-py3-none-any.whl
- Upload date:
- Size: 32.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
91e3a4b015037d11bda275e497a4d27ae676451615c23f9d8a36314f8efa830d
|
|
| MD5 |
16942170e65ba2e39196179642e6a521
|
|
| BLAKE2b-256 |
ebc8d4ad957f0c8b472c5ff92440ef66eae624d2712a9280452c0f2cd67576be
|