From 7efa68d01414027120f630c6373465ee9942ddc0 Mon Sep 17 00:00:00 2001 From: BigOrangeQWQ <2284086963@qq.com> Date: Sun, 8 Sep 2024 23:43:44 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E5=AD=97=E6=AE=B5=E7=9A=84=E5=BA=8F=E5=88=97?= =?UTF-8?q?=E5=8C=96=E4=B8=8E=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/plugins/publish/templates/render_error.md.jinja | 2 +- src/utils/validation/models.py | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/plugins/publish/templates/render_error.md.jinja b/src/plugins/publish/templates/render_error.md.jinja index 581572d4..0c4f6433 100644 --- a/src/plugins/publish/templates/render_error.md.jinja +++ b/src/plugins/publish/templates/render_error.md.jinja @@ -40,7 +40,7 @@ {{ error.msg }}
请确保没有重复发布。
{% elif type == "plugin.test" %} 插件加载测试未通过。{{ detail_message("测试输出", ctx.output) }} -{% elif type == "metadata" %} +{% elif type == "plugin.metadata" %} 无法获取到插件元数据。
{{ "请填写插件元数据" if ctx.plugin_test_result else "请确保插件正常加载" }}。
{% elif type == "plugin.type" %} 插件类型 {{ input }} 不符合规范。
请确保插件类型正确,当前仅支持 application 与 library。
diff --git a/src/utils/validation/models.py b/src/utils/validation/models.py index 3d10f142..ff745db1 100644 --- a/src/utils/validation/models.py +++ b/src/utils/validation/models.py @@ -133,6 +133,8 @@ def collect_valid_values( raise PydanticCustomError("validation_context", "未获取到验证上下文") result = handler(v) + if isinstance(result, BaseModel): + result = result.model_dump() context["valid_data"][info.field_name] = result return result @@ -168,7 +170,7 @@ class PluginPublishInfo(PublishInfo, PyPIMixin): """插件支持的适配器""" load: bool """"插件测试结果""" - metadata: Metadata | None + metadata: Metadata """插件测试元数据""" @field_validator("type", mode="before") @@ -236,15 +238,13 @@ def plugin_test_load_validator(cls, v: bool, info: ValidationInfo) -> bool: @field_validator("metadata", mode="before") @classmethod def plugin_test_metadata_validator( - cls, v: Metadata | None, info: ValidationInfo - ) -> Metadata | None: + cls, v: Metadata, info: ValidationInfo + ) -> Metadata: context = info.context if context is None: raise PydanticCustomError("validation_context", "未获取到验证上下文") if v is None: raise PydanticCustomError("plugin.metadata", "插件缺少元数据") - if context.get("skip_plugin_test"): - return None return v