- Added timestamp, signature, public, version, and deadline_height to TurboUploadResponse and TurboUploadStatus data classes
- Extracted receipt fields in
_upload_single()from API response JSON (previously discarded) - Extracted receipt fields in
get_status()from chunked upload receipt dict - Carried all fields through the
TurboUploadStatus→TurboUploadResponseconversion
- Multipart upload support with progress callbacks
- True streaming upload support with
StreamingDataItem - Stream factory pattern for reliable stream handling during signing
- Read
BinaryIOinto bytes so stream factory survivessign()close
- Refactored signer from constructor to
sign()method onStreamingDataItem - Updated mypy Python version target
- Pinned
blackdependency version to avoid failures with Python 3.11
- Stream signing support for large files via
sign_stream()function deep_hash_blob_stream()for streaming hash computation without loading entire payload into memoryget_signature_data_stream()for computing signature hash with streaming data- Progress callback support:
on_progress(processed_bytes, total_bytes)during signing - Default chunk size of 256 KiB (matches Arweave chunk size)
- Exported new functions from
turbo_sdk.bundlemodule
- Moved
turbo_sdkpackage fromsrc/to root directory - Extracted
b64url_decodeutility function toturbo_sdk/bundle/utils.py
- Moved
get_wallet_address()to Signer base class with implementations in ArweaveSigner and EthereumSigner - Moved
create_signed_headers()to Signer base class (shared implementation for all signers) - Removed
get_wallet_address()and_create_signed_headers()from Turbo client - Removed
targetparameter fromupload()method
Initial release of the Turbo Python SDK.
- Basic client structure for interacting with Turbo service
- Type hints and modern Python packaging setup