Skip to main content

Central Storage Platform Compute client

pip install central-storage-platform-compute

The package is published to PyPI, so compute nodes (RunPod, Colab, a bare GPU box) install it without access to the platform's private repositories. It has no third-party dependencies and needs Python 3.10+. To work on the client itself, clone this repository and run pip install -e compute-python.

from central_storage_compute import ComputeClient

client = ComputeClient("https://api.example.invalid", token="cpt_<show-once-token>")
result = client.download("<file-id>", "./data.bin")
print(result.bytes_written, result.sha256)

upload = client.upload("./result.bin", destination="results/", mode="auto")
print(upload.file_id, upload.mode, upload.sha256)

The client waits up to one hour for each API or storage request by default, and a completion that outlives a single request is replayed under its original Idempotency-Key until the API reports a result — a read timeout while the server finalizes a multi-gigabyte object never discards the uploaded bytes. Only an outright rejection from the API aborts a multipart upload. For a slow network or an exceptionally large finalization, set a different per-request limit when creating the client:

client = ComputeClient("https://api.example.invalid", token="cpt_<show-once-token>", timeout=7_200)

Pass the API origin only (for example, https://central-storage-platform-api.phasuwut.com). Do not include /api/v1, /compute, a route, or *; the client supplies the API path itself. Storage upload failures report only a safe S3 error code and request ID, never a presigned URL.

An interrupted multipart upload is resumed by default: the client records which upload a file belongs to and, on the next upload() of that same file, asks the API which parts S3 actually holds and sends only what is missing. A part failure therefore leaves the upload open rather than aborting it. To give up instead and release the staged parts, call client.abort_upload(upload_id, source); resume is bounded by the compute token that created the upload, so a token that has expired starts the transfer over. Pass resume=False to always start clean.

Multipart part URLs are signed as the transfer reaches them and re-signed whenever their remaining lifetime no longer covers a part or S3 rejects one, so an upload that outlives a presigned URL continues instead of failing at the tail. Raise max_connections for a long-haul link — a single TCP stream to a distant region is limited by round-trip time, not bandwidth, so parallel parts are what make a multi-gigabyte upload finish inside the token's lifetime:

upload = client.upload("./model.zip", destination="models/", mode="multipart", max_connections=32)

download(mode="auto") follows the transfer mode and concurrency returned by the API. Use mode="parallel" to request bounded HTTP Range workers; the client falls back to streaming mode when the storage endpoint does not support ranges. upload(mode="auto") tries the single path and switches to the token-scoped multipart path when the API requires it.

The token is supplied at runtime. The client never writes it or a presigned URL to a resume manifest or log. Resume manifests contain only file identity, expected size/checksum and completed byte ranges. All upload completion calls carry a fresh Idempotency-Key. Upload checksums are disabled by default for compatibility with S3-compatible presigned PUT endpoints; pass include_checksum=True only when the target bucket supports signed x-amz-checksum-sha256 headers.

Releasing

central-storage-platform-compute is published to PyPI from this repository. Bump __version__ in src/central_storage_compute/__init__.py (pyproject.toml reads the version from there), then tag:

git tag compute-client-v0.2.0 && git push origin compute-client-v0.2.0

.github/workflows/publish-compute-client.yml checks the tag against __version__, runs the tests, builds the sdist and wheel, and uploads them through PyPI Trusted Publishing — no API token is stored in the repository. PyPI never lets a version number be reused, so a bad release needs a new patch version rather than a re-upload.

Metadata

Release files for central-storage-platform-compute 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for central-storage-platform-compute 0.2.0
File Size Uploaded Provenance Actions
central_storage_platform_compute-0.2.0.tar.gz 20.7 kB With provenance Details for central_storage_platform_compute-0.2.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for central-storage-platform-compute 0.2.0
File Interpreter ABI Platform Actions
central_storage_platform_compute-0.2.0-py3-none-any.whl Python 3 none any Details for central_storage_platform_compute-0.2.0-py3-none-any.whl

Total release size: 35.8 kB

Release files / central_storage_platform_compute-0.2.0.tar.gz

Download URL central_storage_platform_compute-0.2.0.tar.gz
Size 20.7 kB
Tags Source
SHA-256 checksum
How to use checksums
8b4bfef10b2b1cf1c46aa5b65002a2e84edc35132769ab2b396e559e5ebb97cb
BLAKE2b-256 checksum
How to use checksums
a483388968144ea4099e39d15788cf9d76bc3abc576e6621a4e3ad4ae377f2c4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / central_storage_platform_compute-0.2.0-py3-none-any.whl

Download URL central_storage_platform_compute-0.2.0-py3-none-any.whl
Size 15.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c521f2ebfc2c6238cbd8f9fe073977a6957ab74df7bde7c08dc9c89cac8f818e
BLAKE2b-256 checksum
How to use checksums
ffafc7287e76249cf4f074e381d4fa610116a965fb4383df9d1412de54fa133e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Security for central-storage-platform-compute 0.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for central_storage_platform_compute-0.2.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page