mirror of https://github.com/langgenius/dify.git
Normalize null metadata handling in tool entities (#26890)
This commit is contained in:
parent
49df9ceaf3
commit
556b631c54
|
|
@ -189,6 +189,11 @@ class ToolInvokeMessage(BaseModel):
|
|||
data: Mapping[str, Any] = Field(..., description="Detailed log data")
|
||||
metadata: Mapping[str, Any] = Field(default_factory=dict, description="The metadata of the log")
|
||||
|
||||
@field_validator("metadata", mode="before")
|
||||
@classmethod
|
||||
def _normalize_metadata(cls, value: Mapping[str, Any] | None) -> Mapping[str, Any]:
|
||||
return value or {}
|
||||
|
||||
class RetrieverResourceMessage(BaseModel):
|
||||
retriever_resources: list[RetrievalSourceMetadata] = Field(..., description="retriever resources")
|
||||
context: str = Field(..., description="context")
|
||||
|
|
@ -376,6 +381,11 @@ class ToolEntity(BaseModel):
|
|||
def set_parameters(cls, v, validation_info: ValidationInfo) -> list[ToolParameter]:
|
||||
return v or []
|
||||
|
||||
@field_validator("output_schema", mode="before")
|
||||
@classmethod
|
||||
def _normalize_output_schema(cls, value: Mapping[str, object] | None) -> Mapping[str, object]:
|
||||
return value or {}
|
||||
|
||||
|
||||
class OAuthSchema(BaseModel):
|
||||
client_schema: list[ProviderConfig] = Field(
|
||||
|
|
|
|||
|
|
@ -0,0 +1,29 @@
|
|||
from core.tools.entities.common_entities import I18nObject
|
||||
from core.tools.entities.tool_entities import ToolEntity, ToolIdentity, ToolInvokeMessage
|
||||
|
||||
|
||||
def _make_identity() -> ToolIdentity:
|
||||
return ToolIdentity(
|
||||
author="author",
|
||||
name="tool",
|
||||
label=I18nObject(en_US="Label"),
|
||||
provider="builtin",
|
||||
)
|
||||
|
||||
|
||||
def test_log_message_metadata_none_defaults_to_empty_dict():
|
||||
log_message = ToolInvokeMessage.LogMessage(
|
||||
id="log-1",
|
||||
label="Log entry",
|
||||
status=ToolInvokeMessage.LogMessage.LogStatus.START,
|
||||
data={},
|
||||
metadata=None,
|
||||
)
|
||||
|
||||
assert log_message.metadata == {}
|
||||
|
||||
|
||||
def test_tool_entity_output_schema_none_defaults_to_empty_dict():
|
||||
entity = ToolEntity(identity=_make_identity(), output_schema=None)
|
||||
|
||||
assert entity.output_schema == {}
|
||||
Loading…
Reference in New Issue