Skip to main content

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

  1. Submit Request: The CLI creates a new request in your JSONBin collection
  2. Monitor Progress: Real-time progress monitoring with beautiful progress bars
  3. Download Packages: Automatically downloads all PyPI packages containing file parts
  4. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sideloader-2.3.2.tar.gz (18.9 kB view details)

Uploaded Source

Built Distribution

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

sideloader-2.3.2-py3-none-any.whl (22.5 kB view details)

Uploaded Python 3

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

Hashes for sideloader-2.3.2.tar.gz
Algorithm Hash digest
SHA256 d8b311065a2345402e623fbb4913bfb177563ebaf5206978553da58167908712
MD5 b13aea560e232071d78039595c62da8e
BLAKE2b-256 610ee8af39a54d4a8c3863f3cc42bcf2ca18913d82f55b02437ef9e916fad46f

See more details on using hashes here.

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

Hashes for sideloader-2.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f8b93b307b95ea0c609d5cc68ba5b4c7bd19199db09370b0b87f4dfd7e8a3fd6
MD5 cc8e7980a79383c77b466fe86c858d53
BLAKE2b-256 25c2fee134a6d4ee532d7203012ac07cdab06cfa2b831b799a78ecde2d0137e5

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