Skip to main content

Extism Python Host SDK

This repo contains the Python package for integrating with the Extism Webassembly framework. Install this library into your Python application host to run Extism WebAssembly guest plug-ins.

import extism
import json

manifest = {"wasm": [{"url": "https://github.com/extism/plugins/releases/latest/download/count_vowels.wasm"}]}
with extism.Plugin(manifest, wasi=True) as plugin:
    wasm_vowel_count = plugin.call(
        "count_vowels",
        "hello world",
        parse = lambda output: json.loads(bytes(output).decode('utf-8'))
    )
print(wasm_vowel_count) # {'count': 3, 'total': 3, 'vowels': 'aeiouAEIOU'}

Installation

Install this package from PyPI:

# using pip
$ pip install extism==1.0.0

# using poetry
$ poetry add extism=^1.0.0

The extism package should install an appropriate extism_sys dependency containing a prebuilt shared object for your system. We support the following targets:

  • MacOS 11.0+, arm64
  • MacOS 10.7+, x86_64
  • Manylinux 2.17+, aarch64
  • Manylinux 2.17+, x86_64
  • MUSL Linux 1.2+, aarch64
  • Windows (MSVC), x86_64

If you need support for a different platform or architecture, please let us know!

Documentation

Check out the docs:

Development

Local dev

Install just. Running just test should install all other prerequisites.

Release workflow

  1. Create a semver-formatted git tag (git tag v1.0.0).
  2. Push that tag to the repository (git push origin v1.0.0.)
  3. Wait for the Build workflow to run.
  4. Once the build workflow finishes, go to the releases page. You should see a draft release.
  5. Edit the draft release. Publish the release.
  6. Wait for the Release workflow to run.
  7. Once the release workflow completes, you should be able to pip install extism==${YOUR_TAG} from PyPI.

LICENSE

BSD-3-Clause

Release files for extism 1.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for extism 1.1.1
File Size Uploaded
extism-1.1.1.tar.gz 11.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for extism 1.1.1
File Interpreter ABI Platform
extism-1.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 22.8 kB

Release files / extism-1.1.1.tar.gz

Download URL extism-1.1.1.tar.gz
Size 11.6 kB
Tags Source
SHA-256 checksum
How to use checksums
067bf4ebd89ba85681508a77eb7f213ab13d2dbd6e71dabdac5d9622c61ee1d1
BLAKE2b-256 checksum
How to use checksums
ccc6573488066680ef80ba6a46ab5e0df42aa4beafac51d2c3cc140a062531af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.20

Release files / extism-1.1.1-py3-none-any.whl

Download URL extism-1.1.1-py3-none-any.whl
Size 11.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
157692d7dc79cde6b1c9759eaf765f04b34b28e1f3a4a84507294c06081c8e5b
BLAKE2b-256 checksum
How to use checksums
e3acf730be96df64fd3c85b0c24f16993181f72b72dfba3099ad86d49a55e7c0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.20
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page