fix: check if variable is valid before converting (#3514)
* feat: Add logging and session imports to endpoints.py Import logging and session modules for better error handling and database interaction in endpoints.py. * refactor: Improve custom component parameter handling in update endpoint * feat: Add parse_value function to parse values based on input type Add a new function `parse_value` to `utils.py` that parses values based on the input type provided. The function handles different input types such as 'IntInput' and 'FloatInput' to ensure proper parsing. * feat: Refactor custom_component_update() to use parse_value utility function Use parse_value utility function to handle different input types and empty values in custom_component_update() for better readability and maintainability.
This commit is contained in:
parent
9d5f97acf2
commit
4e15090927
2 changed files with 25 additions and 14 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
import uuid
|
import uuid
|
||||||
import warnings
|
import warnings
|
||||||
from typing import TYPE_CHECKING, Optional, Dict
|
from typing import TYPE_CHECKING, Any, Optional, Dict
|
||||||
|
|
||||||
from fastapi import HTTPException
|
from fastapi import HTTPException
|
||||||
from sqlmodel import Session
|
from sqlmodel import Session
|
||||||
|
|
@ -227,3 +227,15 @@ def get_suggestion_message(outdated_components: list[str]) -> str:
|
||||||
else:
|
else:
|
||||||
components = ", ".join(outdated_components)
|
components = ", ".join(outdated_components)
|
||||||
return f"The flow contains {count} outdated components. We recommend updating the following components: {components}."
|
return f"The flow contains {count} outdated components. We recommend updating the following components: {components}."
|
||||||
|
|
||||||
|
|
||||||
|
def parse_value(value: Any, input_type: str) -> Any:
|
||||||
|
"""Helper function to parse the value based on input type."""
|
||||||
|
if value == "":
|
||||||
|
return value
|
||||||
|
elif input_type == "IntInput":
|
||||||
|
return int(value) if value is not None else None
|
||||||
|
elif input_type == "FloatInput":
|
||||||
|
return float(value) if value is not None else None
|
||||||
|
else:
|
||||||
|
return value
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,10 @@ from uuid import UUID
|
||||||
|
|
||||||
import sqlalchemy as sa
|
import sqlalchemy as sa
|
||||||
from fastapi import APIRouter, BackgroundTasks, Body, Depends, HTTPException, Request, UploadFile, status
|
from fastapi import APIRouter, BackgroundTasks, Body, Depends, HTTPException, Request, UploadFile, status
|
||||||
|
from loguru import logger
|
||||||
|
from sqlmodel import Session, select
|
||||||
|
|
||||||
|
from langflow.api.utils import parse_value
|
||||||
from langflow.api.v1.schemas import (
|
from langflow.api.v1.schemas import (
|
||||||
ConfigResponse,
|
ConfigResponse,
|
||||||
CustomComponentRequest,
|
CustomComponentRequest,
|
||||||
|
|
@ -45,8 +49,6 @@ from langflow.services.task.service import TaskService
|
||||||
from langflow.services.telemetry.schema import RunPayload
|
from langflow.services.telemetry.schema import RunPayload
|
||||||
from langflow.services.telemetry.service import TelemetryService
|
from langflow.services.telemetry.service import TelemetryService
|
||||||
from langflow.utils.version import get_version_info
|
from langflow.utils.version import get_version_info
|
||||||
from loguru import logger
|
|
||||||
from sqlmodel import Session, select
|
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from langflow.services.cache.base import CacheService
|
from langflow.services.cache.base import CacheService
|
||||||
|
|
@ -590,17 +592,14 @@ async def custom_component_update(
|
||||||
)
|
)
|
||||||
if hasattr(cc_instance, "set_attributes"):
|
if hasattr(cc_instance, "set_attributes"):
|
||||||
template = code_request.get_template()
|
template = code_request.get_template()
|
||||||
params = {
|
params = {}
|
||||||
key: value_dict.get("value")
|
|
||||||
if value_dict.get("_input_type") != "IntInput"
|
for key, value_dict in template.items():
|
||||||
else (
|
if isinstance(value_dict, dict):
|
||||||
int(value_dict.get("value")) # type: ignore
|
value = value_dict.get("value")
|
||||||
if value_dict.get("_input_type") != "FloatInput"
|
input_type = str(value_dict.get("_input_type"))
|
||||||
else float(value_dict.get("value")) # type: ignore
|
params[key] = parse_value(value, input_type)
|
||||||
)
|
|
||||||
for key, value_dict in template.items()
|
|
||||||
if isinstance(value_dict, dict)
|
|
||||||
}
|
|
||||||
load_from_db_fields = [
|
load_from_db_fields = [
|
||||||
field_name
|
field_name
|
||||||
for field_name, field_dict in template.items()
|
for field_name, field_dict in template.items()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue