Download large files via PyPI packages
This project has been quarantined.
PyPI Admins need to review this project before it can be restored. While in quarantine, the project is not installable by clients, and cannot be being modified by its maintainers.
Read more in the project in quarantine help article.
Project description
๐ Sideload
Download large files via PyPI packages! Sideload automatically splits large files into PyPI-compliant chunks and allows you to download them through a beautiful CLI interface.
Features
- โจ Beautiful CLI powered by Rich with progress bars and status updates
- ๐ฆ Automatic file splitting into 99MB PyPI-compliant chunks
- ๐ Automatic reassembly of downloaded parts
- ๐ JSONBin integration for request tracking
- ๐ก๏ธ Error handling with detailed progress monitoring
Installation
git clone <repository-url>
cd Sideload
uv install
Usage
Environment Variables
Set up your credentials:
export JSONBIN_TOKEN="your_jsonbin_token"
export SIDELOAD_COLLECTION_ID="your_collection_id"
Download a File
# Basic usage
uv run sideload download https://example.com/largefile.zip
# Specify output directory
uv run sideload download https://example.com/largefile.zip --output ./downloads/
# Override credentials
uv run sideload download https://example.com/largefile.zip --token YOUR_TOKEN --collection YOUR_COLLECTION
How it Works
- Submit Request: The CLI creates a new request in your JSONBin collection
- Monitor Progress: Real-time progress monitoring with beautiful progress bars
- Download Packages: Automatically downloads all PyPI packages containing file parts
- Reassemble: Extracts and concatenates parts to rebuild the original file
CLI Interface
The CLI provides:
- ๐ Colorful output with status indicators
- ๐ Progress bars for downloads and processing
- ๐ Real-time monitoring of server-side processing
- โ Success/error reporting with detailed information
- ๐ Summary tables showing download statistics
Example Output
๐ SIDELOAD
Download large files via PyPI packages
๐ Requesting download for: https://example.com/largefile.zip
โ
Created sideload request: abc123def456
๐ก Monitoring Progress
๐ฅ Downloading... (45%) โโโโโโโโโโโโโโโโโ
๐จ Building packages...
๐ค Uploading part 1/3...
๐ Download Summary
โโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Property โ Value โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Original Filename โ largefile.zip โ
โ File Size โ 250,123,456 bytes โ
โ Total Packages โ 3 โ
โ Status โ โ
UPLOADED โ
โโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ฆ Downloading Packages
๐ฆ Downloading package 1/3... โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ง Reassembling File
๐ Assembling part 1/3... โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โจ Complete
๐ File successfully downloaded to: largefile.zip
๐ File size: 250,123,456 bytes
Development
Server Setup
The server component handles file processing and PyPI uploads:
# Set environment variables
export JSONBIN_TOKEN="your_token"
export PYPI_TOKEN="your_pypi_token"
# Run the server
uv run python src/sideloader/main.py
Kubernetes Deployment
Before installing the Helm chart, create the required secret in your namespace:
kubectl create secret generic sideload-secrets \
--namespace <namespace> \
--from-literal=jsonbin-token="YOUR_JSONBIN_TOKEN" \
--from-literal=pypi-token="YOUR_PYPI_TOKEN" \
--from-literal=pypi-user="YOUR_PYPI_USERNAME" \
--from-literal=pypi-password="YOUR_PYPI_PASSWORD" \
--from-literal=pypi-totp="YOUR_PYPI_TOTP_SECRET" # optional, omit if not using TOTP
Then install the chart:
helm install sideload ./helm --namespace <namespace>
Project Structure
src/sideloader/
โโโ __init__.py # Package initialization
โโโ cli.py # CLI client
โโโ server.py # Server component
โโโ jsonbin_connector.py # JSONBin API wrapper
โโโ pypi_cleanup.py # PyPI package deletion via Playwright
โโโ scripts/
โโโ cleanup_pypi.py # Admin script to delete all sideload packages
License
[Your License Here]
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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 sideloader-2.3.2.tar.gz.
File metadata
- Download URL: sideloader-2.3.2.tar.gz
- Upload date:
- Size: 18.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d8b311065a2345402e623fbb4913bfb177563ebaf5206978553da58167908712
|
|
| MD5 |
b13aea560e232071d78039595c62da8e
|
|
| BLAKE2b-256 |
610ee8af39a54d4a8c3863f3cc42bcf2ca18913d82f55b02437ef9e916fad46f
|
File details
Details for the file sideloader-2.3.2-py3-none-any.whl.
File metadata
- Download URL: sideloader-2.3.2-py3-none-any.whl
- Upload date:
- Size: 22.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f8b93b307b95ea0c609d5cc68ba5b4c7bd19199db09370b0b87f4dfd7e8a3fd6
|
|
| MD5 |
cc8e7980a79383c77b466fe86c858d53
|
|
| BLAKE2b-256 |
25c2fee134a6d4ee532d7203012ac07cdab06cfa2b831b799a78ecde2d0137e5
|