feat(variables): Support to_object. (#6572)

This commit is contained in:
-LAN-
2024-07-23 16:22:06 +08:00
committed by GitHub
parent cfc408095c
commit f019bc4bd7
3 changed files with 56 additions and 9 deletions

View File

@@ -33,6 +33,15 @@ class Segment(BaseModel):
def markdown(self) -> str:
return str(self.value)
def to_object(self) -> Any:
if isinstance(self.value, Segment):
return self.value.to_object()
if isinstance(self.value, list):
return [v.to_object() for v in self.value]
if isinstance(self.value, dict):
return {k: v.to_object() for k, v in self.value.items()}
return self.value
class StringSegment(Segment):
value_type: SegmentType = SegmentType.STRING

View File

@@ -4,7 +4,7 @@ from typing import Any, Union
from typing_extensions import deprecated
from core.app.segments import ArrayVariable, ObjectVariable, Variable, factory
from core.app.segments import Variable, factory
from core.file.file_obj import FileVar
from core.workflow.entities.node_entities import SystemVariable
@@ -113,14 +113,7 @@ class VariablePool:
raise ValueError('Invalid selector')
hash_key = hash(tuple(selector[1:]))
value = self._variable_dictionary[selector[0]].get(hash_key)
if value is None:
return value
if isinstance(value, ArrayVariable):
return [element.value for element in value.value]
if isinstance(value, ObjectVariable):
return {k: v.value for k, v in value.value.items()}
return value.value if value else None
return value.to_object() if value else None
def remove(self, selector: Sequence[str], /):
"""