Skip to main content

robinzhon

Minimal, high-performance Python helpers for concurrent S3 object transfers.

A small extension that exposes fast, concurrent downloads (and uploads) to Python using a Rust implementation optimized for I/O-bound workloads.

Install

  • From PyPI: pip install robinzhon or uv add robinzhon
  • From source (requires Rust + maturin):
# build and install into active venv
maturin develop --release

Quick start

Download a single object:

from robinzhon import S3Downloader

d = S3Downloader("us-east-1")
path = d.download_file("my-bucket", "path/to/object.txt", "./object.txt")
print(path)  # ./object.txt

Download many objects into a directory:

files = ["data/a.csv", "data/b.csv"]
res = d.download_multiple_files("my-bucket", files, "./downloads")
print(res.successful)
print(res.failed)

Upload a single file or multiple files:

from robinzhon import S3Uploader

u = S3Uploader("us-east-1")
u.upload_file("my-bucket", "dest/key.txt", "./local.txt")
paths_and_keys = [("./local1.txt", "key1"), ("./local2.txt", "key2")]
res = u.upload_multiple_files("my-bucket", paths_and_keys)
print(res.successful, res.failed)

Configuration

  • Both S3Downloader and S3Uploader accept an optional concurrency argument (default 5):
S3Downloader("us-east-1", max_concurrent_downloads=10)
S3Uploader("us-east-1", max_concurrent_uploads=10)

API summary

  • Results

    • Attributes: successful: List[str], failed: List[str]
    • Methods: is_complete_success(), has_success(), has_failures(), total_count(), success_rate()
  • S3Downloader(region_name, max_concurrent_downloads=5)

    • download_file(bucket, key, local_path) -> str
    • download_multiple_files(bucket, keys, base_dir) -> Results
    • download_multiple_files_with_paths(bucket, [(key, local_path), ...]) -> Results
  • S3Uploader(region_name, max_concurrent_uploads=5)

    • upload_file(bucket, key, local_path) -> str
    • upload_multiple_files(bucket, [(local_path, key), ...]) -> Results

Building & testing

  • Requires Rust toolchain and maturin to build the extension.
  • Tests are simple Python tests that assume the compiled extension is available.

License

See the LICENSE file in the repository.

Metadata

Release files for robinzhon 0.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for robinzhon 0.2.2
File Size Uploaded Provenance Actions
robinzhon-0.2.2.tar.gz 92.7 kB Without provenance Details for robinzhon-0.2.2.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for robinzhon 0.2.2
File Actions
robinzhon-0.2.2-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 for robinzhon-0.2.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
robinzhon-0.2.2-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details for robinzhon-0.2.2-cp314-cp314-win_amd64.whl
robinzhon-0.2.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64 Details for robinzhon-0.2.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
robinzhon-0.2.2-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details for robinzhon-0.2.2-cp314-cp314-macosx_11_0_arm64.whl
robinzhon-0.2.2-cp314-cp314-macosx_10_12_x86_64.whl CPython 3.14 CPython 3.14 macOS 10.12+ x86-64 Details for robinzhon-0.2.2-cp314-cp314-macosx_10_12_x86_64.whl
robinzhon-0.2.2-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for robinzhon-0.2.2-cp313-cp313-win_amd64.whl
robinzhon-0.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details for robinzhon-0.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
robinzhon-0.2.2-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details for robinzhon-0.2.2-cp313-cp313-macosx_11_0_arm64.whl
robinzhon-0.2.2-cp313-cp313-macosx_10_12_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.12+ x86-64 Details for robinzhon-0.2.2-cp313-cp313-macosx_10_12_x86_64.whl
robinzhon-0.2.2-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for robinzhon-0.2.2-cp312-cp312-win_amd64.whl
robinzhon-0.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details for robinzhon-0.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
robinzhon-0.2.2-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details for robinzhon-0.2.2-cp312-cp312-macosx_11_0_arm64.whl
robinzhon-0.2.2-cp312-cp312-macosx_10_12_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.12+ x86-64 Details for robinzhon-0.2.2-cp312-cp312-macosx_10_12_x86_64.whl
robinzhon-0.2.2-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for robinzhon-0.2.2-cp311-cp311-win_amd64.whl
robinzhon-0.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details for robinzhon-0.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
robinzhon-0.2.2-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details for robinzhon-0.2.2-cp311-cp311-macosx_11_0_arm64.whl
robinzhon-0.2.2-cp311-cp311-macosx_10_12_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.12+ x86-64 Details for robinzhon-0.2.2-cp311-cp311-macosx_10_12_x86_64.whl
robinzhon-0.2.2-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for robinzhon-0.2.2-cp310-cp310-win_amd64.whl
robinzhon-0.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details for robinzhon-0.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
robinzhon-0.2.2-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details for robinzhon-0.2.2-cp310-cp310-macosx_11_0_arm64.whl
robinzhon-0.2.2-cp310-cp310-macosx_10_12_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.12+ x86-64 Details for robinzhon-0.2.2-cp310-cp310-macosx_10_12_x86_64.whl
robinzhon-0.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ x86-64 Details for robinzhon-0.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Total release size: 148.0 MB

Release files / robinzhon-0.2.2.tar.gz

Download URL robinzhon-0.2.2.tar.gz
Size 92.7 kB
Tags Source
SHA-256 checksum
How to use checksums
4e99c32aaaee59c5399fe57004b9bfae2ef5f15aa5bc778619210e74b809b0cb
BLAKE2b-256 checksum
How to use checksums
50721d4c38b9217857cce9f731bdd4073b2ec105d5c28fc27eaf908b78e3d013
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.6

Release files / robinzhon-0.2.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL robinzhon-0.2.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 7.4 MB
Tags Linux glibc 2.17+ x86-64 PyPy 3.11 PyPy 3.11 7.3
SHA-256 checksum
How to use checksums
ec71de147a45b09805912dab77d3ad394bcefbc5e87639d09a0085236e843cfe
BLAKE2b-256 checksum
How to use checksums
c0efda5799263b0e48ed363e999d06d5608cd901988a8ad364e8b8ead0fdc4b7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.6

Release files / robinzhon-0.2.2-cp314-cp314-win_amd64.whl

Download URL robinzhon-0.2.2-cp314-cp314-win_amd64.whl
Size 5.7 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
81abe4eda7686840fe9684e6a8dd6ce162aeb37890d29dad9442a5493391d008
BLAKE2b-256 checksum
How to use checksums
d7afbcaf71afdd75c773fd0a54d859279a8d1b4f9868a8323911242d169443a9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.6

Release files / robinzhon-0.2.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL robinzhon-0.2.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 7.4 MB
Tags CPython 3.14 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
8354d887dc1fcead49dc61e800f3fd51d0b931d0f3c9afcde9c63cac39eb962b
BLAKE2b-256 checksum
How to use checksums
d0a5045b526c5f90f335ccf2cd4e64c7d9b051680e054fb3d2453dbdc21ce0cb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.6

Release files / robinzhon-0.2.2-cp314-cp314-macosx_11_0_arm64.whl

Download URL robinzhon-0.2.2-cp314-cp314-macosx_11_0_arm64.whl
Size 6.7 MB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
dcc705d9d6056b4ac606d4d1910f7bbbf35c5b30adf8ea1a3d7906f231fa619e
BLAKE2b-256 checksum
How to use checksums
eafcc5c1310b809e39f52b9fcd90cf9803d9c75b7fd635afe6c2b76db5c9f0db
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.6

Release files / robinzhon-0.2.2-cp314-cp314-macosx_10_12_x86_64.whl

Download URL robinzhon-0.2.2-cp314-cp314-macosx_10_12_x86_64.whl
Size 6.9 MB
Tags CPython 3.14 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
de8666bee9ff1b353bebec831e35a91426f37f1c9c001225a9ebc9f9e5eb2740
BLAKE2b-256 checksum
How to use checksums
169453687891696760d02f105778946efed0f283fda8a4a898c681548029358f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.6

