A boto3-compatible SDK for CTyun Object Storage (ZOS) with httpx backend
Project description
CTyun ZOS SDK
A boto3-compatible SDK for CTyun Object Storage (ZOS) with httpx backend. This SDK provides both synchronous and asynchronous interfaces for interacting with CTyun's S3-compatible object storage service.
Features
- boto3-compatible API: Familiar interface for developers already using AWS S3
- Dual interfaces: Both synchronous and asynchronous clients
- httpx backend: Modern HTTP client with better performance and features
- CTyun-specific optimizations: Handles CTyun ZOS service requirements
- Proper signing: AWS SigV4 authentication with CTyun-specific header handling
- Type hints: Full type annotations for better development experience
Installation
From PyPI (recommended)
pip install ctyun-zos-sdk
From source
git clone https://github.com/your-org/ctyun-zos-sdk.git
cd ctyun-zos-sdk
pip install -e .
Quick Start
Basic Usage
import os
from ctyun_zos_sdk import ZOSSession
# Create a session
session = ZOSSession(
aws_access_key_id=os.environ["S3_ACCESS_KEY"],
aws_secret_access_key=os.environ["S3_SECRET_KEY"],
region_name="huabei-2",
endpoint_url="https://huabei-2.zos.ctyun.cn"
)
# Get S3 client
s3_client = session.client('s3')
# Upload a file
response = s3_client.put_object(
Bucket="your-bucket",
Key="example/test.txt",
Body="Hello, CTyun ZOS!",
ContentType="text/plain"
)
print(f"Upload successful! ETag: {response['ETag']}")
# Download a file
response = s3_client.get_object(
Bucket="your-bucket",
Key="example/test.txt"
)
print(f"Content: {response['Body'].decode('utf-8')}")
Asynchronous Usage
import asyncio
import os
from ctyun_zos_sdk import AsyncZOSClient
async def main():
async with AsyncZOSClient(
access_key=os.environ["S3_ACCESS_KEY"],
secret_key=os.environ["S3_SECRET_KEY"],
region="huabei-2",
endpoint="https://huabei-2.zos.ctyun.cn"
) as client:
# Upload file asynchronously
response = await client.put_object(
Bucket="your-bucket",
Key="async-test.txt",
Body="Async upload content"
)
print(f"Upload successful! ETag: {response['ETag']}")
# Run the async function
asyncio.run(main())
Direct Client Usage
from ctyun_zos_sdk import ZOSClient
# Create client directly
client = ZOSClient(
access_key="your_access_key",
secret_key="your_secret_key",
region="huabei-2",
endpoint="https://huabei-2.zos.ctyun.cn"
)
# Use context manager for automatic cleanup
with client:
response = client.put_object(
Bucket="your-bucket",
Key="direct-test.txt",
Body="Direct client usage"
)
print(f"Upload successful! ETag: {response['ETag']}")
Configuration
Environment Variables
You can configure the SDK using environment variables:
export S3_ACCESS_KEY="your_access_key"
export S3_SECRET_KEY="your_secret_key"
export S3_REGION="huabei-2"
export S3_ENDPOINT="https://huabei-2.zos.ctyun.cn"
Supported Regions
huabei-2- 华北2huadong-1- 华东1huadong-2- 华东2huanan-1- 华南1huanan-2- 华南2
API Reference
ZOSSession
The main session class for managing configuration and creating clients.
session = ZOSSession(
aws_access_key_id="your_key",
aws_secret_access_key="your_secret",
region_name="huabei-2",
endpoint_url="https://huabei-2.zos.ctyun.cn"
)
# Create S3 client
s3_client = session.client('s3')
ZOSClient
Synchronous client for S3 operations.
Methods
get_object(Bucket, Key, **kwargs)- Download an objectput_object(Bucket, Key, Body, **kwargs)- Upload an objectdelete_object(Bucket, Key, **kwargs)- Delete an objectlist_objects_v2(Bucket, Prefix="", **kwargs)- List objects in a bucket
Parameters
Bucket(str): Bucket nameKey(str): Object keyBody(str/bytes/file): Object content for uploadsContentType(str): MIME type of the objectMetadata(dict): Custom metadata for the object
AsyncZOSClient
Asynchronous client with the same interface as ZOSClient.
async with AsyncZOSClient(...) as client:
response = await client.put_object(...)
response = await client.get_object(...)
Examples
See the examples/ directory for more detailed examples:
examples/basic_usage.py- Basic synchronous operationsexamples/async_usage.py- Asynchronous operations and concurrency
Development
Setup Development Environment
# Clone the repository
git clone https://github.com/your-org/ctyun-zos-sdk.git
cd ctyun-zos-sdk
# Install development dependencies
make install-dev
# Install package in development mode
make dev-install
Running Tests
# Run all tests
make test
# Run tests with coverage
make test-cov
# Run linting checks
make lint
# Format code
make format
Building and Publishing
# Build package
make build
# Check package metadata
make check
# Upload to test PyPI
make upload-test
# Upload to PyPI
make upload
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Ensure all tests pass
- Submit a pull request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- Based on the verified examples in the
verified/directory - Uses boto3's authentication and signing mechanisms
- Built with httpx for modern HTTP client capabilities
Support
For issues and questions:
- Create an issue on GitHub
- Check the examples in the
examples/directory - Review the verified examples in the
verified/directory
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 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 ctyun_zos_sdk-0.2.4.tar.gz.
File metadata
- Download URL: ctyun_zos_sdk-0.2.4.tar.gz
- Upload date:
- Size: 16.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ec2c6877c0d308b3a874308c024eb78259898f45406a86a670f4eef535f84d5f
|
|
| MD5 |
36807f3b883eb4eb45cec3ff81bf2a4f
|
|
| BLAKE2b-256 |
ff36677eaa1a92d1a997733c2e8e4f8e488729bb51225943e93cf8092ffde949
|
File details
Details for the file ctyun_zos_sdk-0.2.4-py3-none-any.whl.
File metadata
- Download URL: ctyun_zos_sdk-0.2.4-py3-none-any.whl
- Upload date:
- Size: 14.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0268cacc59c5306de97c0a3bcff535ae0c501178fb5441857f3fcbaea88e99eb
|
|
| MD5 |
8e7abe5ade36c78c1aa0185f1eb7aa9d
|
|
| BLAKE2b-256 |
5860cde33b2a7d653da95bd66b19e671f444761570632f849aa0ccc71d9b213d
|