diff --git a/resonate/resonate.py b/resonate/resonate.py index 0c3cf210..181bff50 100644 --- a/resonate/resonate.py +++ b/resonate/resonate.py @@ -205,6 +205,9 @@ def get(self, id: str) -> Handle[Any]: fp.result() return Handle(fv) + def set_dependency(self, name: str, obj: Any) -> None: + self._dependencies.add(name, obj) + # Context class Context: @@ -220,10 +223,6 @@ def __init__(self, id: str, info: Info, opts: Options, registry: Registry, depen def id(self) -> str: return self._id - @property - def deps(self) -> Dependencies: - return self._dependencies - @property def info(self) -> Info: return self._info @@ -289,6 +288,9 @@ def sleep(self, secs: int) -> RFC: self._counter += 1 return RFC(f"{self.id}.{self._counter}", Sleep(secs)) + def get_dependency(self, name: str) -> Any: + return self._dependencies.get(name) + def _lfi_func(self, f: str | Callable) -> tuple[Callable, int, dict[int, Callable] | None]: match f: case str(): diff --git a/tests/test_bridge.py b/tests/test_bridge.py index f614e0d0..61cb1952 100644 --- a/tests/test_bridge.py +++ b/tests/test_bridge.py @@ -104,6 +104,10 @@ def add_one(ctx: Context, n: int) -> int: return n + 1 +def get_dependency(ctx: Context) -> int: + return ctx.get_dependency("foo") + 1 + + def rfi_add_one_by_name(ctx: Context, n: int) -> Generator[Any, Any, int]: v = yield ctx.rfc("add_one", n) return v @@ -137,11 +141,19 @@ def resonate_instance(request: pytest.FixtureRequest) -> Generator[Resonate, Non resonate.register(sleep) resonate.register(add_one) resonate.register(rfi_add_one_by_name) + resonate.register(get_dependency) resonate.start() yield resonate resonate.stop() +def test_get_dependency(resonate_instance: Resonate) -> None: + timestamp = int(time.time()) + resonate_instance.set_dependency("foo", 1) + handle = resonate_instance.run(f"get-dependency-{timestamp}", get_dependency) + assert handle.result() == 2 + + def test_basic_lfi(resonate_instance: Resonate) -> None: timestamp = int(time.time()) handle = resonate_instance.run(f"foo-lfi-{timestamp}", foo_lfi)