Python SDK for interacting with the Ardrive Turbo Upload and Payment Service
Project description
Turbo Python SDK
A Python SDK for interacting with the ArDrive Turbo Upload service, supporting both Ethereum and Arweave signers for permanent data storage on Arweave.
Get Started
Installation
pip install turbo-sdk
Quick Start
Ethereum Usage
from turbo_sdk import Turbo, EthereumSigner
# Create Ethereum signer
signer = EthereumSigner("0x1234567890abcdef...") # Your private key
# Create Turbo client
turbo = Turbo(signer, network="mainnet")
# Upload data
result = turbo.upload(b"Hello, Turbo!", tags=[
{"name": "Content-Type", "value": "text/plain"},
{"name": "App-Name", "value": "MyApp"}
])
print(f"✅ Uploaded! TX ID: {result.id}")
print(f"🌐 View at: https://arweave.net/{result.id}")
Arweave Usage
import json
from turbo_sdk import Turbo, ArweaveSigner
# Load Arweave wallet (JWK format)
with open("test-wallet.json") as f:
jwk = json.load(f)
# Create Arweave signer
signer = ArweaveSigner(jwk)
# Create Turbo client
turbo = Turbo(signer, network="mainnet")
# Upload data
result = turbo.upload(b"Hello from Arweave!", tags=[
{"name": "Content-Type", "value": "text/plain"}
])
print(f"✅ Uploaded! URI: ar://{result.id}")
APIs
Core Classes
Turbo(signer, network="mainnet")
Main client for interacting with Turbo services.
Parameters:
signer: EitherEthereumSignerorArweaveSignerinstancenetwork:"mainnet"or"testnet"(default:"mainnet")
Methods:
upload(data, tags=None) -> TurboUploadResponse
Upload data to the Turbo datachain.
result = turbo.upload(
data=b"Your data here",
tags=[
{"name": "Content-Type", "value": "application/json"},
{"name": "App-Name", "value": "MyApp"}
]
)
Returns: TurboUploadResponse
@dataclass
class TurboUploadResponse:
id: str # Transaction ID
owner: str # Owner address
data_caches: List[str] # Cache endpoints
fast_finality_indexes: List[str] # Fast finality indexes
winc: str # Winston credits cost
get_balance(address=None) -> TurboBalanceResponse
Get winston credit balance. Uses signed request for authenticated balance check when no address specified.
# Check your own balance (signed request)
balance = turbo.get_balance()
print(f"Balance: {balance.winc} winc")
# Check another address (no signature needed)
other_balance = turbo.get_balance("0x742d35Cc6635C0532925a3b8C17af2e95C5Aca4A")
print(f"Other balance: {other_balance.winc} winc")
Returns: TurboBalanceResponse
@dataclass
class TurboBalanceResponse:
winc: str # Available winston credits
controlled_winc: str # Controlled amount
effective_balance: str # Effective balance including shared credits
get_upload_price(byte_count) -> int
Get the cost to upload data of a specific size.
cost = turbo.get_upload_price(1024) # Cost for 1KB
print(f"Upload cost: {cost} winc")
Signers
EthereumSigner(private_key)
Ethereum signer using ECDSA signatures.
Parameters:
private_key(str): Hex private key with or without0xprefix
signer = EthereumSigner("0x1234567890abcdef...")
ArweaveSigner(jwk)
Arweave signer using RSA-PSS signatures.
Parameters:
jwk(dict): Arweave wallet in JWK format
signer = ArweaveSigner({
"kty": "RSA",
"n": "...",
"e": "AQAB",
"d": "...",
# ... other JWK fields
})
Signer Methods
Both signers provide:
get_wallet_address() -> str
Get the wallet address for the signer.
address = signer.get_wallet_address()
print(f"Wallet address: {address}")
create_signed_headers() -> dict
Create signed headers for authenticated API requests.
headers = signer.create_signed_headers()
Developers
Setup
- Crete a virtual environment:
python -m venv venv
source venv/bin/activate
- Install dependencies:
pip install -e ".[dev]"
- Run tests:
pytest
That's it! The test suite includes comprehensive tests for all components without requiring network access.
Acknowledgments
This package leverages implementations from the Irys Python SDK for ANS-104 DataItem format and cryptographic operations. Special thanks to the Irys team for their work on permanent data storage standards.
License
MIT License - see LICENSE for details.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file turbo_sdk-0.0.4.tar.gz.
File metadata
- Download URL: turbo_sdk-0.0.4.tar.gz
- Upload date:
- Size: 27.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f7ccbc45718164c0d5d9695469f57be5c43c9c50138cc5935536cbc9decb6172
|
|
| MD5 |
1a988bf4e3111c8063918913187df82e
|
|
| BLAKE2b-256 |
99cf6aa8fdb30059d34d2e458b1a0caf8d923aa72c86ed0085931cdab48afde5
|
Provenance
The following attestation bundles were made for turbo_sdk-0.0.4.tar.gz:
Publisher:
release.yml on ardriveapp/turbo-python-sdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
turbo_sdk-0.0.4.tar.gz -
Subject digest:
f7ccbc45718164c0d5d9695469f57be5c43c9c50138cc5935536cbc9decb6172 - Sigstore transparency entry: 821268245
- Sigstore integration time:
-
Permalink:
ardriveapp/turbo-python-sdk@47f881c87f40cd10f093a0f2610d48fe46b6134b -
Branch / Tag:
refs/heads/alpha - Owner: https://github.com/ardriveapp
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@47f881c87f40cd10f093a0f2610d48fe46b6134b -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file turbo_sdk-0.0.4-py3-none-any.whl.
File metadata
- Download URL: turbo_sdk-0.0.4-py3-none-any.whl
- Upload date:
- Size: 33.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
798ee787b264f9d7b4a6b25ad1935d9af305b217f41fcf373102de9b04cc1a9a
|
|
| MD5 |
a0229f6bc572a8bd876b5b425e8cca6b
|
|
| BLAKE2b-256 |
19d43bbf3aee8e0b6307ff7b5258ab34311bb62a21ddb37a569416d573c76a6e
|
Provenance
The following attestation bundles were made for turbo_sdk-0.0.4-py3-none-any.whl:
Publisher:
release.yml on ardriveapp/turbo-python-sdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
turbo_sdk-0.0.4-py3-none-any.whl -
Subject digest:
798ee787b264f9d7b4a6b25ad1935d9af305b217f41fcf373102de9b04cc1a9a - Sigstore transparency entry: 821268246
- Sigstore integration time:
-
Permalink:
ardriveapp/turbo-python-sdk@47f881c87f40cd10f093a0f2610d48fe46b6134b -
Branch / Tag:
refs/heads/alpha - Owner: https://github.com/ardriveapp
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@47f881c87f40cd10f093a0f2610d48fe46b6134b -
Trigger Event:
workflow_dispatch
-
Statement type: