diff options
| -rw-r--r-- | src/infini/generator.py | 2 | ||||
| -rw-r--r-- | src/infini/injector.py | 10 |
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) |
