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.12.2-cp311-abi3-win_amd64.whl (1.6 MB view details)

Uploaded CPython 3.11+Windows x86-64

subnoto_api_client-2.12.2-cp311-abi3-macosx_11_0_arm64.whl (1.8 MB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

File details

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

File metadata

File hashes

Hashes for subnoto_api_client-2.12.2-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 cb40f845abe2cfdcffb42f01e85e651e1b9c511c2ee2e7863c0d0fa54e9c9cba
MD5 db2ee1ae3f6e968e9754e6ebca0dcfa4
BLAKE2b-256 f15233e355b56ea983090ec34cdead21dce7a5ad072f0fb03525dfd7beaa17a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for subnoto_api_client-2.12.2-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.12.2-cp311-abi3-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for subnoto_api_client-2.12.2-cp311-abi3-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8ef8125d127012e91255d646047e9ce3a9056876dc8bb0bbed575878dee0b124
MD5 e7af23a2e7caae1d233e3ee6c0c246f7
BLAKE2b-256 95beaaab556fadaa3ebb3e77e2d1a61aebee774bc645f47eb358c823e3326271

See more details on using hashes here.

Provenance

The following attestation bundles were made for subnoto_api_client-2.12.2-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.12.2-cp311-abi3-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for subnoto_api_client-2.12.2-cp311-abi3-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 23efd10b7be4b2aaecb315674fa59b1571d3b2589ea1fcd5964653434baca54f
MD5 e4a11b4bd9d9955fa6fc6a19b6457027
BLAKE2b-256 b3ab636544e72695d2864c43dfb8e84925e4efdfcdab905caf83ff5bde452534

See more details on using hashes here.

Provenance

The following attestation bundles were made for subnoto_api_client-2.12.2-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.12.2-cp311-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for subnoto_api_client-2.12.2-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d6de57ea0fe93f83942c7f6c1f275714628bcf3863f68fafa834cfe5f63fa61a
MD5 74fe853cadcf7ec23c478a77bd967c4e
BLAKE2b-256 71901b98530ec3cefd360ab5e18a308a0cd3bd8c742684ac4a231d9ad080d44b

See more details on using hashes here.

Provenance

The following attestation bundles were made for subnoto_api_client-2.12.2-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