Release files / robinzhon-0.2.2-cp313-cp313-win_amd64.whl

Download URL robinzhon-0.2.2-cp313-cp313-win_amd64.whl
Size 5.7 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
70937f7671a7ac96be8c8116ca988f3c5df5fa5d8e430fab2b944681fe913148
BLAKE2b-256 checksum
How to use checksums
bc7d85ea431a794400081d791ce625028fa61a1c89ec92e2781cde598de08ce8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.6

Release files / robinzhon-0.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL robinzhon-0.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 7.4 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
7e8f056c4aee596a43a7fae77a5d850873fbd8647f327e993a4c867d3b277266
BLAKE2b-256 checksum
How to use checksums
52ece8450a866e151132b18289d9ba3ded2cf951211ab567c9200605ee14beb3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.6

Release files / robinzhon-0.2.2-cp313-cp313-macosx_11_0_arm64.whl

Download URL robinzhon-0.2.2-cp313-cp313-macosx_11_0_arm64.whl
Size 6.7 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
dea8a88d1121c8a0aa0d5221d116a96d9f892dd17017e85569e2315b34090f0e
BLAKE2b-256 checksum
How to use checksums
f0737020c25c445a10c973df5633635ff094ef7e7893ff7be3f03c855ef510c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.6

Release files / robinzhon-0.2.2-cp313-cp313-macosx_10_12_x86_64.whl

Download URL robinzhon-0.2.2-cp313-cp313-macosx_10_12_x86_64.whl
Size 6.9 MB
Tags CPython 3.13 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
91d46b9fcacabe63f72f24b55753c7562383e28e13ea96e67f7f2687eb23fb28
BLAKE2b-256 checksum
How to use checksums
61966f04d1e2c7f758e5b09db7dcc501a6a4ea9191640c87eb689ea94953e186
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.6

Release files / robinzhon-0.2.2-cp312-cp312-win_amd64.whl

Download URL robinzhon-0.2.2-cp312-cp312-win_amd64.whl
Size 5.7 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
691a4ebb93df98ea9ca3e9fd6665918ac0cf3f63b64baa9d0a316aa6c789f28e
BLAKE2b-256 checksum
How to use checksums
f2367bfe33aa8bcb5b78f648a51250565f0c8fc9a0bf94081e2cbac39108efcd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.6

Release files / robinzhon-0.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL robinzhon-0.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 7.4 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
818f5109e7d8f7acbb81842c18fbfd0b1f3a7c7b898ea9cddec92c0107f23c73
BLAKE2b-256 checksum
How to use checksums
0f64cdbb913ccd06fc56e374879dd0d10369cbcc0266d45d4a36cfdba667d185
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.6

Release files / robinzhon-0.2.2-cp312-cp312-macosx_11_0_arm64.whl

Download URL robinzhon-0.2.2-cp312-cp312-macosx_11_0_arm64.whl
Size 6.7 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
174535ccab06f35c082465f3c945eff1d43b6e893ccf47b8232f5b3e0eabfafe
BLAKE2b-256 checksum
How to use checksums
3a7d0546b06c9ff050f8d595b13c36d9e0470a57a6f647d58964bb14155f3946
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.6

Release files / robinzhon-0.2.2-cp312-cp312-macosx_10_12_x86_64.whl

Download URL robinzhon-0.2.2-cp312-cp312-macosx_10_12_x86_64.whl
Size 6.9 MB
Tags CPython 3.12 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
28118128d5b8ee873dd34cd90e95e8da22f3fbc212ca4215acda9186731dc214
BLAKE2b-256 checksum
How to use checksums
9b155962914fe1a34054f58924db3cce7849c4de4158e3311f3884734efbec0e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.6

Release files / robinzhon-0.2.2-cp311-cp311-win_amd64.whl

