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

Uploaded CPython 3.11+Windows x86-64

subnoto_api_client-2.15.2-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.2-cp311-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for subnoto_api_client-2.15.2-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 d2c5f264b3bf54ebc266d427c928303291ffd4eeea1b2857f71a267af8a4aaaf
MD5 96a625a8f84e326f8afdf3b895e3fd2b
BLAKE2b-256 f4b8c856875acfd4059fdfdc06b5ce4d330eeada45376896a9ce37603c496346

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for subnoto_api_client-2.15.2-cp311-abi3-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 37e55d37595413ba87c2be532889eec391e3dfdbc754794268d73c4f9f1ca0d3
MD5 283b3aaf9f8ffab01f407c8a309e4d81
BLAKE2b-256 0f1f2a4e95948ea7e9704414421c1bbeaa9a53318b80cc9d6a3f81f47aa34372

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for subnoto_api_client-2.15.2-cp311-abi3-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a8b768a28a4189517d3d67d705ea1f0676163e4ee8f1bdfed82b9b8c2abdf850
MD5 52594ebc9d2eee861ab4abfc459389d7
BLAKE2b-256 b1cac785f087df92e7faa6cf0ebe03a12a2a134dbd4cdf71757ce4239ee4f5f0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for subnoto_api_client-2.15.2-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5e6db2bfaf7f87157f4282e9af74a47a2d965cdaef4fa57489a9b8507c9fa86c
MD5 01b71b61a013b4c08886194ff6e299d0
BLAKE2b-256 7a3220453a2ec0c91654df2d6061b5c711800436b249285e807695280b7a5bba

See more details on using hashes here.

Provenance

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