mirror of
https://github.com/extism/extism.git
synced 2026-01-12 23:38:04 -05:00
36 lines
915 B
Python
36 lines
915 B
Python
import sys
|
|
import json
|
|
import hashlib
|
|
|
|
sys.path.append(".")
|
|
from extism import Context
|
|
|
|
if len(sys.argv) > 1:
|
|
data = sys.argv[1].encode()
|
|
else:
|
|
data = b"some data from python!"
|
|
|
|
# a Context provides a scope for plugins to be managed within. creating multiple contexts
|
|
# is expected and groups plugins based on source/tenant/lifetime etc.
|
|
with Context() as context:
|
|
wasm = open("../wasm/code.wasm", "rb").read()
|
|
hash = hashlib.sha256(wasm).hexdigest()
|
|
config = {"wasm": [{"data": wasm, "hash": hash}], "memory": {"max": 5}}
|
|
|
|
plugin = context.plugin(config)
|
|
# Call `count_vowels`
|
|
j = json.loads(plugin.call("count_vowels", data))
|
|
print("Number of vowels:", j["count"])
|
|
|
|
|
|
# Compare against Python implementation
|
|
def count_vowels(data):
|
|
count = 0
|
|
for c in data:
|
|
if c in b"AaEeIiOoUu":
|
|
count += 1
|
|
return count
|
|
|
|
|
|
assert j["count"] == count_vowels(data)
|