mirror of
https://github.com/langgenius/dify.git
synced 2026-11-13 14:51:39 +08:00
fix(builder): align backend contracts and fixtures with main CI
This commit is contained in:
167 files changed
+2836
-1975
No files matched your search
@@ -8,7 +8,6 @@ The caller supplies its existing placeholder grammar; no runtime lookup occurs.
|
||||
from collections import Counter
|
||||
from collections.abc import Mapping, Sequence
|
||||
from re import Pattern
|
||||
from typing import cast
|
||||
|
||||
from services.dify_builder.native_api_output_contract import is_native_api_tool
|
||||
|
||||
@@ -30,7 +29,7 @@ def normalize_native_api_string_bindings(
|
||||
Sources, declarations and original binding objects are never mutated.
|
||||
"""
|
||||
raw = tool_data.get("tool_parameters")
|
||||
bindings = dict(cast(Mapping[str, object], raw)) if isinstance(raw, Mapping) else {}
|
||||
bindings: dict[str, object] = dict(raw) if isinstance(raw, Mapping) else {}
|
||||
if not is_native_api_tool(tool_data):
|
||||
return bindings
|
||||
|
||||
@@ -40,9 +39,10 @@ def normalize_native_api_string_bindings(
|
||||
node_id, data = node.get("id"), node.get("data")
|
||||
if not isinstance(node_id, str) or node_counts[node_id] != 1 or not isinstance(data, Mapping):
|
||||
continue
|
||||
if data.get("type") != "start" or not isinstance(data.get("variables"), list):
|
||||
raw_variables = data.get("variables")
|
||||
if data.get("type") != "start" or not isinstance(raw_variables, list):
|
||||
continue
|
||||
variables = [item for item in cast(list[object], data["variables"]) if isinstance(item, Mapping)]
|
||||
variables = [item for item in raw_variables if isinstance(item, Mapping)]
|
||||
counts = Counter(item.get("variable") for item in variables if isinstance(item.get("variable"), str))
|
||||
for variable in variables:
|
||||
name = variable.get("variable")
|
||||
@@ -66,7 +66,9 @@ def normalize_native_api_string_bindings(
|
||||
selector = binding.get("value")
|
||||
if not isinstance(selector, list) or len(selector) != 2 or not all(isinstance(part, str) for part in selector):
|
||||
continue
|
||||
source_id, field = cast(list[str], selector)
|
||||
source_id, field = selector
|
||||
assert isinstance(source_id, str)
|
||||
assert isinstance(field, str)
|
||||
# A dot inside the direct field would become a different nested selector
|
||||
# when the native template resolver splits its placeholder on dots.
|
||||
if "." in field or (source_id, field) not in string_selectors:
|
||||
|
||||
Reference in new issue
Block a user