From 7767fe86db9c370118ceb7b8803836678bff6470 Mon Sep 17 00:00:00 2001 From: Niraj Kamdar Date: Tue, 25 Oct 2022 14:31:01 +0530 Subject: [PATCH] feat: add support for env --- .../polywrap-client/polywrap_client/client.py | 3 ++ .../tests/cases/simple-env/wrap.info | Bin 0 -> 629 bytes .../tests/cases/simple-env/wrap.wasm | Bin 0 -> 41433 bytes packages/polywrap-client/tests/test_client.py | 29 ++++++++++++++++-- .../polywrap-wasm/polywrap_wasm/imports.py | 8 +++++ 5 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 packages/polywrap-client/tests/cases/simple-env/wrap.info create mode 100644 packages/polywrap-client/tests/cases/simple-env/wrap.wasm diff --git a/packages/polywrap-client/polywrap_client/client.py b/packages/polywrap-client/polywrap_client/client.py index b34cdaa7..52875d29 100644 --- a/packages/polywrap-client/polywrap_client/client.py +++ b/packages/polywrap-client/polywrap_client/client.py @@ -123,6 +123,9 @@ async def invoke(self, options: InvokerOptions) -> InvokeResult: ) ).unwrap() + env = self.get_env_by_uri(options.uri) + options.env = options.env or (env.env if env else None) + result = await wrapper.invoke(options, invoker=self) if options.encode_result and not result.encoded: encoded = msgpack_encode(result.result) diff --git a/packages/polywrap-client/tests/cases/simple-env/wrap.info b/packages/polywrap-client/tests/cases/simple-env/wrap.info new file mode 100644 index 0000000000000000000000000000000000000000..9789e69cece2864b0ef0ddd2200f54c4be72131c GIT binary patch literal 629 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 WDZNdiHONJi@Xa)|Jjm&S{{H|0sUS4~ literal 0 HcmV?d00001 diff --git a/packages/polywrap-client/tests/test_client.py b/packages/polywrap-client/tests/test_client.py index a8157aa8..38e910d8 100644 --- a/packages/polywrap-client/tests/test_client.py +++ b/packages/polywrap-client/tests/test_client.py @@ -1,7 +1,7 @@ from pathlib import Path from polywrap_client import PolywrapClient -from polywrap_core import Uri, InvokerOptions, InterfaceImplementations +from polywrap_core import Uri, InvokerOptions, InterfaceImplementations, Env from polywrap_uri_resolvers import BaseUriResolver, SimpleFileReader from polywrap_client.client import PolywrapClientConfig @@ -67,7 +67,32 @@ async def test_interface_implementation(): f'fs/{Path(__file__).parent.joinpath("cases", "simple-interface", "wrapper").absolute()}' ) args = {"arg": {"str": "hello", "uint8": 2}} - options = InvokerOptions(uri=uri, method="moduleMethod", args=args, encode_result=False) + options = InvokerOptions( + uri=uri, method="moduleMethod", args=args, encode_result=False + ) result = await client.invoke(options) assert result.result == {"str": "hello", "uint8": 2} + + +async def test_env(): + uri_resolver = BaseUriResolver( + file_reader=SimpleFileReader(), + redirects={}, + ) + + uri = Uri(f'fs/{Path(__file__).parent.joinpath("cases", "simple-env").absolute()}') + env = {"externalArray": [1, 2, 3], "externalString": "hello"} + + client = PolywrapClient( + config=PolywrapClientConfig( + envs=[Env(uri=uri, env=env)], + resolver=uri_resolver, + ) + ) + options = InvokerOptions( + uri=uri, method="externalEnvMethod", args={}, encode_result=False + ) + result = await client.invoke(options) + + assert result.result == env diff --git a/packages/polywrap-wasm/polywrap_wasm/imports.py b/packages/polywrap-wasm/polywrap_wasm/imports.py index b45dcc58..c140fa3f 100644 --- a/packages/polywrap-wasm/polywrap_wasm/imports.py +++ b/packages/polywrap-wasm/polywrap_wasm/imports.py @@ -79,6 +79,13 @@ def wrap_abort( f"__wrap_abort: {msg}\nFile: {file}\nLocation: [{line},{column}]" ) + wrap_load_env_type = FuncType([ValType.i32()], []) + + def wrap_load_env(ptr: int) -> None: + if not state.env: + raise WasmAbortError("env: is not set") + write_bytes(mem.data_ptr(store), mem.data_len(store), state.env, ptr) + wrap_invoke_args_type = FuncType([ValType.i32(), ValType.i32()], []) def wrap_invoke_args(method_ptr: int, args_ptr: int) -> None: @@ -309,6 +316,7 @@ def wrap_get_implementations_result(ptr: int) -> None: # TODO: use generics or any on wasmtime codebase to fix typings linker.define_func("wrap", "__wrap_debug_log", wrap_debug_log_type, wrap_debug_log) # type: ignore partially unknown linker.define_func("wrap", "__wrap_abort", wrap_abort_type, wrap_abort) # type: ignore partially unknown + linker.define_func("wrap", "__wrap_load_env", wrap_load_env_type, wrap_load_env) # type: ignore partially unknown # invoke linker.define_func("wrap", "__wrap_invoke_args", wrap_invoke_args_type, wrap_invoke_args) # type: ignore partially unknown