Skip to main content

Unified object storage client API

Project description

Object Storage Client

A unified object storage client for Rust and Python, supporting S3, GCS, Azure Blob Storage, HTTP/HTTPS, and Local Filesystem. It provides a simple, URL-based API for object operations, including cross-provider copy and move.

Features

  • Unified API: Single interface for various storage backends.
  • Cross-Provider: Copy or move objects between different storage providers (e.g., S3 to Local FS).
  • Existence checks: Test whether an object or bucket exists without raising on a miss.
  • Bucket creation: Create buckets on S3 (or directories for local paths).
  • Pre-signed URLs: Generate time-limited, credential-free URLs for S3, GCS and Azure.
  • Multi-Language: Native Rust library with Python 3.13+ bindings.
  • Streaming: Async streaming support for both Rust and Python.
  • CLI: osc command-line tool for quick operations.

Supported Schemes

  • s3://bucket/path (AWS S3)
  • gs://bucket/path or gcs://bucket/path (Google Cloud Storage)
  • az://, wasb://, wasbs://, abfs://, or abfss:// (Azure Blob Storage)
  • http://host/path or https://host/path (HTTP/HTTPS)
  • file:///absolute/path or local_path (Local Filesystem)

Provider Configuration & Examples

Credentials are read from the environment when a backend is first used — the client never takes them as constructor arguments. The bucket / container is always taken from the URL host, so the same process can talk to several buckets across several providers at once. Set the variables below before constructing ObjectStorageClient (e.g. export them in your shell, a .env file, or your container/runtime configuration).

The examples reuse the same operation (put then get); see the Rust, Python and CLI sections for the full API.

AWS S3

Provider: Amazon S3 (and S3-compatible stores such as MinIO or SeaweedFS).

Env variables:

# Standard AWS variables (read via AmazonS3Builder::from_env())
export AWS_ACCESS_KEY_ID="AKIA..."
export AWS_SECRET_ACCESS_KEY="..."
export AWS_REGION="us-east-1"
# Optional: session token for temporary credentials
export AWS_SESSION_TOKEN="..."
# Optional: custom endpoint for S3-compatible stores (e.g. MinIO)
export AWS_ENDPOINT="https://s3.us-east-1.amazonaws.com"

# Convenience overrides honoured by this client (take precedence when set):
#   S3_REGION, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY
# Set S3_SECURE=false to allow plain HTTP (e.g. a local MinIO over http://):
#   export S3_SECURE=false

Rust example:

use object_storage_client::ObjectStorageClient;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = ObjectStorageClient::new();
    client.put("s3://my-bucket/hello.txt", &b"Hello from Rust!"[..]).await?;
    let data = client.get("s3://my-bucket/hello.txt").await?;
    println!("{}", String::from_utf8_lossy(&data));
    Ok(())
}

Python example:

import asyncio
from object_storage_client import ObjectStorageClient

async def main():
    client = ObjectStorageClient()
    await client.put_object("s3://my-bucket/hello.txt", b"Hello from Python!")
    data = await client.get_object("s3://my-bucket/hello.txt")
    print(data.decode())

asyncio.run(main())

CLI example:

osc put hello.txt s3://my-bucket/hello.txt
osc get s3://my-bucket/hello.txt ./hello.txt

Azure Blob Storage

Provider: Azure Blob Storage. Use the az:// scheme (the host is the container); wasb(s):// and abfs(s):// are also accepted.

Env variables:

export AZURE_STORAGE_ACCOUNT_NAME="mystorageaccount"

# Pick ONE authentication method:

# 1. Shared account key
export AZURE_STORAGE_ACCOUNT_KEY="..."

# 2. Shared Access Signature (SAS) token
#   export AZURE_STORAGE_SAS_KEY="?sv=..."

# 3. Service principal (Azure AD)
#   export AZURE_STORAGE_CLIENT_ID="..."
#   export AZURE_STORAGE_CLIENT_SECRET="..."
#   export AZURE_STORAGE_TENANT_ID="..."

Rust example:

