Skip to main content

Python client for the Subnoto Public API

Project description

Subnoto Python SDK

Python client for the Subnoto Public API.

Table of contents

Installation

Requirements: Python 3.9+

Install from PyPI:

pip install subnoto-api-client

Usage

The SDK provides both async and sync clients. Use SubnotoClient for async/await code or SubnotoSyncClient for synchronous code. Credentials are required; you can pass them explicitly or set SUBNOTO_ACCESS_KEY and SUBNOTO_SECRET_KEY.

Async Example

import asyncio
from subnoto_api_client import SubnotoClient, SubnotoConfig

async def main():
    async with SubnotoClient(SubnotoConfig()) as client:
        response = await client.post("/public/workspace/list", json={})
        print(f"Workspaces: {response.json()}")

if __name__ == "__main__":
    asyncio.run(main())

Sync Example

from subnoto_api_client import SubnotoSyncClient, SubnotoConfig

with SubnotoSyncClient(SubnotoConfig()) as client:
    response = client.post("/public/workspace/list", json={})
    print(f"Workspaces: {response.json()}")

Configuration

Option Type Required Description
access_key str Yes API access key (or set env var SUBNOTO_ACCESS_KEY)
secret_key str Yes API secret key, hex-encoded (or set env var SUBNOTO_SECRET_KEY)

Error handling and tunnel retry

The SDK follows the Subnoto error reference. On tunnel 401 errors (TUNNEL_SESSION_NOT_FOUND or TUNNEL_ERROR), the client automatically invalidates the tunnel session and retries the request up to 3 times with a new session. You do not need to manage tunnel lifecycle when using SubnotoClient or SubnotoSyncClient.

For custom handling you can use the exported helpers and codes. You can raise SubnotoError(message, response.status_code) with the response body message and status code.

from subnoto_api_client import (
    SubnotoClient,
    SubnotoConfig,
    get_error_code,
    is_tunnel_error,
    SubnotoError,
    TUNNEL_SESSION_NOT_FOUND,
    TUNNEL_ERROR,
)

async def main():
    async with SubnotoClient(SubnotoConfig()) as client:
        response = await client.post("/public/utils/whoami", json={})
        if response.status_code != 200:
            body = response.json()
            code = get_error_code(body)  # works with API shape (error.code) and top-level code
            if is_tunnel_error(body):
                # SDK already retried (up to 3 times); this is the result after retries
                pass
            msg = body.get("error", {}).get("message", str(body)) if isinstance(body, dict) else str(body)
            raise SubnotoError(msg, response.status_code)

See the Subnoto error reference for all error codes.

Documentation

The API documentation is available here.

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 Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

subnoto_api_client-2.15.0-cp311-abi3-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.11+Windows x86-64

subnoto_api_client-2.15.0-cp311-abi3-macosx_11_0_arm64.whl (2.0 MB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

File details

Details for the file subnoto_api_client-2.15.0-cp311-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for subnoto_api_client-2.15.0-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 fb5b45aa8f946b5c4477e246bb9c1d925bd1070c21cdc3bf055f253f46a72822
MD5 a0f61e3b8d126c8fe463e5c830427582
BLAKE2b-256 9b309b76af227accc6e937fb37be48fe5f43f0badb2cc73f3e5616a01cfbadce

See more details on using hashes here.

Provenance

The following attestation bundles were made for subnoto_api_client-2.15.0-cp311-abi3-win_amd64.whl:

Publisher: .gitlab-ci.yml on subnoto/subnoto-monorepo-public

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

File details

Details for the file subnoto_api_client-2.15.0-cp311-abi3-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for subnoto_api_client-2.15.0-cp311-abi3-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7b4051637f275135be15ee3de892855902db20c6cec9cbd50aa837281b4600e7
MD5 d598da60fcbe287cf08fcc835c5aed83
BLAKE2b-256 4f17ac93a72b964395e76e150fded22275cf4683d65d34aa1fcdb66451922886

See more details on using hashes here.

Provenance

The following attestation bundles were made for subnoto_api_client-2.15.0-cp311-abi3-manylinux2014_x86_64.whl:

Publisher: .gitlab-ci.yml on subnoto/subnoto-monorepo-public

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

File details

Details for the file subnoto_api_client-2.15.0-cp311-abi3-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for subnoto_api_client-2.15.0-cp311-abi3-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2198b33fc412a4be7446c4fcd607dd7b7eb33a30eafbb2205b6466d3d65e1ed3
MD5 e81c250c938c27f72f24e2b36633cd20
BLAKE2b-256 2b0d8c5f59ebbec410bd1046dac3ad5c74d554e4c999b869ceaeef6e8bc24770

See more details on using hashes here.

Provenance

The following attestation bundles were made for subnoto_api_client-2.15.0-cp311-abi3-manylinux2014_aarch64.whl:

Publisher: .gitlab-ci.yml on subnoto/subnoto-monorepo-public

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

File details

Details for the file subnoto_api_client-2.15.0-cp311-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for subnoto_api_client-2.15.0-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ce75d316ae01551d42caf3a3b5e1b87895386043a1e000d223700d3e58c01981
MD5 161b212d89de523fe63214621102df55
BLAKE2b-256 2a9901e3bdc90e95104b2d3b7f643fc62a172153df92afab31560302676d5cac

See more details on using hashes here.

Provenance

The following attestation bundles were made for subnoto_api_client-2.15.0-cp311-abi3-macosx_11_0_arm64.whl:

Publisher: .gitlab-ci.yml on subnoto/subnoto-monorepo-public

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