Skip to main content

Stream Python packages at runtime — the PyPI CDN client

Project description

🌀 Whispy Client

Import Python packages at runtime with a zero-dependency client. Keep your scripts clean, your environments disposable, and your setup friction low.

PyPI version stdlib only Whispy repo MIT

The client lives in the Whispy repository, with the implementation in client/whispy_client and the server entrypoint in server/app.py. It downloads a bundle from a Whispy server, extracts it to a temporary directory, and imports the requested module at runtime.

When to Use It

  • Throwaway scripts that need requests, numpy, or beautifulsoup4 without a setup step.
  • Short-lived jobs where you want packages to vanish when the process exits.
  • Pinned runtime experiments where one exact version matters.
  • Self-hosted setups that point at your own server from the main repo.

Quick Examples

from whispy_client import remote, configure

configure(verbose=True)

requests = remote("requests")
numpy = remote("numpy", version="1.26.4")
bs4 = remote("beautifulsoup4", module="bs4", deps=True)
# Version pinning (use the version parameter)
requests = remote("requests", version="2.31.0")
numpy = remote("numpy", version="1.26.4")

# Common import name mismatches
bs4 = remote("beautifulsoup4", module="bs4")
PIL = remote("pillow", module="PIL")
yaml = remote("pyyaml", module="yaml")
dateutil = remote("python-dateutil", module="dateutil")
cv2 = remote("opencv-python", module="cv2", deps=True)

Import Failure Tips

If a package downloads but import fails with an error like No module named 'numpy', that usually means a dependency is missing from the runtime bundle.

  • Retry with deps=True for that call.
  • Or set configure(deps=True) once for process-wide behavior.
  • Keep module="..." when the import name differs from the distribution name.

Example:

# opencv-python imports as cv2 and needs runtime dependencies
cv2 = remote("opencv-python", module="cv2", deps=True)

Install

pip install whispy-client

whispy-client on PyPI

For local development from this repo:

cd client
pip install -e .

API

remote(package, *, module=None, version=None, deps=False, host=None)

package is a PyPI distribution name. Specify versions using the version parameter (for example: remote("requests", version="2.31.0")). If the import name differs from the distribution name, pass module=....

deps=True asks the server to include install-time dependencies as well. That behavior is best-effort and does not perform full dependency conflict resolution.

Param Description
package PyPI distribution name
module Import name if different from the package name
version Explicit version override. Specify versions here instead of embedding them in package
deps Fetch install-time dependencies as well
host Per-call Whispy server override

configure(*, host=None, deps=None, verbose=None)

Sets process-wide defaults. The default host comes from WHISPY_HOST, falling back to https://cdn.whispycdn.dev.

Param Description
host Default Whispy server URL
deps Default dependency-fetching behavior
verbose Print progress messages while fetching and importing

Code References

License

MIT. Packages are sourced from PyPI and remain under their original licenses.

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

whispy_client-1.1.6.tar.gz (6.9 kB view details)

Uploaded Source

Built Distribution

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

whispy_client-1.1.6-py3-none-any.whl (7.6 kB view details)

Uploaded Python 3

File details

Details for the file whispy_client-1.1.6.tar.gz.

File metadata

  • Download URL: whispy_client-1.1.6.tar.gz
  • Upload date:
  • Size: 6.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for whispy_client-1.1.6.tar.gz
Algorithm Hash digest
SHA256 16c70710639fc6962ae0c98b89a07bb45bc2ee0ecc7a10499d0ae5c7f6ca2ec9
MD5 4666dc2588f45c0a69e3e39f6217e6af
BLAKE2b-256 1e2b6d45e28281f42d1062c7356d1d5b4fce0d109b0d4486b0eab931b0e0605e

See more details on using hashes here.

Provenance

The following attestation bundles were made for whispy_client-1.1.6.tar.gz:

Publisher: ci.yml on Dark-Avenger-Reborn/Whispy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file whispy_client-1.1.6-py3-none-any.whl.

File metadata

  • Download URL: whispy_client-1.1.6-py3-none-any.whl
  • Upload date:
  • Size: 7.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for whispy_client-1.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 a66d91cdc93d11f0a89206d91f11061f7b7b466911198b829699518e0759c074
MD5 60ab5483f5c0d2d7c22085718c36b880
BLAKE2b-256 11663674ee98d51d7a48c762c80c6dec5f01ba07903135ad5cb6c576a9b67270

See more details on using hashes here.

Provenance

The following attestation bundles were made for whispy_client-1.1.6-py3-none-any.whl:

Publisher: ci.yml on Dark-Avenger-Reborn/Whispy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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