aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author苏向夜 <fu050409@163.com>2024-03-31 22:08:49 +0800
committer苏向夜 <fu050409@163.com>2024-03-31 22:08:49 +0800
commit50bbfe4ce91117ee88d6020fe194e7cd14d41f4e (patch)
treef5c57920773f92e27c4a1669ee755bc2edbacdcb
parentb5c4f42b676cc4077354d06bdf325f276d256667 (diff)
downloadinfini-50bbfe4ce91117ee88d6020fe194e7cd14d41f4e.tar.gz
infini-50bbfe4ce91117ee88d6020fe194e7cd14d41f4e.zip
fix(injector): fix injector error when subscrib annocation found
-rw-r--r--src/infini/injector.py5
-rw-r--r--tests/test_injector.py13
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"