A multi-protocol transfer module (HTTP(S), FTP(S), TFTP, SFTP, Bluetooth RFCOMM (bt:), file:, data:, plus custom tcp: / udp: streaming),
knowing how to download, serve, and receive uploads with options configured via URL query parameters.
pip install -e .pip install .After installation, the wwwget command is available:
wwwget get "https://example.com/file.bin" -o file.bin
wwwget put ./mydir "tcp://0.0.0.0:9000/?print_url=1"This build adds optional Bluetooth RFCOMM support using either:
- Python's native Bluetooth socket support (Linux builds with
AF_BLUETOOTH/BTPROTO_RFCOMM), or - PyBluez (
bluetoothmodule) if installed.
wwwget get "bt://00:00:00:00:00:00:3/out.bin?print_url=1" -o out.binwwwget put ./in.bin "bt://AA:BB:CC:DD:EE:FF:3/out.bin"Notes:
00:00:00:00:00:00is BDADDR_ANY (bind all). If you use it, replace the printed address with the receiver device’s actual Bluetooth MAC address when sharing the URL.- Default channel is
1if omitted.
This package uses optional backends when installed:
httpx(preferred HTTP client)requests(fallback HTTP client)pycurl(optional)paramiko/pysftp(SFTP)
python -m unittest -qInstall with developer tooling:
pip install -e ".[dev]"Run lint + type checks:
ruff check .
mypy src/pywwwgetRun tests:
pytest -q
python -m unittest -qThis repo includes a workflow at .github/workflows/ci.yml that runs:
- ruff (sanity checks)
- mypy (typed surface)
- pytest + unittest
on Python 3.9–3.12.