Skip to main content

CI PyPI version PyPI downloads License: MIT Rust edition

<osp⚡> object-storage-proxy

A fast, in-process reverse proxy for AWS S3 and IBM Cloud Object Storage, built on Cloudflare's pingora. It exposes a Python interface so you can plug in your own credential fetching, request signing, and authorization logic without touching the Rust core.

Note: This project is under active development. APIs are likely to change before 1.0.

Why

Object storage backends like IBM COS assign one endpoint and one set of credentials per storage instance, which may contain many buckets. Managing credentials and endpoints across instances becomes cumbersome, especially when clients expect a single uniform endpoint.

This proxy solves that by:

  1. Translating path-style requests (http://proxy/bucket/key) to virtual-hosted-style (https://bucket.s3.region.host/key) on the way out.
  2. Re-signing requests with the correct backend credentials, so clients only need one keypair pointed at the proxy.
  3. Calling your Python functions for credential lookup and request authorization, with TTL-based caching.

Request lifecycle

Request stages

Features

  • Compatible with any AWS S3-compatible client: aws-cli, boto3, polars, spark, datafusion, presto, trino, ...
  • Normalises differences between S3-compatible backends so clients work regardless of whether the backend is AWS S3, MinIO, Garage, or IBM COS (see Backend compatibility below).
  • Decouples frontend authentication (what the client sends) from backend authentication (what the storage expects).
  • Python callables for credential fetching, HMAC key lookup, and per-request authorization.
  • TTL-based credential and authorization caching.
  • HTTP and HTTPS frontends (HTTPS supports HTTP/2).
  • Configurable thread count and per-URL request counting.
  • Presigned URL support with configurable max-usage limiting.
  • Built-in Prometheus metrics endpoint (/metrics) — on by default, opt-out via --no-default-features.

Installation

pip install object-storage-proxy

Or install from source (requires Rust stable and uv):

git clone https://github.com/opensourceworks-org/object-storage-proxy.git
cd object-storage-proxy
uv run maturin develop --release

See DEVELOP.md for full develop/build instructions including Nix and Taskfile usage.

Quick start

1. Configure your AWS client

~/.aws/config:

[profile osp]
region = eu-west-3
output = json
services = osp-services
s3 =
    addressing_style = path

[services osp-services]
s3 =
  endpoint_url = http://localhost:6190

~/.aws/credentials:

[osp]
aws_access_key_id = MYCLIENTID
aws_secret_access_key = myclientsecret

The aws_access_key_id is passed as the token argument to your Python callables. It can be any identifier meaningful to your auth system: an internal client ID, an OAuth2 subject, etc.

2. Write your server script

import json
import os
from object_storage_proxy import ProxyServerConfig, start_server

def fetch_credentials(token: str, bucket: str) -> str:
    # Return either an IBM COS API key string, or a JSON string:
    # '{"access_key": "...", "secret_key": "..."}'
    return json.dumps({
        "access_key": os.environ["BACKEND_ACCESS_KEY"],
        "secret_key": os.environ["BACKEND_SECRET_KEY"],
    })

def lookup_secret(access_key: str) -> str | None:
    # Called to verify incoming HMAC signatures.
    return os.getenv("MYCLIENTSECRET") if access_key == "MYCLIENTID" else None

def authorize(token: str, bucket: str, request: dict) -> bool:
    # Return True to allow, False to deny.
    return True

cos_map = {
    "my-bucket": {
        "host": "s3.eu-de.cloud-object-storage.appdomain.cloud",
        "region": "eu-de",
        "port": 443,
        "ttl": 300,
    },
}

config = ProxyServerConfig(
    cos_map=cos_map,
    bucket_creds_fetcher=fetch_credentials,
    hmac_fetcher=lookup_secret,
    validator=authorize,
    http_port=6190,
)

start_server(config)

3. Run it

uv run python my_server.py

4. Use it

aws s3 ls s3://my-bucket/ --profile osp
aws s3 cp file.txt s3://my-bucket/file.txt --profile osp

A fuller example with HTTPS, HMAC keystores, and IBM COS is in examples/minimal_server.py.

Configuration reference

ProxyServerConfig

Parameter Type Required Default Description
cos_map dict yes Bucket-to-backend mapping. See below.
hmac_keystore list[dict] no [] Static HMAC keypairs accepted on the frontend.
bucket_creds_fetcher callable(token, bucket) -> str no Called once per bucket to fetch backend credentials. Return an IBM COS API key string or {"access_key":...,"secret_key":...} JSON.
hmac_fetcher callable(access_key) -> str | None no Called per request to resolve a secret key from an access key, used to verify incoming signatures.
validator callable(token, bucket[, request]) -> bool no Called per request to authorize access. Cached by (token, bucket) for the bucket TTL.
http_port int one of http/https required HTTP listener port.
https_port int one of http/https required HTTPS listener port (HTTP/2 supported).
threads int no 1 Number of worker threads.
verify bool no None Disable TLS verification on upstream connections. Development only.
skip_signature_validation bool no False Skip verification of incoming request signatures. Development only.
max_presign_url_usage_attempts int no 3 Max times a presigned URL may be used before being rejected.
server_name str no "osp" Server name included in log output.
metrics_port int no None Port to expose the Prometheus /metrics scrape endpoint. When None no endpoint is started.

cos_map entries

Each key is the bucket name as the client addresses it. The value is a dict:

Field Required Description
host yes Backend hostname
port yes Backend port (typically 443)
region no AWS/COS region string
apikey no IBM COS IAM API key (mutually exclusive with access_key/secret_key)
access_key no Backend HMAC access key
secret_key no Backend HMAC secret key
ttl no Credential and auth cache TTL in seconds. Default 300. Set to 0 to disable.
addressing_style no "path" or "virtual" (default "virtual")
is_tls_enabled no Defaults to true when port is 443

Python callable signatures

# Fetch backend credentials for a bucket.
# token: the access key from the client's Authorization header.
# Return an IBM COS API key string, or JSON: '{"access_key":"...","secret_key":"..."}'
def fetch_credentials(token: str, bucket: str) -> str: ...

# Resolve the secret key for an access key (used to verify incoming signatures).
def lookup_secret(access_key: str) -> str | None: ...

# Authorize a request. request dict contains: method, path, query, headers.
def authorize(token: str, bucket: str, request: dict | None = None) -> bool: ...

Backend compatibility

S3-compatible backends differ in how strictly they follow the AWS S3 specification. OSP irons out these differences so clients don't need to care which backend is underneath.

Behaviour AWS S3 spec Garage MinIO OSP handling
Content-MD5 on DeleteObjects Required Accepted without it (lenient) Enforced (400 if missing) Forwarded when present; test suite injects it because botocore ≥ 1.43 no longer sends it by default
x-amz-tagging-directive on CopyObject COPY or REPLACE N/A (tagging not implemented) ✅ enforced Header is in OSP's forwarding allowlist — was previously stripped
PutObjectTagging / GetObjectTagging Supported NotImplemented ✅ Forwarded; backend limitation is transparent
If-Match / If-Unmodified-Since on GET Must return 412 Returns 200 (header ignored) ✅ Returns 412 Forwarded; backend limitation is transparent
ListMultipartUploads with Prefix ending in / Returns matching uploads ✅ works Returns empty list (MinIO bug) Forwarded; MinIO limitation documented as xfail in the test suite

botocore ≥ 1.43 note: Recent versions of boto3 switched from Content-MD5 to x-amz-checksum-crc32 for body integrity on DeleteObjects, regardless of the request_checksum_calculation setting. Content-MD5 is still required by MinIO. If you use boto3 ≥ 1.43 directly against MinIO through OSP you may need to inject Content-MD5 manually via a before-sign event hook — see DEVELOP.md for details and example code.

The integration test suite covers all of the above: every test runs parametrized over both Garage and MinIO backends, so regressions surface immediately. See DEVELOP.md for the full compliance table and the internal proxy fixes that enable it.

Prometheus metrics

The proxy ships with a built-in Prometheus scrape endpoint. Set metrics_port to enable it:

config = ProxyServerConfig(
    cos_map=cos_map,
    http_port=6190,
    metrics_port=9090,   # exposes http://localhost:9090/metrics
)

Then scrape it:

curl http://localhost:9090/metrics

Or add a Prometheus scrape config:

scrape_configs:
  - job_name: object-storage-proxy
    static_configs:
      - targets: ["localhost:9090"]

Exposed metrics (all prefixed osp_):

Metric Type Labels Description
osp_requests_total Counter method, bucket, status Total proxied requests
osp_request_errors_total Counter method, bucket, error 4xx / 5xx responses
osp_transfer_bytes_total Counter direction (rx/tx), bucket Bytes transferred
osp_presigned_url_hits_total Counter bucket Presigned URL uses
osp_presigned_url_rejected_total Counter bucket Presigned URLs rejected (over limit)
osp_active_connections Gauge — In-flight connections
osp_memory_bytes Gauge — Resident set size (Linux only)
osp_build_info Gauge version, rustc Static build metadata
osp_request_duration_seconds Histogram method, bucket End-to-end request latency
osp_response_size_bytes Histogram method, bucket Response body size

To build without the metrics endpoint:

maturin develop --no-default-features

HTTPS setup

Generate a self-signed certificate for local development:

openssl req -x509 -nodes -days 365 \
  -newkey rsa:4096 \
  -keyout key.pem \
  -out cert.pem \
  -config localhost.cnf

export TLS_CERT_PATH=/path/to/cert.pem
export TLS_KEY_PATH=/path/to/key.pem

Then pass https_port=8443 to ProxyServerConfig.

Environment variables

See .env.example for the full list. Key variables:

Variable Description
COS_API_KEY IBM COS IAM API key
AWS_ACCESS_KEY / AWS_SECRET_KEY AWS backend credentials
TLS_CERT_PATH / TLS_KEY_PATH Paths to TLS certificate and key
OSP_ENABLE_REQUEST_COUNTING Set to true to enable per-URL request counting
AWS_REQUEST_CHECKSUM_CALCULATION Set to WHEN_REQUIRED to avoid checksum errors with AWS CLI v2

Build targets

Pre-built wheels are published to PyPI for the following platforms:

Platform Architecture Libc Python
Linux (ubuntu-22.04) x86_64 glibc (manylinux) 3.x
Linux (ubuntu-22.04) aarch64 glibc (manylinux) 3.x
Linux (alpine 3.18) x86_64 musl (musllinux_1_2) 3.x
macOS (macos-14) aarch64 (Apple Silicon) — 3.x
Source distribution any any 3.x

Windows builds are not currently active in CI. An sdist is always published so you can build from source on any platform with Rust stable installed.

Building from source

See BUILD.md.

Roadmap

These backlog items are currently not yet implemented:

  • Pass path and method to Python callbacks; cache by (token, bucket, path, method)
  • Expose pingora server and service configuration directly to Python
  • Spark streaming write support
  • AWS CLI checksum workaround (aws/aws-cli#9214)
  • Allow same bucket name on different providers
  • Pluggable distributed cache

Contributing

See CONTRIBUTING.md. Bug reports and feature requests go through GitHub Issues.

License

MIT

Metadata

Release files for object-storage-proxy 0.6.12

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-proxy 0.6.12
File Size Uploaded
object_storage_proxy-0.6.12.tar.gz 1.9 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for object-storage-proxy 0.6.12
File
object_storage_proxy-0.6.12-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl PyPy 3.11 PyPy 3.11 7.3 Linux glibc 2.17+ x86-64 Details
object_storage_proxy-0.6.12-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl PyPy 3.11 PyPy 3.11 7.3 Linux glibc 2.17+ ARM64 Details
object_storage_proxy-0.6.12-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 Details
object_storage_proxy-0.6.12-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64 Details
object_storage_proxy-0.6.12-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64 Details
object_storage_proxy-0.6.12-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ ARM64 Details
object_storage_proxy-0.6.12-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
object_storage_proxy-0.6.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
object_storage_proxy-0.6.12-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ ARM64 Details
object_storage_proxy-0.6.12-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
object_storage_proxy-0.6.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
object_storage_proxy-0.6.12-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64 Details
object_storage_proxy-0.6.12-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
object_storage_proxy-0.6.12-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
object_storage_proxy-0.6.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
object_storage_proxy-0.6.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARM64 Details
object_storage_proxy-0.6.12-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
object_storage_proxy-0.6.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
object_storage_proxy-0.6.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ ARM64 Details

Total release size: 128.0 MB

Release files / object_storage_proxy-0.6.12.tar.gz

Download URL object_storage_proxy-0.6.12.tar.gz
Size 1.9 MB
Tags Source
SHA-256 checksum
How to use checksums
9dd915382704449d07c1c6ff524fb1634357e17607868a91176e0593a5c1428c
BLAKE2b-256 checksum
How to use checksums
9b69e28d94dd6086a2e9386044b5058f47d8078846103db7cdad33b1b4452b0b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.14.1

Release files / object_storage_proxy-0.6.12-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL object_storage_proxy-0.6.12-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 6.8 MB
Tags Linux glibc 2.17+ x86-64 PyPy 3.11 PyPy 3.11 7.3
SHA-256 checksum
How to use checksums
02f0ff0afb4b68a5e92e22e3ff42869bd3463eaebc9d14947b92fb3b97f95750
BLAKE2b-256 checksum
How to use checksums
c18895c12ec3843170f40faa439de65bee3c2817b6135686e22f43ef83942e53
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.14.1

Release files / object_storage_proxy-0.6.12-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL object_storage_proxy-0.6.12-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 6.6 MB
Tags Linux glibc 2.17+ ARM64 PyPy 3.11 PyPy 3.11 7.3
SHA-256 checksum
How to use checksums
867c0eabd98964aea447cbb31b3aaca9559a706092da2b069fd14fdfe516a00d
BLAKE2b-256 checksum
How to use checksums
5f48386d2bda33a8dc25bb42f6d611efbd6305adc2386c134644b7c94518b920
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.14.1

Release files / object_storage_proxy-0.6.12-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL object_storage_proxy-0.6.12-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 6.8 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
8f4bbe75bd20a93fdc6a9e2e3ffb9cf1ee7cfaa83b74f2164d416f06e2c2e174
BLAKE2b-256 checksum
How to use checksums
9f8524795c508c783b09fa9af1e3cd5c2a84407474100149a06db392151b519a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.14.1

Release files / object_storage_proxy-0.6.12-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL object_storage_proxy-0.6.12-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 6.6 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
4bc98c4a1d025f38ed017a68e450153d0d21e40747e547a898131c4c5cf19cd5
BLAKE2b-256 checksum
How to use checksums
263dfbf9c8a89b3b04e62299b35f646dfec2f0025c735798a805bc99b39dee2c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.14.1

Release files / object_storage_proxy-0.6.12-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL object_storage_proxy-0.6.12-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 6.8 MB
Tags CPython 3.14 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
013510ac28c047cd231e8433b830f4a3aef4817e79e67dbbdb2f2cb631e890d7
BLAKE2b-256 checksum
How to use checksums
b103f3e7472994467d011c321644a897067d823db4481811a775994d0e758a09
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.14.1

Release files / object_storage_proxy-0.6.12-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL object_storage_proxy-0.6.12-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 6.6 MB
Tags CPython 3.14 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
dda093b243165893c41b42cf7ef2bc90d9acb2c1235805c608578cb7e4d0b4c7
BLAKE2b-256 checksum
How to use checksums
60ad643c570a2a94f947add4665e483af21c5054794819f5588ed11972764e89
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.14.1

Release files / object_storage_proxy-0.6.12-cp314-cp314-macosx_11_0_arm64.whl

Download URL object_storage_proxy-0.6.12-cp314-cp314-macosx_11_0_arm64.whl
Size 6.3 MB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
6376255382fee7636c81ec481785b0891fc49eedca29ed2251f29c8abd02f707
BLAKE2b-256 checksum
How to use checksums
0beb96fb53d01345ee55471f3b64fa801773ab478c6c35e48431a49034840e62
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.14.1

Release files / object_storage_proxy-0.6.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL object_storage_proxy-0.6.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 6.8 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
e145a66626b7f9d9c9e5420e0b99aa6830d24a24d9927d35d64edd8dd1efc40c
BLAKE2b-256 checksum
How to use checksums
92d7c22b4f4548164b023c8acf34523ed5021b2166f494e4cd476feffdcc2488
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.14.1

Release files / object_storage_proxy-0.6.12-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL object_storage_proxy-0.6.12-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 6.6 MB
Tags CPython 3.13 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
74f62ef5668011611952723952b01555a92413bd13fab4791b32ac7efa3f68e7
BLAKE2b-256 checksum
How to use checksums
bbe346225f85e284f7cbb3465e33ea092e4767e11b1d1622c4fac061d3308816
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.14.1

Release files / object_storage_proxy-0.6.12-cp313-cp313-macosx_11_0_arm64.whl

Download URL object_storage_proxy-0.6.12-cp313-cp313-macosx_11_0_arm64.whl
Size 6.3 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
af8d7f01f2e1ce6a7f4446d444ca38c4598ed239063e6a66c13d86f4991b7b9c
BLAKE2b-256 checksum
How to use checksums
aaa8b779a43b67583282560c60777c6046f2d51543b57ee3d6bcf6f4ebefa533
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.14.1

Release files / object_storage_proxy-0.6.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL object_storage_proxy-0.6.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 6.8 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
dd624c81885875ef0751fa80359f6a2dda74bc7897d238c0c24f2c355e7fb1cf
BLAKE2b-256 checksum
How to use checksums
dff0ac3dd397975f95081fcdab7203b3a73c642ea64b2efbfd2ab3570dbbd6fc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.14.1

Release files / object_storage_proxy-0.6.12-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL object_storage_proxy-0.6.12-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 6.6 MB
Tags CPython 3.12 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
db0e4e3d07896a967b474edfd94708f8e5fc3d0ced581d308d0fb1733e594243
BLAKE2b-256 checksum
How to use checksums
96e91b95e020a3bebe4b1a417b743a15510dc4d71da9fa7a73c92d834783c439
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.14.1

Release files / object_storage_proxy-0.6.12-cp312-cp312-macosx_11_0_arm64.whl

Download URL object_storage_proxy-0.6.12-cp312-cp312-macosx_11_0_arm64.whl
Size 6.3 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
5888d895da04f25ff42909c34469549a8b8420a38699d70925bd4697b43ceffe
BLAKE2b-256 checksum
How to use checksums
ebc97bc7c5c12cff29104bca301b4e716213a5c022f81ece349e099450c2c4f5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.14.1

Release files / object_storage_proxy-0.6.12-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL object_storage_proxy-0.6.12-cp311-cp311-musllinux_1_2_x86_64.whl
Size 7.0 MB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
f86b10bc3bdde40c7f0d7f2d18beb36e6b4a491df5da39cb91712624696d564f
BLAKE2b-256 checksum
How to use checksums
446d2027a704ca8bca9030751841b5c986c7ab8bdeab65e899211d5042488cde
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.14.1

Release files / object_storage_proxy-0.6.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL object_storage_proxy-0.6.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 6.8 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
8a397fbcdf8ed5037207d4460d6129fc8ac413b43ddf1267b4f06d64949ba36e
BLAKE2b-256 checksum
How to use checksums
72a7deb76c839505007d0bbf117a655074dd8a2907f3de48ba5430d40f35256a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.14.1

Release files / object_storage_proxy-0.6.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL object_storage_proxy-0.6.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 6.6 MB
Tags CPython 3.11 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
edd530ba98fa58982624239a74a4e28d9bae74b98390f033f3e5a56e7b4076cb
BLAKE2b-256 checksum
How to use checksums
9066aa02ac8e7c0a7ddf2b8c4fe6cdc484ffdbb6f1464255cd949e0d70e69e3b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.14.1

Release files / object_storage_proxy-0.6.12-cp311-cp311-macosx_11_0_arm64.whl

Download URL object_storage_proxy-0.6.12-cp311-cp311-macosx_11_0_arm64.whl
Size 6.3 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
e310264e3a9c392f9db603b8ab881d7a1767de54e3bf46696efa997587927a16
BLAKE2b-256 checksum
How to use checksums
d797a9b14e0cd763516c6b91805f65a88c1d22269f30245a5b95d9da071f293a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.14.1

Release files / object_storage_proxy-0.6.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL object_storage_proxy-0.6.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 6.8 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
65e0d3861f0a5cbc633fd50977db2f7d4643bc06b6737fa5229aa51beb712cce
BLAKE2b-256 checksum
How to use checksums
87f1ebcd4460ea70a8aa4561b424c525916663185b3863d899c2f5fbfbfa4196
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.14.1

Release files / object_storage_proxy-0.6.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL object_storage_proxy-0.6.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 6.6 MB
Tags CPython 3.10 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
41e0f0e08220238062efa713335355dff21d40d2bcd1c817713d59a486aebf03
BLAKE2b-256 checksum
How to use checksums
116c12b2cc0e012794ad1fb9198f4c270e6c2867c21c70df55406e40f7327929
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.14.1

Release history Release notifications | RSS feed

This release

0.6.12 This release

20 release files

0.6.8

18 release files

0.6.7

18 release files

0.6.4

18 release files

0.6.3

18 release files

0.6.2

18 release files

0.6.0

18 release files

0.5.5

18 release files

0.5.4

18 release files

0.5.3

18 release files

0.5.0

21 release files

0.4.3

15 release files

0.4.2

15 release files

0.4.1

15 release files

0.4.0

15 release files

0.3.1

14 release files

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