A tool to download files. It supports progress bar, cksum, timeout, retry failed download.
Project description
py3-wget
A Python library for downloading files of any size, especially optimized for large file downloads, with support for progress bars, checksum verification, timeout handling, and automatic retry on failed downloads.
Features
- 🚀 Optimized for large file downloads
- 📊 Progress bar visualization (optional)
- 🔄 Automatic retry on failed downloads
- 🔍 Optional integrity checks (cksum, MD5, SHA256)
- ⏱️ Configurable timeout and retry settings
- 🛡️ Safe file handling, optional overwrite
- 📦 Simple and intuitive API
- 💻 Cross-platform compatibility (works on any OS)
Installation
pip install py3-wget
Quick Start
Basic Download
from py3_wget import download_file
# Simple download with progress bar
download_file("https://raw.githubusercontent.com/python/cpython/3.11/LICENSE")
Advanced Usage
Retry on Failure
The library automatically retries failed downloads with exponential backoff:
download_file(
"https://raw.githubusercontent.com/python/cpython/3.11/LICENSE",
max_tries=5, # Maximum number of retry attempts
retry_seconds=2 # Initial retry delay in seconds
)
Checksum Verification
Verify downloaded files using checksums:
download_file(
"https://raw.githubusercontent.com/python/cpython/3.11/LICENSE",
md5="fcf6b249c2641540219a727f35d8d2c2", # MD5 checksum
sha256="3aff1954277c4fc27603346901e4848b58fe3c8bed63affe6086003dd6c2b9fe" # SHA256 checksum
)
File Overwrite Control
download_file(
"https://raw.githubusercontent.com/python/cpython/3.11/LICENSE",
output_path="downloads/test.bin",
overwrite=True # Overwrite existing file
)
API Reference
download_file
download_file(
url: str,
output_path: Optional[Union[str, Path]] = None,
overwrite: bool = False,
verbose: bool = True,
cksum: Optional[int] = None,
md5: Optional[str] = None,
sha256: Optional[str] = None,
max_tries: int = 5,
block_size_bytes: int = 8192,
retry_seconds: Union[int, float] = 2,
timeout_seconds: Union[int, float] = 60,
) -> None
Parameters
url(str): URL of the file to downloadoutput_path(str or Path, optional): Path to save the file. If None, derived from URLoverwrite(bool): Overwrite existing file (default: False)verbose(bool): Show progress bar and messages (default: True)cksum(int, optional): Expected checksum valuemd5(str, optional): Expected MD5 hashsha256(str, optional): Expected SHA256 hashmax_tries(int): Maximum retry attempts (default: 5)block_size_bytes(int): Download block size in bytes (default: 8192)retry_seconds(int/float): Initial retry delay in seconds (default: 2)timeout_seconds(int/float): Download timeout in seconds (default: 60)
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
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 py3_wget-1.0.13.tar.gz.
File metadata
- Download URL: py3_wget-1.0.13.tar.gz
- Upload date:
- Size: 13.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
036e19e6dd5a766ca15c5400a6d2150227dd2a0090852e99ac58cb27977bd833
|
|
| MD5 |
6329914adf365e0ccdf39798c34933d5
|
|
| BLAKE2b-256 |
ebb133b716985b9e691737e9697849bbbb265df96bef2f247cafb95207cdb84c
|
File details
Details for the file py3_wget-1.0.13-py3-none-any.whl.
File metadata
- Download URL: py3_wget-1.0.13-py3-none-any.whl
- Upload date:
- Size: 11.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9393efef98d5ec3a5c8e1518b415f70c299f820d54121cf56955006f09a5db83
|
|
| MD5 |
1c07aa389a15f249eac01b667de368cd
|
|
| BLAKE2b-256 |
4722bd577aa6743cd14a8fedd0cea0f3847ba9526a14119425b273b02a77fd5c
|