aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--src/infini/generator.py2
-rw-r--r--src/infini/injector.py10
2 files changed, 4 insertions, 8 deletions
diff --git a/src/infini/generator.py b/src/infini/generator.py
index a8946949..5473dade 100644
--- a/src/infini/generator.py
+++ b/src/infini/generator.py
@@ -19,7 +19,7 @@ class TextGenerator: # TODO 兼容多类型事件
variables.update(output.variables)
for name, variable in variables.items():
if callable(variable):
- variables[name] = injector.output(variable, output.variables)
+ variables[name] = injector.output(variable, variables)
return self.match(output).render(variables)
def match(self, output: Output) -> Template:
diff --git a/src/infini/injector.py b/src/infini/injector.py
index b4c2bea4..be1a86de 100644
--- a/src/infini/injector.py
+++ b/src/infini/injector.py
@@ -20,16 +20,12 @@ class Injector:
if param_name in parameters:
if not isinstance(parameters[param_name], param.annotation):
raise ValueError(
- f"Parameter with name '{param_name}' has a mismatch type."
+ f"Parameter with name '{param_name}' has a mismatch type, "
+ f"expected '{param.annotation!r}' but got '{type(parameters[param_name])!r}'."
)
inject_params[param_name] = parameters[param_name]
else:
- for parameter in parameters:
- if isinstance(parameter, param.annotation):
- inject_params[param_name] = parameter
- break
- else:
- inject_params[param_name] = default
+ inject_params[param_name] = default
bound_args = signature.bind(**inject_params)
bound_args.apply_defaults()
return lambda: func(*bound_args.args, **bound_args.kwargs)