🐛 fix(base.py): refactor handle_dict_type method to improve readability and semantics
✨ feat(base.py): add support for 'dict' type fields to be handled as 'dict' instead of 'code' or 'file' 🐛 fix(documentloaders.py): change field_type of metadata field to 'dict' instead of 'code' 🐛 fix(embeddings.py): change field_type of model_kwargs field to 'dict' instead of 'code' 🐛 fix(field_formatters.py): refactor DictCodeFileFormatter to handle 'dict' type fields as 'dict' instead of 'code' or 'file' 🐛 fix(prompts.py): call parent format_field method in PromptFrontendNode to ensure proper formatting 🐛 fix(vectorstores.py): change field_type of search_kwargs field to 'NestedDict' instead of 'code' 🐛 fix(util.py): remove unused replace_dict_type_with_code function
This commit is contained in:
parent
738bfa4812
commit
01104e666c
7 changed files with 24 additions and 39 deletions
|
|
@ -140,13 +140,16 @@ class FrontendNode(BaseModel):
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def handle_dict_type(field: TemplateField, _type: str) -> str:
|
def handle_dict_type(field: TemplateField, _type: str) -> str:
|
||||||
"""Handles 'dict' type by replacing it with 'code' or 'file' based on the field name."""
|
"""Handles 'dict' type by replacing it with 'code' or 'file' based on the field name."""
|
||||||
if "dict" in _type.lower():
|
if "dict" in _type.lower() and key == "dict_":
|
||||||
if field.name == "dict_":
|
field.field_type = "file"
|
||||||
field.field_type = "file"
|
field.suffixes = [".json", ".yaml", ".yml"]
|
||||||
field.suffixes = [".json", ".yaml", ".yml"]
|
field.file_types = ["json", "yaml", "yml"]
|
||||||
field.file_types = ["json", "yaml", "yml"]
|
elif (
|
||||||
else:
|
_type.startswith("Dict")
|
||||||
field.field_type = "code"
|
or _type.startswith("Mapping")
|
||||||
|
or _type.startswith("dict")
|
||||||
|
):
|
||||||
|
field.field_type = "dict"
|
||||||
return _type
|
return _type
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
|
@ -240,20 +243,6 @@ class FrontendNode(BaseModel):
|
||||||
"description",
|
"description",
|
||||||
}
|
}
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def replace_dict_with_code_or_file(
|
|
||||||
field: TemplateField, _type: str, key: str
|
|
||||||
) -> str:
|
|
||||||
"""Replaces 'dict' type with 'code' or 'file'."""
|
|
||||||
if "dict" in _type.lower():
|
|
||||||
if key == "dict_":
|
|
||||||
field.field_type = "file"
|
|
||||||
field.suffixes = [".json", ".yaml", ".yml"]
|
|
||||||
field.file_types = ["json", "yaml", "yml"]
|
|
||||||
else:
|
|
||||||
field.field_type = "code"
|
|
||||||
return field.field_type
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def set_field_default_value(field: TemplateField, value: dict, key: str) -> None:
|
def set_field_default_value(field: TemplateField, value: dict, key: str) -> None:
|
||||||
"""Sets the field value with the default value if present."""
|
"""Sets the field value with the default value if present."""
|
||||||
|
|
|
||||||
|
|
@ -170,7 +170,7 @@ class DocumentLoaderFrontNode(FrontendNode):
|
||||||
# add a metadata field of type dict
|
# add a metadata field of type dict
|
||||||
self.template.add_field(
|
self.template.add_field(
|
||||||
TemplateField(
|
TemplateField(
|
||||||
field_type="code",
|
field_type="dict",
|
||||||
required=True,
|
required=True,
|
||||||
show=True,
|
show=True,
|
||||||
name="metadata",
|
name="metadata",
|
||||||
|
|
|
||||||
|
|
@ -89,7 +89,7 @@ class EmbeddingFrontendNode(FrontendNode):
|
||||||
if field.name == "headers":
|
if field.name == "headers":
|
||||||
field.show = False
|
field.show = False
|
||||||
if field.name == "model_kwargs":
|
if field.name == "model_kwargs":
|
||||||
field.field_type = "code"
|
field.field_type = "dict"
|
||||||
field.advanced = True
|
field.advanced = True
|
||||||
field.show = True
|
field.show = True
|
||||||
elif field.name in [
|
elif field.name in [
|
||||||
|
|
|
||||||
|
|
@ -153,10 +153,13 @@ class DictCodeFileFormatter(FieldFormatter):
|
||||||
key = field.name
|
key = field.name
|
||||||
value = field.to_dict()
|
value = field.to_dict()
|
||||||
_type = value["type"]
|
_type = value["type"]
|
||||||
if "dict" in _type.lower():
|
if "dict" in _type.lower() and key == "dict_":
|
||||||
if key == "dict_":
|
field.field_type = "file"
|
||||||
field.field_type = "file"
|
field.suffixes = [".json", ".yaml", ".yml"]
|
||||||
field.suffixes = [".json", ".yaml", ".yml"]
|
field.file_types = ["json", "yaml", "yml"]
|
||||||
field.file_types = ["json", "yaml", "yml"]
|
elif (
|
||||||
else:
|
_type.startswith("Dict")
|
||||||
field.field_type = "code"
|
or _type.startswith("Mapping")
|
||||||
|
or _type.startswith("dict")
|
||||||
|
):
|
||||||
|
field.field_type = "dict"
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ from langflow.template.template.base import Template
|
||||||
class PromptFrontendNode(FrontendNode):
|
class PromptFrontendNode(FrontendNode):
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def format_field(field: TemplateField, name: Optional[str] = None) -> None:
|
def format_field(field: TemplateField, name: Optional[str] = None) -> None:
|
||||||
|
FrontendNode.format_field(field, name)
|
||||||
# if field.field_type == "StringPromptTemplate"
|
# if field.field_type == "StringPromptTemplate"
|
||||||
# change it to str
|
# change it to str
|
||||||
PROMPT_FIELDS = [
|
PROMPT_FIELDS = [
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,7 @@ class VectorStoreFrontendNode(FrontendNode):
|
||||||
# Add search_kwargs field
|
# Add search_kwargs field
|
||||||
extra_field = TemplateField(
|
extra_field = TemplateField(
|
||||||
name="search_kwargs",
|
name="search_kwargs",
|
||||||
field_type="code",
|
field_type="NestedDict",
|
||||||
required=False,
|
required=False,
|
||||||
placeholder="",
|
placeholder="",
|
||||||
show=True,
|
show=True,
|
||||||
|
|
|
||||||
|
|
@ -405,14 +405,6 @@ def is_multiline_field(key: str) -> bool:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def replace_dict_type_with_code(value: Dict[str, Any]) -> None:
|
|
||||||
"""
|
|
||||||
Replaces the type value with 'code' if the type is a dict.
|
|
||||||
"""
|
|
||||||
if "dict" in value["type"].lower():
|
|
||||||
value["type"] = "code"
|
|
||||||
|
|
||||||
|
|
||||||
def set_dict_file_attributes(value: Dict[str, Any]) -> None:
|
def set_dict_file_attributes(value: Dict[str, Any]) -> None:
|
||||||
"""
|
"""
|
||||||
Sets the file attributes for the 'dict_' key.
|
Sets the file attributes for the 'dict_' key.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue