aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--pdm.lock23
-rw-r--r--pyproject.toml4
-rw-r--r--src/infini/generator.py2
-rw-r--r--src/infini/injector.py10
-rw-r--r--tests/test_generator.py20
-rw-r--r--tests/test_injector.py5
6 files changed, 42 insertions, 22 deletions
diff --git a/pdm.lock b/pdm.lock
index 30fc2b9c..a3b76616 100644
--- a/pdm.lock
+++ b/pdm.lock
@@ -5,7 +5,7 @@
groups = ["default", "dev"]
strategy = ["cross_platform"]
lock_version = "4.4.1"
-content_hash = "sha256:13b75979f385877e16356a4d92efc4f73c2a3c7b28d8d45e22d287439613ffea"
+content_hash = "sha256:7e6e33bd0b22b96f1e3955794a0d1d6f9a67ee102c40212a0425973339d1557c"
[[package]]
name = "certifi"
@@ -127,8 +127,8 @@ files = [
[[package]]
name = "ipdm"
-version = "0.1.3"
-requires_python = ">=3.10"
+version = "0.1.4"
+requires_python = ">=3.8"
summary = "Infini 包管理器"
dependencies = [
"requests>=2.31.0",
@@ -137,8 +137,8 @@ dependencies = [
"typer>=0.9.0",
]
files = [
- {file = "ipdm-0.1.3-py3-none-any.whl", hash = "sha256:5fee9d2c5b52d45c69ddbc38d5bb9a08c595c90eb130aa747892c0b0fb149203"},
- {file = "ipdm-0.1.3.tar.gz", hash = "sha256:fb62a02a17a068d82598283a12f985f6927445fffed2067066a6589d74a1be13"},
+ {file = "ipdm-0.1.4-py3-none-any.whl", hash = "sha256:69fcb1a936ba64f551669f9a86890f4d620a9cd25f66456ca18712d6849146f6"},
+ {file = "ipdm-0.1.4.tar.gz", hash = "sha256:fc87cb9c9357df4fe159b9797ac6c3022bc643ee3d64d957dfda6d898d4308e7"},
]
[[package]]
@@ -248,7 +248,7 @@ files = [
[[package]]
name = "pytest"
-version = "8.0.1"
+version = "8.0.2"
requires_python = ">=3.8"
summary = "pytest: simple powerful testing with Python"
dependencies = [
@@ -260,8 +260,8 @@ dependencies = [
"tomli>=1.0.0; python_version < \"3.11\"",
]
files = [
- {file = "pytest-8.0.1-py3-none-any.whl", hash = "sha256:3e4f16fe1c0a9dc9d9389161c127c3edc5d810c38d6793042fb81d9f48a59fca"},
- {file = "pytest-8.0.1.tar.gz", hash = "sha256:267f6563751877d772019b13aacbe4e860d73fe8f651f28112e9ac37de7513ae"},
+ {file = "pytest-8.0.2-py3-none-any.whl", hash = "sha256:edfaaef32ce5172d5466b5127b42e0d6d35ebbe4453f0e3505d96afd93f6b096"},
+ {file = "pytest-8.0.2.tar.gz", hash = "sha256:d4051d623a2e0b7e51960ba963193b09ce6daeb9759a451844a21e4ddedfc1bd"},
]
[[package]]
@@ -282,16 +282,17 @@ files = [
[[package]]
name = "rich"
-version = "13.7.0"
+version = "13.7.1"
requires_python = ">=3.7.0"
summary = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal"
dependencies = [
"markdown-it-py>=2.2.0",
"pygments<3.0.0,>=2.13.0",
+ "typing-extensions<5.0,>=4.0.0; python_version < \"3.9\"",
]
files = [
- {file = "rich-13.7.0-py3-none-any.whl", hash = "sha256:6da14c108c4866ee9520bbffa71f6fe3962e193b7da68720583850cd4548e235"},
- {file = "rich-13.7.0.tar.gz", hash = "sha256:5cb5123b5cf9ee70584244246816e9114227e0b98ad9176eede6ad54bf5403fa"},
+ {file = "rich-13.7.1-py3-none-any.whl", hash = "sha256:4edbae314f59eb482f54e9e30bf00d33350aaa94f4bfcd4e9e3110e64d0d7222"},
+ {file = "rich-13.7.1.tar.gz", hash = "sha256:9be308cb1fe2f1f57d67ce99e95af38a1e2bc71ad9813b0e247cf7ffbcc3a432"},
]
[[package]]
diff --git a/pyproject.toml b/pyproject.toml
index bf2a879e..827fd279 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "infini"
-version = "2.0.6"
+version = "2.0.7"
description = "Infini 轻量输入输出流框架"
authors = [
{ name = "苏向夜", email = "fu050409@163.com" },
@@ -30,5 +30,5 @@ distribution = true
[tool.pdm.dev-dependencies]
dev = [
"pytest>=7.4.4",
- "ipdm>=0.1.2",
+ "ipdm>=0.1.4",
]
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)
diff --git a/tests/test_generator.py b/tests/test_generator.py
index e796efc7..5994e768 100644
--- a/tests/test_generator.py
+++ b/tests/test_generator.py
@@ -24,3 +24,23 @@ def test_generator_with_var():
)
== "Event1 文本: 变量测试"
)
+
+
+def test_generator_injector():
+ def name(nickname: str = "苏向夜"):
+ return nickname
+
+ injector = Injector()
+ injector.parameters = {"a": 12, "b": 20, "c": 0}
+
+ generator = TextGenerator()
+ generator.events = {
+ "test.event1": "[{{ card_name }}]Event1 文本: {{ var }}",
+ }
+ generator.global_variables = {"card_name": name}
+ assert (
+ generator.output(
+ Output("text", "test.event1", variables={"var": "变量测试"}), injector
+ )
+ == "[苏向夜]Event1 文本: 变量测试"
+ )
diff --git a/tests/test_injector.py b/tests/test_injector.py
index 0d320a2c..426e5684 100644
--- a/tests/test_injector.py
+++ b/tests/test_injector.py
@@ -2,10 +2,13 @@ from infini.injector import Injector
def test_injector():
+ def name(name: str):
+ return name
+
def add(a: int, b: int = 0):
return a + b
injector = Injector()
- injector.parameters = {"a": 12, "b": 20, "c": 0}
+ injector.parameters = {"a": 12, "b": 20, "c": 0, "card_name": name}
assert injector.inject(add)() == 32
assert injector.output(add) == 32