use object_storage_client::ObjectStorageClient;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = ObjectStorageClient::new();
    client.put("az://my-container/hello.txt", &b"Hello from Rust!"[..]).await?;
    let data = client.get("az://my-container/hello.txt").await?;
    println!("{}", String::from_utf8_lossy(&data));
    Ok(())
}

Python example:

import asyncio
from object_storage_client import ObjectStorageClient

async def main():
    client = ObjectStorageClient()
    await client.put_object("az://my-container/hello.txt", b"Hello from Python!")
    data = await client.get_object("az://my-container/hello.txt")
    print(data.decode())

asyncio.run(main())

CLI example:

osc put hello.txt az://my-container/hello.txt
osc get az://my-container/hello.txt ./hello.txt

Google Cloud Storage

Provider: Google Cloud Storage. Use the gs:// (or gcs://) scheme; the host is the bucket.

Env variables:

# Path to a service-account JSON key file...
export GOOGLE_SERVICE_ACCOUNT="/path/to/service-account.json"
# (GOOGLE_SERVICE_ACCOUNT_PATH and the standard
#  GOOGLE_APPLICATION_CREDENTIALS are also recognised.)

# ...or the service-account JSON supplied inline instead of a path:
#   export GOOGLE_SERVICE_ACCOUNT_KEY='{"type":"service_account", ...}'

Rust example:

use object_storage_client::ObjectStorageClient;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = ObjectStorageClient::new();
    client.put("gs://my-bucket/hello.txt", &b"Hello from Rust!"[..]).await?;
    let data = client.get("gs://my-bucket/hello.txt").await?;
    println!("{}", String::from_utf8_lossy(&data));
    Ok(())
}

Python example:

import asyncio
from object_storage_client import ObjectStorageClient

async def main():
    client = ObjectStorageClient()
    await client.put_object("gs://my-bucket/hello.txt", b"Hello from Python!")
    data = await client.get_object("gs://my-bucket/hello.txt")
    print(data.decode())

asyncio.run(main())

CLI example:

osc put hello.txt gs://my-bucket/hello.txt
osc get gs://my-bucket/hello.txt ./hello.txt

Local Filesystem

Provider: the local filesystem. Use absolute file:// URLs, or a bare path on the CLI (it is canonicalised to a file:// URL automatically).

Env variables: none — no credentials are required.

Rust example:

use object_storage_client::ObjectStorageClient;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = ObjectStorageClient::new();
    client.put("file:///tmp/hello.txt", &b"Hello from Rust!"[..]).await?;
    let data = client.get("file:///tmp/hello.txt").await?;
    println!("{}", String::from_utf8_lossy(&data));
    Ok(())
}

Python example:

import asyncio
from object_storage_client import ObjectStorageClient

async def main():
    client = ObjectStorageClient()
    await client.put_object("file:///tmp/hello.txt", b"Hello from Python!")
    data = await client.get_object("file:///tmp/hello.txt")
    print(data.decode())

asyncio.run(main())

CLI example:

osc put hello.txt /tmp/hello.txt
osc get /tmp/hello.txt ./hello_copy.txt

CLI Usage (osc)

The osc tool allows you to interact with object storage directly from your terminal.

Installation

Install the osc binary directly from the Bixority Codeberg crate registry with Cargo. Point Cargo at the registry with an environment variable, then install:

export CARGO_REGISTRIES_BIXORITY_INDEX="sparse+https://codeberg.org/api/packages/bixority/cargo/"
cargo install object-storage-client --registry bixority

Alternatively, install straight from Git:

cargo install --git https://codeberg.org/bixority/object-storage-client

Or, if you have the source code, install it from the local checkout:

cargo install --path .

Examples

  • Upload a local file:

    osc put my_file.txt s3://my-bucket/remote_file.txt
    
  • Download an object:

    osc get gs://my-bucket/data.json ./local_data.json
    
  • Copy between providers:

    osc cp s3://source-bucket/image.png az://dest-container/image.png
    
  • Move an object:

    osc mv s3://my-bucket/old_name.txt s3://my-bucket/new_name.txt
    
  • List objects:

    osc ls s3://my-bucket/logs/
    
  • Delete an object:

    osc rm s3://my-bucket/temp_file.tmp
    
  • Check whether an object exists (prints true/false):

    osc exists s3://my-bucket/report.pdf
    
  • Create a bucket (S3, or a directory for local paths):

    osc mb s3://my-new-bucket
    
  • Check whether a bucket exists (prints true/false):

    osc bucket-exists s3://my-bucket
    
  • Stream an object:

    osc get-stream gs://my-bucket/large_file.bin
    
  • Generate a pre-signed URL (S3, GCS, Azure):

    # Pre-signed download URL, valid for the default 1 hour
    osc sign s3://my-bucket/report.pdf
    
    # Pre-signed upload URL (PUT), valid for 15 minutes
    osc sign --method PUT --expires-in 900 s3://my-bucket/upload.bin
    
    # Pre-signed upload URL binding the exact size and type the client must send
    # (S3 only): the upload is rejected unless Content-Length and Content-Type
    # match, so the object store enforces size/type up front.
    osc sign --method PUT --content-length 1048576 \
        --content-type application/pdf s3://my-bucket/upload.pdf
    

Rust Usage

Installation

The crate is published to the Bixority Codeberg crate registry. Point Cargo at the registry with an environment variable:

export CARGO_REGISTRIES_BIXORITY_INDEX="sparse+https://codeberg.org/api/packages/bixority/cargo/"

Then add object-storage-client to your Cargo.toml:

[dependencies]
object-storage-client = { version = "0.0.31", registry = "bixority" }
tokio = { version = "1.0", features = ["full"] }

Alternatively, you can depend on it directly from Git:

[dependencies]
object-storage-client = { git = "https://codeberg.org/bixority/object-storage-client" }
tokio = { version = "1.0", features = ["full"] }

Example

use object_storage_client::ObjectStorageClient;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = ObjectStorageClient::new();

    // Upload data
    let data = b"Hello from Rust!";
    client.put("s3://my-bucket/hello.txt", &data).await?;

    // Download data
    let retrieved = client.get("s3://my-bucket/hello.txt").await?;
    println!("Retrieved: {:?}", String::from_utf8(retrieved.to_vec())?);

    // Create a bucket (S3, or a directory for file:// URLs); idempotent
    client.create_bucket("s3://my-bucket").await?;

    // Check whether a bucket exists (missing -> Ok(false), never an error)
    if client.bucket_exists("s3://my-bucket").await? {
        println!("my-bucket is present");
    }

    // Check whether an object exists (missing -> Ok(false), never an error)
    if client.exists("s3://my-bucket/hello.txt").await? {
        println!("hello.txt is present");
    }

    // Cross-provider copy (S3 to Local)
    client.copy("s3://my-bucket/hello.txt", "file:///tmp/hello_local.txt").await?;

    // Pre-signed URL: time-limited, credential-free access (S3/GCS/Azure)
    use object_storage_client::{SignMethod, SignOptions};
    use std::time::Duration;

    // Pre-signed download (GET) link, valid for one hour
    let download_url = client
        .get_pre_signed_url(
            "s3://my-bucket/hello.txt",
            SignMethod::Get,
            Duration::from_secs(3600),
            &SignOptions::default(),
        )
        .await?;
    println!("Share this download link: {download_url}");

    // Pre-signed upload (PUT) link binding the exact size and type the client
    // must send (S3 only); the store rejects mismatched uploads up front.
    let upload_url = client
        .get_pre_signed_url(
            "s3://my-bucket/upload.bin",
            SignMethod::Put,
            Duration::from_secs(900),
            &SignOptions {
                content_length: Some(1_048_576),
                content_type: Some("application/octet-stream".to_string()),
            },
        )
        .await?;
    println!("Upload directly to: {upload_url}");

    Ok(())
}

Python 3.13+ Usage

Installation

The package is published on PyPI. Note that it requires Python 3.13+.

pip install object-storage-client

Or if you are developing locally, you can use maturin:

maturin develop

Example

import asyncio
from object_storage_client import ObjectStorageClient

async def main():
    client = ObjectStorageClient()

    # Create a bucket (S3, or a directory for file:// URLs); idempotent
    await client.create_bucket("s3://my-bucket")

    # Check whether a bucket exists (returns a bool; never raises for a miss).
    if await client.bucket_exists("s3://my-bucket"):
        print("my-bucket is present")

    # Upload data
    await client.put_object("s3://my-bucket/python_test.txt", b"Hello from Python!")

    # Check whether an object exists (returns a bool; never raises for a miss).
    # If you prefer the missing case to raise FileNotFoundError, use
    # get_object_metadata() or get_object() instead.
    if await client.object_exists("s3://my-bucket/python_test.txt"):
        print("python_test.txt is present")

    # Fetch full metadata (raises FileNotFoundError if the object is missing)
    meta = await client.get_object_metadata("s3://my-bucket/python_test.txt")
    print(f"Size: {meta['size_bytes']}, type: {meta['content_type']}")

    # Download data
    data = await client.get_object("s3://my-bucket/python_test.txt")
    print(f"Retrieved: {data.decode()}")

    # List objects
    items = await client.list_objects("s3://my-bucket/")
    print(f"Bucket items: {items}")

    # Stream data
    stream = await client.get_object_stream("s3://my-bucket/python_test.txt")
    async for chunk in stream:
        print(f"Chunk size: {len(chunk)}")

    # Cross-provider move (GCS to S3)
    await client.move_object("gs://my-gcs-bucket/data.csv", "s3://my-s3-bucket/data.csv")

    # Pre-signed URL (S3/GCS/Azure): hand out credential-free, time-limited access
    download_url = await client.get_pre_signed_url("s3://my-bucket/python_test.txt")
    # Bind the exact Content-Length and Content-Type the client must send (S3
    # only); the store rejects uploads that don't match.
    upload_url = await client.get_pre_signed_url(
        "s3://my-bucket/upload.bin",
        method="PUT",
        expires_in_secs=900,
        content_length=1_048_576,
        content_type="application/octet-stream",
    )
    print(f"Download: {download_url}\nUpload: {upload_url}")

if __name__ == "__main__":
    asyncio.run(main())

Developer Instructions

Prerequisites

  • Rust 1.85+ (or latest stable)
  • Python 3.13+
  • maturin (for Python bindings)

Building

  • Rust: cargo build --release
  • Python: maturin build --release
  • CLI: cargo build --bin osc

Testing

cargo test

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

