Minimal, high-performance Python helpers for concurrent S3 object transfers
Project description
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 robinzhonoruv 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
S3DownloaderandS3Uploaderaccept 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()
- Attributes:
-
S3Downloader(region_name, max_concurrent_downloads=5)
download_file(bucket, key, local_path) -> strdownload_multiple_files(bucket, keys, base_dir) -> Resultsdownload_multiple_files_with_paths(bucket, [(key, local_path), ...]) -> Results
-
S3Uploader(region_name, max_concurrent_uploads=5)
upload_file(bucket, key, local_path) -> strupload_multiple_files(bucket, [(local_path, key), ...]) -> Results
Building & testing
- Requires Rust toolchain and
maturinto build the extension. - Tests are simple Python tests that assume the compiled extension is available.
License
See the LICENSE file in the repository.
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
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file robinzhon-0.2.2.tar.gz.
File metadata
- Download URL: robinzhon-0.2.2.tar.gz
- Upload date:
- Size: 92.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4e99c32aaaee59c5399fe57004b9bfae2ef5f15aa5bc778619210e74b809b0cb
|
|
| MD5 |
6cd5353ad926d2f1dd2993dbbc326b28
|
|
| BLAKE2b-256 |
50721d4c38b9217857cce9f731bdd4073b2ec105d5c28fc27eaf908b78e3d013
|
File details
Details for the file robinzhon-0.2.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: robinzhon-0.2.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 7.4 MB
- Tags: PyPy, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ec71de147a45b09805912dab77d3ad394bcefbc5e87639d09a0085236e843cfe
|
|
| MD5 |
421ff2f491279bb4321ec625219c3e29
|
|
| BLAKE2b-256 |
c0efda5799263b0e48ed363e999d06d5608cd901988a8ad364e8b8ead0fdc4b7
|
File details
Details for the file robinzhon-0.2.2-cp314-cp314-win_amd64.whl.
File metadata
- Download URL: robinzhon-0.2.2-cp314-cp314-win_amd64.whl
- Upload date:
- Size: 5.7 MB
- Tags: CPython 3.14, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
81abe4eda7686840fe9684e6a8dd6ce162aeb37890d29dad9442a5493391d008
|
|
| MD5 |
bd40022636fb2cc846fb8128a15f162e
|
|
| BLAKE2b-256 |
d7afbcaf71afdd75c773fd0a54d859279a8d1b4f9868a8323911242d169443a9
|
File details
Details for the file robinzhon-0.2.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: robinzhon-0.2.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 7.4 MB
- Tags: CPython 3.14, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8354d887dc1fcead49dc61e800f3fd51d0b931d0f3c9afcde9c63cac39eb962b
|
|
| MD5 |
ce3aa21f73be9dcfbe7be7f0fca19317
|
|
| BLAKE2b-256 |
d0a5045b526c5f90f335ccf2cd4e64c7d9b051680e054fb3d2453dbdc21ce0cb
|
File details
Details for the file robinzhon-0.2.2-cp314-cp314-macosx_11_0_arm64.whl.
File metadata
- Download URL: robinzhon-0.2.2-cp314-cp314-macosx_11_0_arm64.whl
- Upload date:
- Size: 6.7 MB
- Tags: CPython 3.14, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dcc705d9d6056b4ac606d4d1910f7bbbf35c5b30adf8ea1a3d7906f231fa619e
|
|
| MD5 |
1b0d739631cbf3cc192a0c47335536a1
|
|
| BLAKE2b-256 |
eafcc5c1310b809e39f52b9fcd90cf9803d9c75b7fd635afe6c2b76db5c9f0db
|
File details
Details for the file robinzhon-0.2.2-cp314-cp314-macosx_10_12_x86_64.whl.
File metadata
- Download URL: robinzhon-0.2.2-cp314-cp314-macosx_10_12_x86_64.whl
- Upload date:
- Size: 6.9 MB
- Tags: CPython 3.14, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
de8666bee9ff1b353bebec831e35a91426f37f1c9c001225a9ebc9f9e5eb2740
|
|
| MD5 |
c359ed7bdb19753c4e2bea0e00916b98
|
|
| BLAKE2b-256 |
169453687891696760d02f105778946efed0f283fda8a4a898c681548029358f
|
File details
Details for the file robinzhon-0.2.2-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: robinzhon-0.2.2-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 5.7 MB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
70937f7671a7ac96be8c8116ca988f3c5df5fa5d8e430fab2b944681fe913148
|
|
| MD5 |
bc6e0c44fe0918c6b5cb9419603b0ce5
|
|
| BLAKE2b-256 |
bc7d85ea431a794400081d791ce625028fa61a1c89ec92e2781cde598de08ce8
|
File details
Details for the file robinzhon-0.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: robinzhon-0.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 7.4 MB
- Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7e8f056c4aee596a43a7fae77a5d850873fbd8647f327e993a4c867d3b277266
|
|
| MD5 |
2a4a2ac562cc07c3ddf23cc72e6abf3c
|
|
| BLAKE2b-256 |
52ece8450a866e151132b18289d9ba3ded2cf951211ab567c9200605ee14beb3
|
File details
Details for the file robinzhon-0.2.2-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: robinzhon-0.2.2-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 6.7 MB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dea8a88d1121c8a0aa0d5221d116a96d9f892dd17017e85569e2315b34090f0e
|
|
| MD5 |
0b3ec3a3921517852c11f646e5685c6f
|
|
| BLAKE2b-256 |
f0737020c25c445a10c973df5633635ff094ef7e7893ff7be3f03c855ef510c2
|
File details
Details for the file robinzhon-0.2.2-cp313-cp313-macosx_10_12_x86_64.whl.
File metadata
- Download URL: robinzhon-0.2.2-cp313-cp313-macosx_10_12_x86_64.whl
- Upload date:
- Size: 6.9 MB
- Tags: CPython 3.13, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
91d46b9fcacabe63f72f24b55753c7562383e28e13ea96e67f7f2687eb23fb28
|
|
| MD5 |
34780bceede5c8f8fe2fc9b234cf85e3
|
|
| BLAKE2b-256 |
61966f04d1e2c7f758e5b09db7dcc501a6a4ea9191640c87eb689ea94953e186
|
File details
Details for the file robinzhon-0.2.2-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: robinzhon-0.2.2-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 5.7 MB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
691a4ebb93df98ea9ca3e9fd6665918ac0cf3f63b64baa9d0a316aa6c789f28e
|
|
| MD5 |
cd10663243d4f48458e831e493269f9f
|
|
| BLAKE2b-256 |
f2367bfe33aa8bcb5b78f648a51250565f0c8fc9a0bf94081e2cbac39108efcd
|
File details
Details for the file robinzhon-0.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: robinzhon-0.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 7.4 MB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
818f5109e7d8f7acbb81842c18fbfd0b1f3a7c7b898ea9cddec92c0107f23c73
|
|
| MD5 |
cafb6574fadf2bd936415be518626857
|
|
| BLAKE2b-256 |
0f64cdbb913ccd06fc56e374879dd0d10369cbcc0266d45d4a36cfdba667d185
|
File details
Details for the file robinzhon-0.2.2-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: robinzhon-0.2.2-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 6.7 MB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
174535ccab06f35c082465f3c945eff1d43b6e893ccf47b8232f5b3e0eabfafe
|
|
| MD5 |
27fc54295c76bca35bb1289b71f78734
|
|
| BLAKE2b-256 |
3a7d0546b06c9ff050f8d595b13c36d9e0470a57a6f647d58964bb14155f3946
|
File details
Details for the file robinzhon-0.2.2-cp312-cp312-macosx_10_12_x86_64.whl.
File metadata
- Download URL: robinzhon-0.2.2-cp312-cp312-macosx_10_12_x86_64.whl
- Upload date:
- Size: 6.9 MB
- Tags: CPython 3.12, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
28118128d5b8ee873dd34cd90e95e8da22f3fbc212ca4215acda9186731dc214
|
|
| MD5 |
183cc5d96b297a532e73c03c6eb5d00d
|
|
| BLAKE2b-256 |
9b155962914fe1a34054f58924db3cce7849c4de4158e3311f3884734efbec0e
|
File details
Details for the file robinzhon-0.2.2-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: robinzhon-0.2.2-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 5.7 MB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5e63a337564286fed8bb5d3be9f36b68838149a248d0f30621e899380b23c135
|
|
| MD5 |
f0831ececafb32873c2800379a866c30
|
|
| BLAKE2b-256 |
2709b53e42b51733e6156e25754ed92330a716c4cfec3196923f222640ac0be9
|
File details
Details for the file robinzhon-0.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: robinzhon-0.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 7.4 MB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fdc16dc1bb7616d2fcf7e19446200e7ea0b6cd8c4c53727352cb31e8d46cda61
|
|
| MD5 |
7336360514fe23a581c94b2f4a2eddeb
|
|
| BLAKE2b-256 |
54d55efdd87fee419040f72fd0644f06da5330c6d2fdec866d54a05638b7fe84
|
File details
Details for the file robinzhon-0.2.2-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: robinzhon-0.2.2-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 6.7 MB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
712245fea0bd6cc890121a8d874b6d6809638e7ea88bba68934cd46f6191b157
|
|
| MD5 |
79270a0bf8669a04d6d972a36a2e751f
|
|
| BLAKE2b-256 |
901a093dc60e3f9514ae16a1bafcced532b4db8dc3365b5312ee438932565cea
|
File details
Details for the file robinzhon-0.2.2-cp311-cp311-macosx_10_12_x86_64.whl.
File metadata
- Download URL: robinzhon-0.2.2-cp311-cp311-macosx_10_12_x86_64.whl
- Upload date:
- Size: 6.9 MB
- Tags: CPython 3.11, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a4ba047601e7329827bf0ec61a3c7999bc1902874b068e11ec32122f0b57fe55
|
|
| MD5 |
3bbb82c3c4c40c46019414c2a6a2ebd1
|
|
| BLAKE2b-256 |
ff401daaa732a7d81cde715edee5bcbd4eea7b17150b8ce37223fe67d393244c
|
File details
Details for the file robinzhon-0.2.2-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: robinzhon-0.2.2-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 5.7 MB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
837b4e1498a01e56f84b5f67387aadad64ef660a809a58cab7fd04cb4b4ae8a1
|
|
| MD5 |
dd218f72c1842e1c59aa97aa689b028e
|
|
| BLAKE2b-256 |
a819c3dcbce20d25f3e9c818c53cfa9e3dafb9e1811a5159d4e531390f4600ae
|
File details
Details for the file robinzhon-0.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: robinzhon-0.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 7.4 MB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
87855723aabd3171f732a05e32cb85ae573a40589bebb395c48fb8066554cae7
|
|
| MD5 |
2d836e872a5a164ca9beabbbddf60d8b
|
|
| BLAKE2b-256 |
3b3d647f7c2964f0ab6a5d92d59ea81d0913d34a83a3c8663c7044f84723f5dd
|
File details
Details for the file robinzhon-0.2.2-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: robinzhon-0.2.2-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 6.7 MB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
43011eabd216adad8afaebd625ff6f06c9a269d04e07da67c388f0b7e068ed43
|
|
| MD5 |
a2e3ec80a52052a896f2027e716c9284
|
|
| BLAKE2b-256 |
dde038f287e4f393c8c0234e77a2127eb00c895c55db63183fe4513468e78162
|
File details
Details for the file robinzhon-0.2.2-cp310-cp310-macosx_10_12_x86_64.whl.
File metadata
- Download URL: robinzhon-0.2.2-cp310-cp310-macosx_10_12_x86_64.whl
- Upload date:
- Size: 6.9 MB
- Tags: CPython 3.10, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
defbe6366c3e35edf01fdadabecf8e45371abca3b4d40028c9b733e977aafc9e
|
|
| MD5 |
761885283e3c1d70fd27788266f49fa3
|
|
| BLAKE2b-256 |
622fccb34c4ae22947d4a9c0bb61ad77417c1e7c8118d1c0990721ff29ef6937
|
File details
Details for the file robinzhon-0.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: robinzhon-0.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 7.4 MB
- Tags: CPython 3.9, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
037ba793fab26f7fba85489f52b83cea10ef548b3e2881248c1002f60de9a376
|
|
| MD5 |
9120f443987980157e5c29e3a4452c80
|
|
| BLAKE2b-256 |
20f34476e99a62eaf802050a40d79ec89a4461c4b0a874e6a77c965d2942d272
|