Merge branch 'dev' into float_range
This commit is contained in:
commit
00f5772d17
7 changed files with 65 additions and 5 deletions
|
|
@ -1,3 +1,5 @@
|
|||
from langflow.template.field.base import TemplateField
|
||||
|
||||
from .constants import (
|
||||
AgentExecutor,
|
||||
BaseChatMemory,
|
||||
|
|
@ -48,4 +50,5 @@ __all__ = [
|
|||
"ChatPromptTemplate",
|
||||
"Prompt",
|
||||
"RangeSpec",
|
||||
"TemplateField",
|
||||
]
|
||||
|
|
|
|||
|
|
@ -129,7 +129,7 @@ def add_new_custom_field(
|
|||
advanced=field_advanced,
|
||||
placeholder=placeholder,
|
||||
display_name=display_name,
|
||||
**field_config,
|
||||
**sanitize_field_config(field_config),
|
||||
)
|
||||
template.get("template")[field_name] = new_field.model_dump(by_alias=True, exclude_none=True)
|
||||
template.get("custom_fields")[field_name] = None
|
||||
|
|
@ -137,6 +137,13 @@ def add_new_custom_field(
|
|||
return template
|
||||
|
||||
|
||||
def sanitize_field_config(field_config: Dict):
|
||||
# If any of the already existing keys are in field_config, remove them
|
||||
for key in ["name", "field_type", "value", "required", "placeholder", "display_name", "advanced", "show"]:
|
||||
field_config.pop(key, None)
|
||||
return field_config
|
||||
|
||||
|
||||
# TODO: Move to correct place
|
||||
def add_code_field(template, raw_code, field_config):
|
||||
# Field with the Python code to allow update
|
||||
|
|
@ -224,7 +231,10 @@ def build_field_config(
|
|||
try:
|
||||
build_config: Dict = custom_class(user_id=user_id).build_config()
|
||||
|
||||
for field_name, field_dict in build_config.items():
|
||||
for field_name, field in build_config.items():
|
||||
# Allow user to build TemplateField as well
|
||||
# as a dict with the same keys as TemplateField
|
||||
field_dict = get_field_dict(field)
|
||||
if update_field is not None and field_name != update_field:
|
||||
continue
|
||||
try:
|
||||
|
|
@ -246,6 +256,13 @@ def build_field_config(
|
|||
) from exc
|
||||
|
||||
|
||||
def get_field_dict(field):
|
||||
"""Get the field dictionary from a TemplateField or a dict"""
|
||||
if isinstance(field, TemplateField):
|
||||
return field.model_dump(by_alias=True, exclude_none=True)
|
||||
return field
|
||||
|
||||
|
||||
def update_field_dict(field_dict):
|
||||
"""Update the field dictionary by calling options() or value() if they are callable"""
|
||||
if "options" in field_dict and callable(field_dict["options"]):
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
from typing import Any, Optional
|
||||
from abc import ABC
|
||||
from typing import Any, Callable, Optional, Union
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, field_serializer
|
||||
|
||||
|
|
@ -37,7 +38,7 @@ class TemplateField(BaseModel):
|
|||
password: bool = False
|
||||
"""Specifies if the field is a password. Defaults to False."""
|
||||
|
||||
options: Optional[list[str]] = None
|
||||
options: Union[list[str], Callable] = []
|
||||
"""List of options for the field. Only used when is_list=True. Default is an empty list."""
|
||||
|
||||
name: str = ""
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue