Skip to main content

Object Storage Client

One URL-based API for AWS S3, Google Cloud Storage, Azure Blob Storage, HTTP(S) and the local filesystem, as a Rust library, Python bindings and the osc command-line tool. The scheme of each URL picks the backend, so a single client can copy and move objects between providers, stream large objects in bounded memory (see Behaviour for the limits) and generate pre-signed URLs. Optional client-side encryption keeps object contents hidden from the storage provider.

  • One API for every backend, including cross-provider copy and move.
  • Streaming uploads and downloads, with multipart uploads for large objects.
  • Listing of a prefix or a whole bucket (flat and recursive), existence checks and bucket creation.
  • Pre-signed URLs for S3, GCS and Azure. An s3:// URL signed with temporary credentials stops working when that session ends, whatever expiry was requested.
  • AWS profiles and SSO for s3://: osc --profile NAME, ObjectStorageClient(profile="NAME") in Python and with_s3_profile in Rust; see AWS profiles and SSO.
  • Client-side encryption (Cargo feature encryption, on by default) with self-reloading keyrings and key rotation.
URL Backend
s3://bucket/key AWS S3 and S3-compatible stores (Garage, SeaweedFS, …)
gs://bucket/key, gcs://bucket/key Google Cloud Storage
az://, wasb(s)://, abfs(s):// + container/key Azure Blob Storage
http://host/path, https://host/path HTTP/HTTPS
file:///abs/path, /abs/path, ~/path, relative/path Local filesystem

For the cloud schemes the host is the bucket or container and the path is the object key. A bucket-root URL such as s3://bucket addresses the bucket itself: list it, create it or check that it exists. Credentials come from environment variables or, for s3://, from a named AWS profile; see Configuration.

Rust

The crate is published to the Bixority Codeberg crate registry:

export CARGO_REGISTRIES_BIXORITY_INDEX="sparse+https://codeberg.org/api/packages/bixority/cargo/"
[dependencies]
object-storage-client = { version = "0.3", registry = "bixority" }
# or: object-storage-client = { git = "https://codeberg.org/bixority/object-storage-client" }
tokio = { version = "1", features = ["full"] }

The encryption and cli features are on by default. A library that does not need the CLI can drop clap and tokio-util:

object-storage-client = { version = "0.3", registry = "bixority", default-features = false, features = ["encryption"] }
use object_storage_client::{ObjectStorageClient, SignMethod, SignOptions};
use std::time::Duration;

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

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

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

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

    // List the whole bucket from a bucket-root URL (flat, recursive: every key
    // is returned). Pass a prefix such as "s3://my-bucket/logs/" to narrow it.
    let keys = client.list("s3://my-bucket").await?;
    println!("Bucket keys: {keys:?}");

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

    // --- Move data across providers with one client ---

    // Copy S3 -> Google Cloud Storage (source is left in place)
    client
        .copy("s3://my-bucket/hello.txt", "gs://my-gcs-bucket/hello.txt")
        .await?;

    // Move GCS -> Azure Blob Storage (source is deleted afterwards)
    client
        .move_object("gs://my-gcs-bucket/hello.txt", "az://my-container/hello.txt")
        .await?;

    // Copy Azure -> local disk for a working copy
    client
        .copy("az://my-container/hello.txt", "file:///tmp/hello_local.txt")
        .await?;

    // --- Pre-signed URLs: time-limited, credential-free access (S3/GCS/Azure) ---

    // 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(())
}

With encryption, the same calls on an encrypting view:

use object_storage_client::encryption::{EncryptionConfig, Keyring};
use object_storage_client::ObjectStorageClient;
use std::sync::Arc;

let keyring = Arc::new(Keyring::from_file("/var/run/secrets/osc/keyring")?); // reloads itself
let secure = ObjectStorageClient::new().with_encryption(EncryptionConfig::new(keyring.clone()));

secure.put("s3://my-bucket/payroll.csv", &b"id,salary"[..]).await?; // only ciphertext is stored
let csv = secure.get("s3://my-bucket/payroll.csv").await?;          // authenticated before it is returned
let health = keyring.status(); // active key, key ages, last reload error

Python

The package is published on PyPI and needs Python 3.13+:

pip install object-storage-client

Wheels exist for GIL CPython 3.13-3.15 on manylinux x86_64/aarch64, macOS arm64 and Windows x86_64; other platforms build the sdist and need Rust 1.99 or newer. Free-threaded CPython is unsupported: 3.13t does not build, and on 3.14t and later importing the module re-enables the GIL with a RuntimeWarning.

import asyncio
from object_storage_client import ObjectStorageClient

async def main():
    client = ObjectStorageClient()

    # Create a bucket (S3/GCS/Azure, 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 to S3
    await client.put_object("s3://my-bucket/hello.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/hello.txt"):
        print("hello.txt is present")

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

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

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

    # List a large prefix in bounded batches
    async for names in await client.list_objects_stream("s3://my-bucket/"):
        print(f"{len(names)} more items")

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

    # --- Move data across providers with one client ---

    # Copy S3 -> Google Cloud Storage (source is left in place)
    await client.copy_object("s3://my-bucket/hello.txt", "gs://my-gcs-bucket/hello.txt")

    # Move GCS -> Azure Blob Storage (source is deleted afterwards)
    await client.move_object("gs://my-gcs-bucket/hello.txt", "az://my-container/hello.txt")

    # Copy Azure -> local disk for a working copy
    await client.copy_object("az://my-container/hello.txt", "file:///tmp/hello_local.txt")

    # --- Pre-signed URLs (S3/GCS/Azure): credential-free, time-limited access ---

    download_url = await client.get_pre_signed_url("s3://my-bucket/hello.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())

With encryption (key bytes never reach Python):

from object_storage_client import ObjectStorageClient, Keyring

keyring = Keyring.from_file("/var/run/secrets/osc/keyring")    # reloads itself
secure = ObjectStorageClient().with_encryption(keyring)
# or directly: EncryptedObjectStorageClient(keyring, profile="dev")  # profile= is optional

await secure.put_object("s3://my-bucket/payroll.csv", b"id,salary")  # only ciphertext is stored
data = await secure.get_object("s3://my-bucket/payroll.csv")         # authenticated before it is returned
health = keyring.status()  # active key, key ages, last reload error

CLI (osc)

export CARGO_REGISTRIES_BIXORITY_INDEX="sparse+https://codeberg.org/api/packages/bixority/cargo/"
cargo install object-storage-client --registry bixority
# or: cargo install --git https://codeberg.org/bixority/object-storage-client
# or, from a checkout: cargo install --path .
osc put my_file.txt s3://my-bucket/remote_file.txt              # upload a file
osc put --recursive my_dir s3://my-bucket/remote_dir/           # upload a directory
osc get gs://my-bucket/data.json ./local_data.json              # download
osc get-stream gs://my-bucket/large_file.bin > large_file.bin   # stream to stdout; progress on stderr
osc --profile dev ls s3://my-bucket/                            # credentials from the AWS profile "dev"
osc cp s3://source-bucket/image.png az://dest-container/image.png   # copy between providers
osc mv s3://my-bucket/old_name.txt s3://my-bucket/new_name.txt
osc ls s3://my-bucket/logs/
osc rm s3://my-bucket/temp_file.tmp
osc exists s3://my-bucket/report.pdf                            # prints true or false
osc mb s3://my-new-bucket                                       # create a bucket (a directory for local paths)
osc bucket-exists s3://my-bucket                                # prints true or false

# Pre-signed URLs (S3, GCS, Azure): a download link valid for the default
# 1 hour, and an upload (PUT) link valid for 15 minutes. With temporary
# credentials (SSO, an assumed role) an s3:// link stops working when that
# session ends, whatever the expiry
osc sign s3://my-bucket/report.pdf
osc sign --method PUT --expires-in 900 s3://my-bucket/upload.bin
# S3 only: the upload is rejected unless Content-Length and Content-Type match
osc sign --method PUT --content-length 1048576 \
    --content-type application/pdf s3://my-bucket/upload.pdf

get-stream writes each chunk to standard output as it arrives, so its output is complete only if osc exits 0. A failed read, or a truncated or tampered encrypted object, stops the output part way: every byte written was authenticated, but the object may be cut short. In a pipeline use set -o pipefail, or give a FILE for an all-or-nothing download.

With a keyring, put, get, get-stream, cp and mv encrypt and decrypt transparently:

umask 077                                    # keyring files must not be readable by others
osc keyring new > keyring                    # a keyring with one fresh key
osc --keyring keyring put report.csv s3://my-bucket/report.csv
osc --keyring keyring get s3://my-bucket/report.csv report.csv
osc enc inspect s3://my-bucket/report.csv    # header details; no keys needed

# Rotation: add a key, wait until every reader has it, activate it, then move
# objects off the old one (a single reader may use `osc keyring rotate`)
osc keyring add < keyring > keyring.new && mv keyring.new keyring
osc keyring activate <new key ID> < keyring > keyring.new && mv keyring.new keyring
osc --keyring keyring enc reencrypt s3://my-bucket/ --from <old key ID>

--keyring can also come from OSC_KEYRING_FILE, or from a command that prints the keyring (OSC_KEYRING_COMMAND), so the keyring never touches the disk.

Desktop browser (osc-gui)

osc-gui is a two-panel desktop browser for the same stores as osc. Each panel shows one folder, and you copy, move, rename and delete objects and whole folders within a panel or between the two. It uses the same credentials and encryption options as osc.

osc-gui showing the root folder in both panels

Install

The browser is behind the optional gui feature, so osc alone is unaffected. Install both binaries from the registry:

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

Or from a checkout:

cargo install --path . --features gui

Linux needs no extra packages: the window opens on X11 or Wayland.

Run

osc-gui                                        # both panels on the current directory
osc-gui s3://my-bucket/photos/ ~/Pictures      # left and right panel
osc-gui --profile dev s3://my-bucket/          # credentials from the AWS profile "dev"
osc-gui --keyring keyring s3://my-bucket/ .    # copies encrypt and decrypt

Type any URL or path into a panel's address bar and press Enter. Buckets are not listed, so type the bucket's URL. The keys and shortcuts are listed in Desktop browser, which also covers limits and closing behaviour.

Documentation

  • Configuration: credentials and environment variables for each provider.
  • Encryption: what it protects, keyrings, Kubernetes, key rotation, responding to a key leak, the format and interop.
  • Behaviour and limits: URL rules, copy and move, deletes, file permissions, large objects, pre-signing, CLI and Python details.
  • Desktop browser: osc-gui, its keys, limits and closing.
  • Upgrading: breaking changes between releases.
  • Development and Testing.

Metadata

Release files for object-storage-client 0.3.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 object-storage-client 0.3.0
File Size Uploaded Provenance Actions
object_storage_client-0.3.0.tar.gz 1.9 MB With provenance Details for object_storage_client-0.3.0.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for object-storage-client 0.3.0
File Actions
object_storage_client-0.3.0-cp315-cp315-win_amd64.whl CPython 3.15 CPython 3.15 Windows x86-64 Details for object_storage_client-0.3.0-cp315-cp315-win_amd64.whl
object_storage_client-0.3.0-cp315-cp315-manylinux_2_28_aarch64.whl CPython 3.15 CPython 3.15 Linux glibc 2.28+ ARM64 Details for object_storage_client-0.3.0-cp315-cp315-manylinux_2_28_aarch64.whl
object_storage_client-0.3.0-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.15 CPython 3.15 Linux glibc 2.17+ x86-64 Details for object_storage_client-0.3.0-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
object_storage_client-0.3.0-cp315-cp315-macosx_11_0_arm64.whl CPython 3.15 CPython 3.15 macOS 11.0+ ARM64 Details for object_storage_client-0.3.0-cp315-cp315-macosx_11_0_arm64.whl
object_storage_client-0.3.0-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details for object_storage_client-0.3.0-cp314-cp314-win_amd64.whl
object_storage_client-0.3.0-cp314-cp314-manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ ARM64 Details for object_storage_client-0.3.0-cp314-cp314-manylinux_2_28_aarch64.whl
object_storage_client-0.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64 Details for object_storage_client-0.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
object_storage_client-0.3.0-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details for object_storage_client-0.3.0-cp314-cp314-macosx_11_0_arm64.whl
object_storage_client-0.3.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for object_storage_client-0.3.0-cp313-cp313-win_amd64.whl
object_storage_client-0.3.0-cp313-cp313-manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64 Details for object_storage_client-0.3.0-cp313-cp313-manylinux_2_28_aarch64.whl
object_storage_client-0.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details for object_storage_client-0.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
object_storage_client-0.3.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details for object_storage_client-0.3.0-cp313-cp313-macosx_11_0_arm64.whl

Total release size: 75.7 MB

Release files / object_storage_client-0.3.0.tar.gz

Download URL object_storage_client-0.3.0.tar.gz
Size 1.9 MB
Tags Source
SHA-256 checksum
How to use checksums
a77f623d59f2d57bfd05ed71994c39edc224d0369aa4b7f2c017431c54c1ef0f
BLAKE2b-256 checksum
How to use checksums
51d8cb51e82caf822d66fa247537b415c325e6f8a2e6e2e5ca37d9c607153df2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 2, 2026.

Transparency log

Release files / object_storage_client-0.3.0-cp315-cp315-win_amd64.whl

Download URL object_storage_client-0.3.0-cp315-cp315-win_amd64.whl
Size 6.6 MB
Tags CPython 3.15 Windows x86-64
SHA-256 checksum
How to use checksums
885871921e434d96aa7775d6b60d3c06cd658272c4665212f3ced2844d538ea6
BLAKE2b-256 checksum
How to use checksums
bccaef1bcaea92a45fbbafe4c51710c9da0b6e34f9edf3b7f7dc4d313e8dd2f6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 2, 2026.

Transparency log

Release files / object_storage_client-0.3.0-cp315-cp315-manylinux_2_28_aarch64.whl

Download URL object_storage_client-0.3.0-cp315-cp315-manylinux_2_28_aarch64.whl
Size 6.1 MB
Tags CPython 3.15 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
31cf13b8c219ab73617f32d03d12e2a496c8850f27771f17fc07e7800a3a89cc
BLAKE2b-256 checksum
How to use checksums
60d0aa6140c16addbe6292b3d90225155729b8b32d089c43bca231012d6427b9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 2, 2026.

Transparency log

Release files / object_storage_client-0.3.0-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL object_storage_client-0.3.0-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 6.5 MB
Tags CPython 3.15 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
0b35844684f8dc55f328888e3729648a753c9d3b719a0fbd2b7f10f5624446f0
BLAKE2b-256 checksum
How to use checksums
e8899018a339e86ba9159c4595e8a938b6880cc486359db135c0f1f3dce0e80b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 2, 2026.

Transparency log

Release files / object_storage_client-0.3.0-cp315-cp315-macosx_11_0_arm64.whl

Download URL object_storage_client-0.3.0-cp315-cp315-macosx_11_0_arm64.whl
Size 5.4 MB
Tags CPython 3.15 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
343ac06e08ace5bdfb672294ad5148952f3b74a80438bcba676a30819cb2204a
BLAKE2b-256 checksum
How to use checksums
2b6a713df818c3707b94aa80bbe81d7905e23fff9fc94b2512ab28b6c9f5d1a0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 2, 2026.

Transparency log

Release files / object_storage_client-0.3.0-cp314-cp314-win_amd64.whl

Download URL object_storage_client-0.3.0-cp314-cp314-win_amd64.whl
Size 6.6 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
6a2a6a6dbc026d12e2adac69a9c33eeac35a53da5bf5200e17258691075cfdf5
BLAKE2b-256 checksum
How to use checksums
80be3082f2bd9356f00626c8d04a03584f3b69ff6fb73a3c2156e6182baf4f70
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 2, 2026.

Transparency log

Release files / object_storage_client-0.3.0-cp314-cp314-manylinux_2_28_aarch64.whl

Download URL object_storage_client-0.3.0-cp314-cp314-manylinux_2_28_aarch64.whl
Size 6.1 MB
Tags CPython 3.14 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
2220f1b1b3e68f869d64664dbe65a777f0190219d33c5fccf2a953b70daedd86
BLAKE2b-256 checksum
How to use checksums
cc89ad764772bb2697aa11f3dafc699ecb6c48354a38510ecacf84a06d93da7d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 2, 2026.

Transparency log

Release files / object_storage_client-0.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL object_storage_client-0.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 6.5 MB
Tags CPython 3.14 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
ade8cb2072e5d5fa8f03359792a0e27a7c736f545cfd3491bc3d2812d43748d2
BLAKE2b-256 checksum
How to use checksums
b0d23f147a743cb038cc3a99a465a90b31a79650cfa9aff8a785b6def1a5edfa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 2, 2026.

Transparency log

Release files / object_storage_client-0.3.0-cp314-cp314-macosx_11_0_arm64.whl

Download URL object_storage_client-0.3.0-cp314-cp314-macosx_11_0_arm64.whl
Size 5.4 MB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
dcf38d9708b85256119e22b66e18bded762ff01c1d4ef64c0d77d43da768ab5c
BLAKE2b-256 checksum
How to use checksums
7654e8cce94d6da9661136adecf3cec551ffe0ffc5e8e850496d7b046ca3fd1f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 2, 2026.

Transparency log

Release files / object_storage_client-0.3.0-cp313-cp313-win_amd64.whl

Download URL object_storage_client-0.3.0-cp313-cp313-win_amd64.whl
Size 6.6 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
12a40c6df9070546be454de0c8697e5f55735a2838c769dd2cc0d6ef4cf58090
BLAKE2b-256 checksum
How to use checksums
823f4a5c322c137d5af14ed654ff1c6ef721a234a186c0aa549c1828f1ffbb0c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 2, 2026.

Transparency log

Release files / object_storage_client-0.3.0-cp313-cp313-manylinux_2_28_aarch64.whl

Download URL object_storage_client-0.3.0-cp313-cp313-manylinux_2_28_aarch64.whl
Size 6.1 MB
Tags CPython 3.13 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
fd97b0cedd97707d71ed92fb553ad2af6625ed7577abb1914c87072abc0e62e2
BLAKE2b-256 checksum
How to use checksums
5b1b4e34e884bd647e76d062109c8d3e449923ef920d3f9a72115480fd73bffc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 2, 2026.

Transparency log

Release files / object_storage_client-0.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL object_storage_client-0.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 6.5 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
22c1921d02787fc8fbec34c651bc96f122edf1543634e7b92a929ff0088c5a57
BLAKE2b-256 checksum
How to use checksums
03db852886a2d165bbacecb79881e7d7eadb944cd951087d44aee5ddd4b9b799
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 2, 2026.

Transparency log

Release files / object_storage_client-0.3.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL object_storage_client-0.3.0-cp313-cp313-macosx_11_0_arm64.whl
Size 5.4 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ace33833fee658ce94b72d7707fbc4dec3958e30c11162fac6516924e7cadb3b
BLAKE2b-256 checksum
How to use checksums
63b9b9e86a0c05790a659a12cebf35c4f73e532cd31ae7db0f6cce840011cfc0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 2, 2026.

Transparency log

Security for object-storage-client 0.3.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 13 files in this release have been uploaded with provenance metadata.

Select from 13 files

Attestation for object_storage_client-0.3.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 Nov 2, 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.

Release history Release notifications | RSS feed

This release

0.3.0 This release

13 release files Full provenance

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