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://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.7.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.7-py3-none-any.whl (7.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: whispy_client-1.1.7.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.7.tar.gz
Algorithm Hash digest
SHA256 c930b8eba3d5ca3ffac928ad2369736959e6bb953a8c2675930ba935dbbd06d4
MD5 17ae0bf25750178feb283fe0ff4fbaff
BLAKE2b-256 c776cb6f7ba54ded7b3157ee78b95ca77f5f8f542118f9ab86ef10c82f8a3cf2

See more details on using hashes here.

Provenance

The following attestation bundles were made for whispy_client-1.1.7.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.7-py3-none-any.whl.

File metadata

  • Download URL: whispy_client-1.1.7-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.7-py3-none-any.whl
Algorithm Hash digest
SHA256 7d78daa2520b65cae0bc915c092869e94d399ae186eca7cc141df069eaf6c7db
MD5 658c7560791cf6231bf3c323562b14f6
BLAKE2b-256 6b4362d413b97c48153b6b34ad3779754a7f5cb511386d05aa1f84eb02b05ef7

See more details on using hashes here.

Provenance

The following attestation bundles were made for whispy_client-1.1.7-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