Skip to main content

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 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.

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

robinzhon-0.2.2.tar.gz (92.7 kB view details)

Uploaded Source

Built Distributions

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

robinzhon-0.2.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.4 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

robinzhon-0.2.2-cp314-cp314-win_amd64.whl (5.7 MB view details)

Uploaded CPython 3.14Windows x86-64

robinzhon-0.2.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.4 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

robinzhon-0.2.2-cp314-cp314-macosx_11_0_arm64.whl (6.7 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

robinzhon-0.2.2-cp314-cp314-macosx_10_12_x86_64.whl (6.9 MB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

robinzhon-0.2.2-cp313-cp313-win_amd64.whl (5.7 MB view details)

Uploaded CPython 3.13Windows x86-64

robinzhon-0.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

robinzhon-0.2.2-cp313-cp313-macosx_11_0_arm64.whl (6.7 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

robinzhon-0.2.2-cp313-cp313-macosx_10_12_x86_64.whl (6.9 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

robinzhon-0.2.2-cp312-cp312-win_amd64.whl (5.7 MB view details)

Uploaded CPython 3.12Windows x86-64

robinzhon-0.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

robinzhon-0.2.2-cp312-cp312-macosx_11_0_arm64.whl (6.7 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

robinzhon-0.2.2-cp312-cp312-macosx_10_12_x86_64.whl (6.9 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

robinzhon-0.2.2-cp311-cp311-win_amd64.whl (5.7 MB view details)

Uploaded CPython 3.11Windows x86-64

robinzhon-0.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

robinzhon-0.2.2-cp311-cp311-macosx_11_0_arm64.whl (6.7 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

robinzhon-0.2.2-cp311-cp311-macosx_10_12_x86_64.whl (6.9 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

robinzhon-0.2.2-cp310-cp310-win_amd64.whl (5.7 MB view details)

Uploaded CPython 3.10Windows x86-64

robinzhon-0.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

robinzhon-0.2.2-cp310-cp310-macosx_11_0_arm64.whl (6.7 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

robinzhon-0.2.2-cp310-cp310-macosx_10_12_x86_64.whl (6.9 MB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

robinzhon-0.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.4 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

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

Hashes for robinzhon-0.2.2.tar.gz
Algorithm Hash digest
SHA256 4e99c32aaaee59c5399fe57004b9bfae2ef5f15aa5bc778619210e74b809b0cb
MD5 6cd5353ad926d2f1dd2993dbbc326b28
BLAKE2b-256 50721d4c38b9217857cce9f731bdd4073b2ec105d5c28fc27eaf908b78e3d013

See more details on using hashes here.

File details

Details for the file robinzhon-0.2.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for robinzhon-0.2.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ec71de147a45b09805912dab77d3ad394bcefbc5e87639d09a0085236e843cfe
MD5 421ff2f491279bb4321ec625219c3e29
BLAKE2b-256 c0efda5799263b0e48ed363e999d06d5608cd901988a8ad364e8b8ead0fdc4b7

See more details on using hashes here.

File details

Details for the file robinzhon-0.2.2-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for robinzhon-0.2.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 81abe4eda7686840fe9684e6a8dd6ce162aeb37890d29dad9442a5493391d008
MD5 bd40022636fb2cc846fb8128a15f162e
BLAKE2b-256 d7afbcaf71afdd75c773fd0a54d859279a8d1b4f9868a8323911242d169443a9

See more details on using hashes here.

File details

Details for the file robinzhon-0.2.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for robinzhon-0.2.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8354d887dc1fcead49dc61e800f3fd51d0b931d0f3c9afcde9c63cac39eb962b
MD5 ce3aa21f73be9dcfbe7be7f0fca19317
BLAKE2b-256 d0a5045b526c5f90f335ccf2cd4e64c7d9b051680e054fb3d2453dbdc21ce0cb

See more details on using hashes here.

File details

Details for the file robinzhon-0.2.2-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for robinzhon-0.2.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dcc705d9d6056b4ac606d4d1910f7bbbf35c5b30adf8ea1a3d7906f231fa619e
MD5 1b0d739631cbf3cc192a0c47335536a1
BLAKE2b-256 eafcc5c1310b809e39f52b9fcd90cf9803d9c75b7fd635afe6c2b76db5c9f0db

See more details on using hashes here.

File details

Details for the file robinzhon-0.2.2-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for robinzhon-0.2.2-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 de8666bee9ff1b353bebec831e35a91426f37f1c9c001225a9ebc9f9e5eb2740
MD5 c359ed7bdb19753c4e2bea0e00916b98
BLAKE2b-256 169453687891696760d02f105778946efed0f283fda8a4a898c681548029358f

See more details on using hashes here.

File details

Details for the file robinzhon-0.2.2-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for robinzhon-0.2.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 70937f7671a7ac96be8c8116ca988f3c5df5fa5d8e430fab2b944681fe913148
MD5 bc6e0c44fe0918c6b5cb9419603b0ce5
BLAKE2b-256 bc7d85ea431a794400081d791ce625028fa61a1c89ec92e2781cde598de08ce8

See more details on using hashes here.

File details

Details for the file robinzhon-0.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for robinzhon-0.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7e8f056c4aee596a43a7fae77a5d850873fbd8647f327e993a4c867d3b277266
MD5 2a4a2ac562cc07c3ddf23cc72e6abf3c
BLAKE2b-256 52ece8450a866e151132b18289d9ba3ded2cf951211ab567c9200605ee14beb3

See more details on using hashes here.

File details

Details for the file robinzhon-0.2.2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for robinzhon-0.2.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dea8a88d1121c8a0aa0d5221d116a96d9f892dd17017e85569e2315b34090f0e
MD5 0b3ec3a3921517852c11f646e5685c6f
BLAKE2b-256 f0737020c25c445a10c973df5633635ff094ef7e7893ff7be3f03c855ef510c2

See more details on using hashes here.

File details

Details for the file robinzhon-0.2.2-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for robinzhon-0.2.2-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 91d46b9fcacabe63f72f24b55753c7562383e28e13ea96e67f7f2687eb23fb28
MD5 34780bceede5c8f8fe2fc9b234cf85e3
BLAKE2b-256 61966f04d1e2c7f758e5b09db7dcc501a6a4ea9191640c87eb689ea94953e186

See more details on using hashes here.

File details

Details for the file robinzhon-0.2.2-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for robinzhon-0.2.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 691a4ebb93df98ea9ca3e9fd6665918ac0cf3f63b64baa9d0a316aa6c789f28e
MD5 cd10663243d4f48458e831e493269f9f
BLAKE2b-256 f2367bfe33aa8bcb5b78f648a51250565f0c8fc9a0bf94081e2cbac39108efcd

See more details on using hashes here.

File details

Details for the file robinzhon-0.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for robinzhon-0.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 818f5109e7d8f7acbb81842c18fbfd0b1f3a7c7b898ea9cddec92c0107f23c73
MD5 cafb6574fadf2bd936415be518626857
BLAKE2b-256 0f64cdbb913ccd06fc56e374879dd0d10369cbcc0266d45d4a36cfdba667d185

See more details on using hashes here.

File details

Details for the file robinzhon-0.2.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for robinzhon-0.2.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 174535ccab06f35c082465f3c945eff1d43b6e893ccf47b8232f5b3e0eabfafe
MD5 27fc54295c76bca35bb1289b71f78734
BLAKE2b-256 3a7d0546b06c9ff050f8d595b13c36d9e0470a57a6f647d58964bb14155f3946

See more details on using hashes here.

File details

Details for the file robinzhon-0.2.2-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for robinzhon-0.2.2-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 28118128d5b8ee873dd34cd90e95e8da22f3fbc212ca4215acda9186731dc214
MD5 183cc5d96b297a532e73c03c6eb5d00d
BLAKE2b-256 9b155962914fe1a34054f58924db3cce7849c4de4158e3311f3884734efbec0e

See more details on using hashes here.

File details

Details for the file robinzhon-0.2.2-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for robinzhon-0.2.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 5e63a337564286fed8bb5d3be9f36b68838149a248d0f30621e899380b23c135
MD5 f0831ececafb32873c2800379a866c30
BLAKE2b-256 2709b53e42b51733e6156e25754ed92330a716c4cfec3196923f222640ac0be9

See more details on using hashes here.

File details

Details for the file robinzhon-0.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for robinzhon-0.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fdc16dc1bb7616d2fcf7e19446200e7ea0b6cd8c4c53727352cb31e8d46cda61
MD5 7336360514fe23a581c94b2f4a2eddeb
BLAKE2b-256 54d55efdd87fee419040f72fd0644f06da5330c6d2fdec866d54a05638b7fe84

See more details on using hashes here.

File details

Details for the file robinzhon-0.2.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for robinzhon-0.2.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 712245fea0bd6cc890121a8d874b6d6809638e7ea88bba68934cd46f6191b157
MD5 79270a0bf8669a04d6d972a36a2e751f
BLAKE2b-256 901a093dc60e3f9514ae16a1bafcced532b4db8dc3365b5312ee438932565cea

See more details on using hashes here.

File details

Details for the file robinzhon-0.2.2-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for robinzhon-0.2.2-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a4ba047601e7329827bf0ec61a3c7999bc1902874b068e11ec32122f0b57fe55
MD5 3bbb82c3c4c40c46019414c2a6a2ebd1
BLAKE2b-256 ff401daaa732a7d81cde715edee5bcbd4eea7b17150b8ce37223fe67d393244c

See more details on using hashes here.

File details

Details for the file robinzhon-0.2.2-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for robinzhon-0.2.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 837b4e1498a01e56f84b5f67387aadad64ef660a809a58cab7fd04cb4b4ae8a1
MD5 dd218f72c1842e1c59aa97aa689b028e
BLAKE2b-256 a819c3dcbce20d25f3e9c818c53cfa9e3dafb9e1811a5159d4e531390f4600ae

See more details on using hashes here.

File details

Details for the file robinzhon-0.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for robinzhon-0.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 87855723aabd3171f732a05e32cb85ae573a40589bebb395c48fb8066554cae7
MD5 2d836e872a5a164ca9beabbbddf60d8b
BLAKE2b-256 3b3d647f7c2964f0ab6a5d92d59ea81d0913d34a83a3c8663c7044f84723f5dd

See more details on using hashes here.

File details

Details for the file robinzhon-0.2.2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for robinzhon-0.2.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 43011eabd216adad8afaebd625ff6f06c9a269d04e07da67c388f0b7e068ed43
MD5 a2e3ec80a52052a896f2027e716c9284
BLAKE2b-256 dde038f287e4f393c8c0234e77a2127eb00c895c55db63183fe4513468e78162

See more details on using hashes here.

File details

Details for the file robinzhon-0.2.2-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for robinzhon-0.2.2-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 defbe6366c3e35edf01fdadabecf8e45371abca3b4d40028c9b733e977aafc9e
MD5 761885283e3c1d70fd27788266f49fa3
BLAKE2b-256 622fccb34c4ae22947d4a9c0bb61ad77417c1e7c8118d1c0990721ff29ef6937

See more details on using hashes here.

File details

Details for the file robinzhon-0.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for robinzhon-0.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 037ba793fab26f7fba85489f52b83cea10ef548b3e2881248c1002f60de9a376
MD5 9120f443987980157e5c29e3a4452c80
BLAKE2b-256 20f34476e99a62eaf802050a40d79ec89a4461c4b0a874e6a77c965d2942d272

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page