diff options
| -rw-r--r-- | src/infini/injector.py | 5 | ||||
| -rw-r--r-- | tests/test_injector.py | 13 |
2 files changed, 13 insertions, 5 deletions
diff --git a/src/infini/injector.py b/src/infini/injector.py index be1a86de..462664a8 100644 --- a/src/infini/injector.py +++ b/src/infini/injector.py @@ -1,4 +1,5 @@ from infini.typing import Callable, T, Optional, Dict, Any +from typing import get_origin import inspect @@ -18,7 +19,9 @@ class Injector: for param_name, param in signature.parameters.items(): default = None if param.default == inspect._empty else param.default if param_name in parameters: - if not isinstance(parameters[param_name], param.annotation): + if type(parameters[param_name]) != ( + get_origin(param.annotation) or param.annotation + ): raise ValueError( f"Parameter with name '{param_name}' has a mismatch type, " f"expected '{param.annotation!r}' but got '{type(parameters[param_name])!r}'." diff --git a/tests/test_injector.py b/tests/test_injector.py index ccd040ba..c41dd732 100644 --- a/tests/test_injector.py +++ b/tests/test_injector.py @@ -22,25 +22,30 @@ def test_injector(): def test_handler_injector(): input = Input("test_message") - def absolute(input: Input, plain_text: str) -> Output: + def absolute(input: Input[str], plain_text: str) -> Output: return input.output( "text", - plain_text, - status=0, + "absolute", block=False, + variables={ + "text": plain_text, + }, ) handler = Handler() handler.handlers = [ { "priority": 2, - "router": Startswith(".add"), + "router": Startswith(""), "handler": absolute, }, ] core = Loader().into_core() core.handler = handler + core.generator.events = { + "absolute": "{{ text }}", + } for output in core.input(input): assert output == "test_message" |