object_storage_client-0.0.33.tar.gz (61.9 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

object_storage_client-0.0.33-cp314-cp314-win_amd64.whl (3.3 MB view details)

Uploaded CPython 3.14Windows x86-64

object_storage_client-0.0.33-cp314-cp314-manylinux_2_28_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

object_storage_client-0.0.33-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

object_storage_client-0.0.33-cp314-cp314-macosx_11_0_arm64.whl (3.3 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

object_storage_client-0.0.33-cp313-cp313-win_amd64.whl (3.3 MB view details)

Uploaded CPython 3.13Windows x86-64

object_storage_client-0.0.33-cp313-cp313-manylinux_2_28_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

object_storage_client-0.0.33-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

object_storage_client-0.0.33-cp313-cp313-macosx_11_0_arm64.whl (3.3 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

File details

Details for the file object_storage_client-0.0.33.tar.gz.

File metadata

  • Download URL: object_storage_client-0.0.33.tar.gz
  • Upload date:
  • Size: 61.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for object_storage_client-0.0.33.tar.gz
Algorithm Hash digest
SHA256 a42b4af7f344fa7ac84e9d928c1dd39ffdb820f5c9dddc709d8affdbc962e40e
MD5 bacc165605b57589826d50f19d023a74
BLAKE2b-256 71e9ac5ab19b46be25dd8f9b1b6fb0ab5de72cf3ea0c9866043e830b40bda7c6

See more details on using hashes here.

File details

Details for the file object_storage_client-0.0.33-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: object_storage_client-0.0.33-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 3.3 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for object_storage_client-0.0.33-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 df29bae5ba618d2db67daaaf757796f939d047902630aaeaf06cb379f04cdbc3
MD5 74134cfbdb6bb400f46eea0e82c84398
BLAKE2b-256 52879429ae823075abf8d63b5daaac8938a8dad08112f086c45aa711a4ae4e5f

See more details on using hashes here.

File details

Details for the file object_storage_client-0.0.33-cp314-cp314-manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: object_storage_client-0.0.33-cp314-cp314-manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: CPython 3.14, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for object_storage_client-0.0.33-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 be549164330ce5c0916e0cd66d9c46dfff472fc119dbcd0cfb263d7f431d3bae
MD5 a8898dedecc79e622d8d3b3a8630530b
BLAKE2b-256 e5634055451a297c44037b57d2cd7a86c784a5bdfd517435f9e8aa07bc0ef5e8

See more details on using hashes here.

File details

Details for the file object_storage_client-0.0.33-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: object_storage_client-0.0.33-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 3.7 MB
  • Tags: CPython 3.14, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for object_storage_client-0.0.33-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 84edda45139ff780f5fde6ad53d0b9501c832e6d3e2b0c8c9210d433312d2d45
MD5 6e88458974b3b8f42b446562d75e6af9
BLAKE2b-256 87e1d2b8486f9f1be1701582ca489fc928205afe5c0aac6146921957ac2ecc5e

See more details on using hashes here.

File details

Details for the file object_storage_client-0.0.33-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

  • Download URL: object_storage_client-0.0.33-cp314-cp314-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 3.3 MB
  • Tags: CPython 3.14, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for object_storage_client-0.0.33-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 50d3f439a8761009cf360815ffd1c6e0ca232c81b66c8495ae5194d0cc9feabf
MD5 04793b9e77878efff7da7ab203256873
BLAKE2b-256 72ea481950d9b80b143245ccac60aba373ee7ddfaedecac986f22273d8ae0135

See more details on using hashes here.

File details

Details for the file object_storage_client-0.0.33-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: object_storage_client-0.0.33-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 3.3 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for object_storage_client-0.0.33-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 5f61780f5e30f9989aeb71d636a146fa7d33a601abe0a247b56f52b5da0ae1f6
MD5 8f2a563dd7ce24244c52c902002ed40a
BLAKE2b-256 d3c6dae6c2f15b517c3e2e83ee4574a3e555579c7a7ae1f623600ef3ccf3da6d

See more details on using hashes here.

File details

Details for the file object_storage_client-0.0.33-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: object_storage_client-0.0.33-cp313-cp313-manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: CPython 3.13, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for object_storage_client-0.0.33-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e186f46ecf4410b031a7eb97f6e5b33e64ed02206ea39d4bcdc0c0526690923d
MD5 5bd43fd9307e5f5114c6f8ead81600ce
BLAKE2b-256 9ab6f5b36e0e5e7349624ffad864e8b976279bbf545f6b3afa825724139fafa7

See more details on using hashes here.

File details

Details for the file object_storage_client-0.0.33-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: object_storage_client-0.0.33-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 3.8 MB
  • Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for object_storage_client-0.0.33-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3429285b599928e717b5cbb5ba3269e2c213ad3fecd35033dff044b1b5a1df12
MD5 a53ce1a096f51bc3c4f9277811631750
BLAKE2b-256 b169f73ed30547645ecb5f51cdfbfc3665c4f659c501c796a11027e15dc85271

See more details on using hashes here.

File details

Details for the file object_storage_client-0.0.33-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

  • Download URL: object_storage_client-0.0.33-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 3.3 MB
  • Tags: CPython 3.13, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for object_storage_client-0.0.33-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c71d47e561ce73761c7af33d1a227f58f91d52da4b32b32725786634609fbfd1
MD5 d08bc2d2ea182bec960032eb874c9665
BLAKE2b-256 29cb60a415e1e181888e961bc5b2e7fdab9a8b8cbbae80f5e6e53d7bfc8a0290

See more details on using hashes here.

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