Download URL robinzhon-0.2.2-cp311-cp311-win_amd64.whl
Size 5.7 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
5e63a337564286fed8bb5d3be9f36b68838149a248d0f30621e899380b23c135
BLAKE2b-256 checksum
How to use checksums
2709b53e42b51733e6156e25754ed92330a716c4cfec3196923f222640ac0be9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.6

Release files / robinzhon-0.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL robinzhon-0.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 7.4 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
fdc16dc1bb7616d2fcf7e19446200e7ea0b6cd8c4c53727352cb31e8d46cda61
BLAKE2b-256 checksum
How to use checksums
54d55efdd87fee419040f72fd0644f06da5330c6d2fdec866d54a05638b7fe84
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.6

Release files / robinzhon-0.2.2-cp311-cp311-macosx_11_0_arm64.whl

Download URL robinzhon-0.2.2-cp311-cp311-macosx_11_0_arm64.whl
Size 6.7 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
712245fea0bd6cc890121a8d874b6d6809638e7ea88bba68934cd46f6191b157
BLAKE2b-256 checksum
How to use checksums
901a093dc60e3f9514ae16a1bafcced532b4db8dc3365b5312ee438932565cea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.6

Release files / robinzhon-0.2.2-cp311-cp311-macosx_10_12_x86_64.whl

Download URL robinzhon-0.2.2-cp311-cp311-macosx_10_12_x86_64.whl
Size 6.9 MB
Tags CPython 3.11 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
a4ba047601e7329827bf0ec61a3c7999bc1902874b068e11ec32122f0b57fe55
BLAKE2b-256 checksum
How to use checksums
ff401daaa732a7d81cde715edee5bcbd4eea7b17150b8ce37223fe67d393244c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.6

Release files / robinzhon-0.2.2-cp310-cp310-win_amd64.whl

Download URL robinzhon-0.2.2-cp310-cp310-win_amd64.whl
Size 5.7 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
837b4e1498a01e56f84b5f67387aadad64ef660a809a58cab7fd04cb4b4ae8a1
BLAKE2b-256 checksum
How to use checksums
a819c3dcbce20d25f3e9c818c53cfa9e3dafb9e1811a5159d4e531390f4600ae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.6

Release files / robinzhon-0.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL robinzhon-0.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 7.4 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
87855723aabd3171f732a05e32cb85ae573a40589bebb395c48fb8066554cae7
BLAKE2b-256 checksum
How to use checksums
3b3d647f7c2964f0ab6a5d92d59ea81d0913d34a83a3c8663c7044f84723f5dd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.6

Release files / robinzhon-0.2.2-cp310-cp310-macosx_11_0_arm64.whl

Download URL robinzhon-0.2.2-cp310-cp310-macosx_11_0_arm64.whl
Size 6.7 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
43011eabd216adad8afaebd625ff6f06c9a269d04e07da67c388f0b7e068ed43
BLAKE2b-256 checksum
How to use checksums
dde038f287e4f393c8c0234e77a2127eb00c895c55db63183fe4513468e78162
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.6

Release files / robinzhon-0.2.2-cp310-cp310-macosx_10_12_x86_64.whl

Download URL robinzhon-0.2.2-cp310-cp310-macosx_10_12_x86_64.whl
Size 6.9 MB
Tags CPython 3.10 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
defbe6366c3e35edf01fdadabecf8e45371abca3b4d40028c9b733e977aafc9e
BLAKE2b-256 checksum
How to use checksums
622fccb34c4ae22947d4a9c0bb61ad77417c1e7c8118d1c0990721ff29ef6937
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.6

Release files / robinzhon-0.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL robinzhon-0.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 7.4 MB
Tags CPython 3.9 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
037ba793fab26f7fba85489f52b83cea10ef548b3e2881248c1002f60de9a376
BLAKE2b-256 checksum
How to use checksums
20f34476e99a62eaf802050a40d79ec89a4461c4b0a874e6a77c965d2942d272
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.6

Security for robinzhon 0.2.2

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

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.

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