Skip to main content

Python SDK for interacting with the Heimdall Power External API

Project description

Heimdall API SDK for Python

The official Python SDK for accessing the Heimdall Power External API.

Getting Started

Requirements

Install dependencies:

curl -sSL https://install.python-poetry.org | python3 -
poetry install

Installing the SDK

The package is published to PyPI:

pip install heimdallpower-api-client

Alternatively, it can be downloaded and installed using the GitHub release artifacts:

pip install https://github.com/heimdallpower/api-sdk/releases/download/v1.2.3/heimdallpower_api_client-1.2.3-py3-none-any.whl

Replace the version and filename with the latest from Releases

Usage Example

from heimdall_api_client import HeimdallApiClient
import logging
import pprint

logging.basicConfig(level=logging.INFO)

client = HeimdallApiClient(
    client_id="your_client_id",
    client_secret="your_client_secret",
)

assets = client.get_assets()
pprint.pprint(assets)

More examples can be seen in the examples folder.

Error Handling and Retry

The SDK handles transient infrastructure errors automatically so your application does not have to.

Automatic retry

All methods on HeimdallApiClient retry up to 3 times with exponential backoff (1 s → 2 s → 4 s) on the following transient conditions:

Condition Description
502 Bad Gateway Reverse proxy / Application Gateway could not reach the upstream server
503 Service Unavailable Server temporarily unavailable
504 Gateway Timeout Upstream server did not respond in time

A WARNING log line is emitted for each retry attempt. If all 3 retry attempts are exhausted, a HeimdallApiError is raised with the status code of the last failed response.

Note: 500 Internal Server Error is not retried as it typically indicates a permanent application-level error.

Exceptions

All methods raise HeimdallApiError on non-transient errors. The status_code attribute holds the HTTP status code.

from heimdall_api_client import HeimdallApiClient, HeimdallApiError

client = HeimdallApiClient(client_id="...", client_secret="...")

try:
    dlr = client.get_latest_heimdall_dlr(line_id=line_id)
except HeimdallApiError as e:
    if e.status_code == 404:
        print("Line not found")
    else:
        print(f"API error {e.status_code}: {e}")

Timeouts

Pass a timeout (in seconds) to the constructor. It applies to every request, including each retry attempt.

import httpx
from heimdall_api_client import HeimdallApiClient

# Simple: abort any request that takes longer than 10 s
client = HeimdallApiClient(client_id="...", client_secret="...", timeout=10.0)

# Fine-grained: separate connect and read timeouts
client = HeimdallApiClient(
    client_id="...",
    client_secret="...",
    timeout=httpx.Timeout(connect=5.0, read=30.0),
)

Note: Python synchronous code has no native cancellation equivalent to .NET's CancellationToken. Use timeout to bound how long each request may take. httpx.TimeoutException is raised if the timeout is exceeded.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

heimdallpower_api_client-3.10.0.tar.gz (54.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

heimdallpower_api_client-3.10.0-py3-none-any.whl (184.3 kB view details)

Uploaded Python 3

File details

Details for the file heimdallpower_api_client-3.10.0.tar.gz.

File metadata

File hashes

Hashes for heimdallpower_api_client-3.10.0.tar.gz
Algorithm Hash digest
SHA256 dd0ed5c24798c02f3ca7d1621005a092db43a83f560cfb99ee829e3bf181d8a1
MD5 702762638c71d2e5bd023aa8e21ae6bc
BLAKE2b-256 4adfdd053520f8800d492bd5d824320a0784cc730ed1bf69f73199a9790c3943

See more details on using hashes here.

Provenance

The following attestation bundles were made for heimdallpower_api_client-3.10.0.tar.gz:

Publisher: python-publish.yml on heimdallpower/api-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file heimdallpower_api_client-3.10.0-py3-none-any.whl.

File metadata

File hashes

Hashes for heimdallpower_api_client-3.10.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f2bb1c7b30aef08f4b7f5d7b90985565ceaa298e58f44c1b0ecc6fbc781956f6
MD5 9c9fdf6f7a4e4c18721d68dd9b6fc293
BLAKE2b-256 6a53e22fc935362ceb35eca170ac6b1469d0c0af13ab88e0d51638e2277eebb1

See more details on using hashes here.

Provenance

The following attestation bundles were made for heimdallpower_api_client-3.10.0-py3-none-any.whl:

Publisher: python-publish.yml on heimdallpower/api-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page