# robinzhon
A high-performance Python library for fast, concurrent S3 object downloads.
## Features
- **Fast downloads**: Concurrent downloads using async I/O
- **Resilient**: Continues downloading even if some files fail
- **Simple API**: Easy-to-use methods for single and batch downloads
- **Detailed results**: Get success/failure information for batch operations
## Requirements
- Python >= 3.8
## Installation
```bash
pip install robinzhon # if you uses pip
uv add robinzhon # if you uses uv
```
## Example
```python
from robinzhon import S3Downloader
# Initialize downloader
client = S3Downloader("us-east-1")
# Download a single file
download_path = client.download_file(
"test-bucket", "test-object-key", "./test-object-key"
)
# download_path will be the file path where the object was downloaded
# Download multiple files to the same directory
files_to_download = [
"data/file1.csv",
"data/file2.json",
"logs/app.log"
]
result = client.download_multiple_files(
"test-bucket", files_to_download, "./downloads"
)
# Check results
print(f"Downloaded {len(result.successful)} files successfully")
print(f"Downloaded files: {result.successful}")
if result.has_failures():
print(f"Failed to download: {result.failed}")
# Download files with custom paths
downloads = [
("data/input.csv", "./processed/input_data.csv"),
("config/settings.json", "./config/app_settings.json"),
]
result = client.download_multiple_files_with_paths("test-bucket", downloads)
print(f"Success rate: {result.success_rate():.1%}")
```
## Configuration
You can configure the maximum number of concurrent downloads:
```python
# Allow up to 10 concurrent downloads (default is 5)
client = S3Downloader("us-east-1", max_concurrent_downloads=10)
```
## Performance Test Results
```text
============================================================
Performance Test: 1000 files
============================================================
Testing Python S3Transfer implementation...
Completed in 40.05s
Testing robinzhon implementation...
Completed in 9.68s
Performance Results (1000 files)
────────────────────────────────────────────────────────────
Metric robinzhon Python Winner
────────────────────────────────────────────────────────────
Duration (seconds) 9.68 40.05 robinzhon (4.1x)
Throughput (files/sec) 103.3 25.0 robinzhon
Success Rate (%) 100.0 100.0 robinzhon
Strict Success Rate (%) 100.0 100.0 robinzhon
Files Downloaded 1000 1000
Actual Files on Disk 1000 1000
────────────────────────────────────────────────────────────
robinzhon is 75.8% faster than Python implementation
```
Raw data
{
"_id": null,
"home_page": "https://github.com/rohaquinlop/robinzhon",
"name": "robinzhon",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "s3, aws, download, performance, concurrent, async, rust, fast, boto3, cloud, storage",
"author": "Robin Quintero <rohaquinlop301@gmail.com>",
"author_email": "Robin Quintero <rohaquinlop301@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/8c/a4/9343f405502866b8d547b398ee32faaa4df2c2f404e503c986e906eface5/robinzhon-0.1.0.tar.gz",
"platform": null,
"description": "# robinzhon\n\nA high-performance Python library for fast, concurrent S3 object downloads.\n\n## Features\n\n- **Fast downloads**: Concurrent downloads using async I/O\n- **Resilient**: Continues downloading even if some files fail\n- **Simple API**: Easy-to-use methods for single and batch downloads\n- **Detailed results**: Get success/failure information for batch operations\n\n## Requirements\n\n- Python >= 3.8\n\n## Installation\n\n```bash\npip install robinzhon # if you uses pip\nuv add robinzhon # if you uses uv\n```\n\n## Example\n\n```python\nfrom robinzhon import S3Downloader\n\n# Initialize downloader\nclient = S3Downloader(\"us-east-1\")\n\n# Download a single file\ndownload_path = client.download_file(\n \"test-bucket\", \"test-object-key\", \"./test-object-key\"\n)\n# download_path will be the file path where the object was downloaded\n\n# Download multiple files to the same directory\nfiles_to_download = [\n \"data/file1.csv\",\n \"data/file2.json\",\n \"logs/app.log\"\n]\nresult = client.download_multiple_files(\n \"test-bucket\", files_to_download, \"./downloads\"\n)\n\n# Check results\nprint(f\"Downloaded {len(result.successful)} files successfully\")\nprint(f\"Downloaded files: {result.successful}\")\nif result.has_failures():\n print(f\"Failed to download: {result.failed}\")\n\n# Download files with custom paths\ndownloads = [\n (\"data/input.csv\", \"./processed/input_data.csv\"),\n (\"config/settings.json\", \"./config/app_settings.json\"),\n]\nresult = client.download_multiple_files_with_paths(\"test-bucket\", downloads)\n\nprint(f\"Success rate: {result.success_rate():.1%}\")\n```\n\n## Configuration\n\nYou can configure the maximum number of concurrent downloads:\n\n```python\n# Allow up to 10 concurrent downloads (default is 5)\nclient = S3Downloader(\"us-east-1\", max_concurrent_downloads=10)\n```\n\n## Performance Test Results\n\n```text\n============================================================\nPerformance Test: 1000 files\n============================================================\n\nTesting Python S3Transfer implementation...\nCompleted in 40.05s\n\nTesting robinzhon implementation...\nCompleted in 9.68s\n\nPerformance Results (1000 files)\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nMetric robinzhon Python Winner\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nDuration (seconds) 9.68 40.05 robinzhon (4.1x)\nThroughput (files/sec) 103.3 25.0 robinzhon\nSuccess Rate (%) 100.0 100.0 robinzhon\nStrict Success Rate (%) 100.0 100.0 robinzhon\nFiles Downloaded 1000 1000\nActual Files on Disk 1000 1000\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nrobinzhon is 75.8% faster than Python implementation\n```\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A high-performance Python library for fast, concurrent S3 object downloads",
"version": "0.1.0",
"project_urls": {
"Homepage": "https://github.com/rohaquinlop/robinzhon",
"Source Code": "https://github.com/rohaquinlop/robinzhon"
},
"split_keywords": [
"s3",
" aws",
" download",
" performance",
" concurrent",
" async",
" rust",
" fast",
" boto3",
" cloud",
" storage"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "db6621481ba6385b7326d70fe2e55d1550f49ca2fa218b2ff0260e8464f79f29",
"md5": "1421efbede58e69620bdb5f67748bf6b",
"sha256": "722a355243dbe3d0495c4f73546a695e08fd732c54ad0601f0f2e8bf356d9efc"
},
"downloads": -1,
"filename": "robinzhon-0.1.0-cp310-cp310-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "1421efbede58e69620bdb5f67748bf6b",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 6469939,
"upload_time": "2025-07-27T14:37:12",
"upload_time_iso_8601": "2025-07-27T14:37:12.243871Z",
"url": "https://files.pythonhosted.org/packages/db/66/21481ba6385b7326d70fe2e55d1550f49ca2fa218b2ff0260e8464f79f29/robinzhon-0.1.0-cp310-cp310-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d886ac1a1536f17a9f7470c6daf09bd1d78e50a8cd421bad4e50f6df869ac355",
"md5": "a330447b0b79e714a8122ed3a43d9c63",
"sha256": "58053ffa6da3a79b3be42024b443554b5a4e8b3faf0fb7406052de196230b0b2"
},
"downloads": -1,
"filename": "robinzhon-0.1.0-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "a330447b0b79e714a8122ed3a43d9c63",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 6263910,
"upload_time": "2025-07-27T14:37:14",
"upload_time_iso_8601": "2025-07-27T14:37:14.183050Z",
"url": "https://files.pythonhosted.org/packages/d8/86/ac1a1536f17a9f7470c6daf09bd1d78e50a8cd421bad4e50f6df869ac355/robinzhon-0.1.0-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4f2831ad6e73e07948958141833b8d04ccc378f41df24230aad0baf6516688d5",
"md5": "d57a20f961acfe03e6476797f9702c8d",
"sha256": "5a35545cd2a0cb834a8e8f12a488cc9f1e3f53a7a996bd716da0bdac17d8dd3c"
},
"downloads": -1,
"filename": "robinzhon-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "d57a20f961acfe03e6476797f9702c8d",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 6989745,
"upload_time": "2025-07-27T14:37:16",
"upload_time_iso_8601": "2025-07-27T14:37:16.387857Z",
"url": "https://files.pythonhosted.org/packages/4f/28/31ad6e73e07948958141833b8d04ccc378f41df24230aad0baf6516688d5/robinzhon-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a6247384650052485a5b68503b2845bc9e9cb22df86bcd91793d4ee5acf3f3da",
"md5": "6899cc299cf19fae55ce11334653a452",
"sha256": "0d3fc19f52264f2af7668386a8e0e7d59692517d84ff4244675bf1a6ecac3cf3"
},
"downloads": -1,
"filename": "robinzhon-0.1.0-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "6899cc299cf19fae55ce11334653a452",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 5230855,
"upload_time": "2025-07-27T14:37:18",
"upload_time_iso_8601": "2025-07-27T14:37:18.539683Z",
"url": "https://files.pythonhosted.org/packages/a6/24/7384650052485a5b68503b2845bc9e9cb22df86bcd91793d4ee5acf3f3da/robinzhon-0.1.0-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7943c246fe75c4ae1b06f43252b18e3f00da86a0598e250c001cafd301c82de1",
"md5": "df8f6b50c96b2d3c238d6cd9cf1efff9",
"sha256": "9222506c25984550b764d3312fe17d10bc4fe54dbbd5811a690ace8d75482fb8"
},
"downloads": -1,
"filename": "robinzhon-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "df8f6b50c96b2d3c238d6cd9cf1efff9",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 6470068,
"upload_time": "2025-07-27T14:37:20",
"upload_time_iso_8601": "2025-07-27T14:37:20.700745Z",
"url": "https://files.pythonhosted.org/packages/79/43/c246fe75c4ae1b06f43252b18e3f00da86a0598e250c001cafd301c82de1/robinzhon-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "9ef570187062cd5dc7167ac4c90f7b32d76b43f6b5d0efd399385160ab79162a",
"md5": "836b2e8f07201128e844b052fc6fa52e",
"sha256": "969b083f6d904bdee7595347078d1cebbb13e113098fb6add937eda59eab99ba"
},
"downloads": -1,
"filename": "robinzhon-0.1.0-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "836b2e8f07201128e844b052fc6fa52e",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 6249898,
"upload_time": "2025-07-27T14:37:22",
"upload_time_iso_8601": "2025-07-27T14:37:22.867849Z",
"url": "https://files.pythonhosted.org/packages/9e/f5/70187062cd5dc7167ac4c90f7b32d76b43f6b5d0efd399385160ab79162a/robinzhon-0.1.0-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3fea038b28aeaa21e94f069812b689397904f263075e15a73aed6c3852060b6b",
"md5": "84a81a4f78a1ef6ff142126c2a7d06fd",
"sha256": "050f8b94bd05590f045b7c63bf414b9d1662c6f8897f20dcd738599c5288772d"
},
"downloads": -1,
"filename": "robinzhon-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "84a81a4f78a1ef6ff142126c2a7d06fd",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 6988370,
"upload_time": "2025-07-27T14:37:24",
"upload_time_iso_8601": "2025-07-27T14:37:24.868623Z",
"url": "https://files.pythonhosted.org/packages/3f/ea/038b28aeaa21e94f069812b689397904f263075e15a73aed6c3852060b6b/robinzhon-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8390a3df7f8cc881dfda7374894e5b74bb6764a4e734d59495658eff3cdc235a",
"md5": "35ddf18c0dd98977da4f6ac2c9dcbe82",
"sha256": "a95a2e5bddd909148b8cc32773e9270da2f1c1fe2676922f59c50086f4fa4204"
},
"downloads": -1,
"filename": "robinzhon-0.1.0-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "35ddf18c0dd98977da4f6ac2c9dcbe82",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 5230622,
"upload_time": "2025-07-27T14:37:27",
"upload_time_iso_8601": "2025-07-27T14:37:27.085729Z",
"url": "https://files.pythonhosted.org/packages/83/90/a3df7f8cc881dfda7374894e5b74bb6764a4e734d59495658eff3cdc235a/robinzhon-0.1.0-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "342da5504b0b2b3a62308cd274743a8df9e7e24d01debc6ee5e930b061dcc4e7",
"md5": "492c7e0d7070498a0cd5a17ab7718581",
"sha256": "a07a5d7e5508b370630be8cb4bbb73b891cfdc6af2309b46606fe328f12e4e32"
},
"downloads": -1,
"filename": "robinzhon-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "492c7e0d7070498a0cd5a17ab7718581",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 6469440,
"upload_time": "2025-07-27T14:37:28",
"upload_time_iso_8601": "2025-07-27T14:37:28.901856Z",
"url": "https://files.pythonhosted.org/packages/34/2d/a5504b0b2b3a62308cd274743a8df9e7e24d01debc6ee5e930b061dcc4e7/robinzhon-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "5225f3d9ad4914b9c02f539377f7871605e563eb397d56e0d47bd7d41c6f76dc",
"md5": "260c9d9da70f41979548921149043445",
"sha256": "354038d59e03852617cad7d4883fd0c4e8821d1ce0e85892d522b1a686cff7b3"
},
"downloads": -1,
"filename": "robinzhon-0.1.0-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "260c9d9da70f41979548921149043445",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 6257318,
"upload_time": "2025-07-27T14:37:31",
"upload_time_iso_8601": "2025-07-27T14:37:31.510309Z",
"url": "https://files.pythonhosted.org/packages/52/25/f3d9ad4914b9c02f539377f7871605e563eb397d56e0d47bd7d41c6f76dc/robinzhon-0.1.0-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d0c198c315534e49bd94a05b42fd0467fff71e7f41575de27b64d19479f40cbf",
"md5": "28ff992472dc734422cd8151e8a7631a",
"sha256": "8c1e76bca5321a532f0f9ab7ea5b58c12ac1cad9c741f0c91d3132014ca58fe1"
},
"downloads": -1,
"filename": "robinzhon-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "28ff992472dc734422cd8151e8a7631a",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 6987446,
"upload_time": "2025-07-27T14:37:33",
"upload_time_iso_8601": "2025-07-27T14:37:33.624230Z",
"url": "https://files.pythonhosted.org/packages/d0/c1/98c315534e49bd94a05b42fd0467fff71e7f41575de27b64d19479f40cbf/robinzhon-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "27ea087f4a8ff18b5d4134f6b6fad3e0b45dbe5e1be28a436499602d4faacb67",
"md5": "36469eadf553a9e0aec0640a2b70b12e",
"sha256": "a38f0949ce78d141fa94eb3126f256439031e5d4028bf679119ce070227044dc"
},
"downloads": -1,
"filename": "robinzhon-0.1.0-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "36469eadf553a9e0aec0640a2b70b12e",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 5229400,
"upload_time": "2025-07-27T14:37:36",
"upload_time_iso_8601": "2025-07-27T14:37:36.974444Z",
"url": "https://files.pythonhosted.org/packages/27/ea/087f4a8ff18b5d4134f6b6fad3e0b45dbe5e1be28a436499602d4faacb67/robinzhon-0.1.0-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "064a22e9d9ba8d399b38ec25fe7f6ef119f6b87c5e16d6ce60e47074c372c866",
"md5": "b3c955a42c6b348af9fbd8548c218ee1",
"sha256": "ac8505463d8a6c04ace4d414c28378daa9281922d55ab1fd186f8a76025256cf"
},
"downloads": -1,
"filename": "robinzhon-0.1.0-cp313-cp313-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "b3c955a42c6b348af9fbd8548c218ee1",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 6468985,
"upload_time": "2025-07-27T14:37:39",
"upload_time_iso_8601": "2025-07-27T14:37:39.510816Z",
"url": "https://files.pythonhosted.org/packages/06/4a/22e9d9ba8d399b38ec25fe7f6ef119f6b87c5e16d6ce60e47074c372c866/robinzhon-0.1.0-cp313-cp313-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "0b8984c719344374bf80e89c23ecedf515331a952b0ec3c5effdce8f3abb7661",
"md5": "59e3e7f22ad4d914b74e2073019bc176",
"sha256": "00c9ef19f00f4a76adca81c53a0b920bbc68366609f4776d7e0d349654773a38"
},
"downloads": -1,
"filename": "robinzhon-0.1.0-cp313-cp313-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "59e3e7f22ad4d914b74e2073019bc176",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 6256628,
"upload_time": "2025-07-27T14:37:41",
"upload_time_iso_8601": "2025-07-27T14:37:41.357431Z",
"url": "https://files.pythonhosted.org/packages/0b/89/84c719344374bf80e89c23ecedf515331a952b0ec3c5effdce8f3abb7661/robinzhon-0.1.0-cp313-cp313-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d3b9ca43c73ac9121ac9f269deb99b66f8750bb4706a50622131fab7083bc2fe",
"md5": "e82f752343d31db09cfdc62a4aeca432",
"sha256": "78e783f5da60097256db91e9e0827fd63dcd034964a2ab4828c86c3ba20f1cc9"
},
"downloads": -1,
"filename": "robinzhon-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "e82f752343d31db09cfdc62a4aeca432",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 6987112,
"upload_time": "2025-07-27T14:37:43",
"upload_time_iso_8601": "2025-07-27T14:37:43.187507Z",
"url": "https://files.pythonhosted.org/packages/d3/b9/ca43c73ac9121ac9f269deb99b66f8750bb4706a50622131fab7083bc2fe/robinzhon-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c0389af4805cf1c2cea099cf7a9b496ba5b75cef394f2d440fcec19dc4361e00",
"md5": "2f88e44b31a432dd5c00fe70b478bd45",
"sha256": "7ccbf789adc4840e0ef628e97df76e9700179a0c711e640c04eddd175468f8f4"
},
"downloads": -1,
"filename": "robinzhon-0.1.0-cp313-cp313-win_amd64.whl",
"has_sig": false,
"md5_digest": "2f88e44b31a432dd5c00fe70b478bd45",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 5229383,
"upload_time": "2025-07-27T14:37:45",
"upload_time_iso_8601": "2025-07-27T14:37:45.333530Z",
"url": "https://files.pythonhosted.org/packages/c0/38/9af4805cf1c2cea099cf7a9b496ba5b75cef394f2d440fcec19dc4361e00/robinzhon-0.1.0-cp313-cp313-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "cc4c5f9eb6e9d29a9d2e26ecf73c597e443a293af2892896dab174127d85e11f",
"md5": "00497d3550ac73f7fcdadc70e0551cb3",
"sha256": "7729722cd64ecf404c6f0958341d5a1e0f7b9fc45af56621bf940752ba425bce"
},
"downloads": -1,
"filename": "robinzhon-0.1.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "00497d3550ac73f7fcdadc70e0551cb3",
"packagetype": "bdist_wheel",
"python_version": "cp314",
"requires_python": ">=3.8",
"size": 6987041,
"upload_time": "2025-07-27T14:37:47",
"upload_time_iso_8601": "2025-07-27T14:37:47.595116Z",
"url": "https://files.pythonhosted.org/packages/cc/4c/5f9eb6e9d29a9d2e26ecf73c597e443a293af2892896dab174127d85e11f/robinzhon-0.1.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "510d6e67ffc75b561bac55293813114491eb2dab54f126d1b16c72e7ddb1312b",
"md5": "3b112541d32cbbd7d1ba9f85b19b7e24",
"sha256": "85ef6355e2f101b19094976338729b31948c8982c065915fcc851c862f34482e"
},
"downloads": -1,
"filename": "robinzhon-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "3b112541d32cbbd7d1ba9f85b19b7e24",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 6989914,
"upload_time": "2025-07-27T14:37:49",
"upload_time_iso_8601": "2025-07-27T14:37:49.440542Z",
"url": "https://files.pythonhosted.org/packages/51/0d/6e67ffc75b561bac55293813114491eb2dab54f126d1b16c72e7ddb1312b/robinzhon-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "795dba719fc7d28d962fd66d947c0a2ab8cccc12afea7b878591c1e25f5fafe6",
"md5": "98e4e8d4931418551c585890e016b6b5",
"sha256": "4d30202291f94ca642303dd7c62aeb99bac1e614453b314f13bbcc9d1285c71a"
},
"downloads": -1,
"filename": "robinzhon-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "98e4e8d4931418551c585890e016b6b5",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 6990032,
"upload_time": "2025-07-27T14:37:51",
"upload_time_iso_8601": "2025-07-27T14:37:51.353880Z",
"url": "https://files.pythonhosted.org/packages/79/5d/ba719fc7d28d962fd66d947c0a2ab8cccc12afea7b878591c1e25f5fafe6/robinzhon-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "42d663591c1f96557debc9fba2d9484c415f9cbfaef2b7c83b1e515b856b89b3",
"md5": "88edd1d3d5da9d14079f0bb9d2e37362",
"sha256": "b502a7fd4a0cf29883ac65a183d20b18aea9d3ee838dde5592f0a4f7a429f115"
},
"downloads": -1,
"filename": "robinzhon-0.1.0-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "88edd1d3d5da9d14079f0bb9d2e37362",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 5230641,
"upload_time": "2025-07-27T14:37:53",
"upload_time_iso_8601": "2025-07-27T14:37:53.365409Z",
"url": "https://files.pythonhosted.org/packages/42/d6/63591c1f96557debc9fba2d9484c415f9cbfaef2b7c83b1e515b856b89b3/robinzhon-0.1.0-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "5d5f1f7bbc9ce47f8639d4f8b19ad30d60637d4a7517056db49818587dad2e48",
"md5": "ec20a044b9d89940ae1091c509da43c5",
"sha256": "595f915ccb158a92bf2e471e20c0b238800e412f99f716ff49b3c2fd5da5b83c"
},
"downloads": -1,
"filename": "robinzhon-0.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "ec20a044b9d89940ae1091c509da43c5",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": ">=3.8",
"size": 6988593,
"upload_time": "2025-07-27T14:37:55",
"upload_time_iso_8601": "2025-07-27T14:37:55.093690Z",
"url": "https://files.pythonhosted.org/packages/5d/5f/1f7bbc9ce47f8639d4f8b19ad30d60637d4a7517056db49818587dad2e48/robinzhon-0.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "60a2af0a9b62dc7373536e9627f3985ade1702cf5649bc1318a3b3a352aefc63",
"md5": "3a7d817dc1d18d1377279256d41c0323",
"sha256": "588296641da1a9c1fa62e9439cde1f2b266b2605712ff1d79dab5c8ce805f855"
},
"downloads": -1,
"filename": "robinzhon-0.1.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "3a7d817dc1d18d1377279256d41c0323",
"packagetype": "bdist_wheel",
"python_version": "pp311",
"requires_python": ">=3.8",
"size": 6988214,
"upload_time": "2025-07-27T14:37:56",
"upload_time_iso_8601": "2025-07-27T14:37:56.999606Z",
"url": "https://files.pythonhosted.org/packages/60/a2/af0a9b62dc7373536e9627f3985ade1702cf5649bc1318a3b3a352aefc63/robinzhon-0.1.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8ca49343f405502866b8d547b398ee32faaa4df2c2f404e503c986e906eface5",
"md5": "a961d16b5e44685a9a273cc3a30ec3da",
"sha256": "3396d6db78c5b748d510a6fbdb0e92baefb530c2aef7665bd1508187d30de99e"
},
"downloads": -1,
"filename": "robinzhon-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "a961d16b5e44685a9a273cc3a30ec3da",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 38403,
"upload_time": "2025-07-27T14:37:58",
"upload_time_iso_8601": "2025-07-27T14:37:58.705977Z",
"url": "https://files.pythonhosted.org/packages/8c/a4/9343f405502866b8d547b398ee32faaa4df2c2f404e503c986e906eface5/robinzhon-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-27 14:37:58",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "rohaquinlop",
"github_project": "robinzhon",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "robinzhon"
}