From 4345293a0a1853b85f17c8e5d31573b59582fe0e Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Sun, 20 Aug 2023 15:06:26 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix(endpoints.py):=20skip=20proc?= =?UTF-8?q?essing=20empty=20custom=5Fcomponent=5Fdict=20to=20prevent=20err?= =?UTF-8?q?ors=20=F0=9F=90=9B=20fix(schemas.py):=20import=20field=5Fvalida?= =?UTF-8?q?tor=20from=20pydantic=20instead=20of=20Field=20=F0=9F=90=9B=20f?= =?UTF-8?q?ix(base.py):=20return=20None=20if=20fields=20only=20contain=20?= =?UTF-8?q?=5Ftype=20key=20=F0=9F=90=9B=20fix(flow.py):=20set=20default=20?= =?UTF-8?q?value=20of=20description=20field=20to=20an=20empty=20string=20?= =?UTF-8?q?=F0=9F=90=9B=20fix(base.py):=20import=20validator=20from=20pyda?= =?UTF-8?q?ntic=20instead=20of=20field=5Fvalidator=20=F0=9F=90=9B=20fix(co?= =?UTF-8?q?nftest.py):=20change=20scope=20of=20client=20fixture=20to=20fun?= =?UTF-8?q?ction=20and=20add=20autouse=3DTrue=20to=20ensure=20it=20runs=20?= =?UTF-8?q?for=20every=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/langflow/api/v1/endpoints.py | 2 ++ src/backend/langflow/api/v1/schemas.py | 2 +- src/backend/langflow/interface/tools/base.py | 9 +++++++-- src/backend/langflow/services/database/models/flow.py | 3 ++- src/backend/langflow/services/settings/base.py | 2 +- tests/conftest.py | 2 +- 6 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/backend/langflow/api/v1/endpoints.py b/src/backend/langflow/api/v1/endpoints.py index 928d6609c..221091b7f 100644 --- a/src/backend/langflow/api/v1/endpoints.py +++ b/src/backend/langflow/api/v1/endpoints.py @@ -59,6 +59,8 @@ def get_all(): logger.info(f"Loading {len(custom_component_dicts)} category(ies)") for custom_component_dict in custom_component_dicts: # custom_component_dict is a dict of dicts + if not custom_component_dict: + continue category = list(custom_component_dict.keys())[0] logger.info( f"Loading {len(custom_component_dict[category])} component(s) from category {category}" diff --git a/src/backend/langflow/api/v1/schemas.py b/src/backend/langflow/api/v1/schemas.py index 7df546684..d38c32d26 100644 --- a/src/backend/langflow/api/v1/schemas.py +++ b/src/backend/langflow/api/v1/schemas.py @@ -2,7 +2,7 @@ from enum import Enum from pathlib import Path from typing import Any, Dict, List, Optional, Union from langflow.services.database.models.flow import FlowCreate, FlowRead -from pydantic import BaseModel, Field +from pydantic import BaseModel, Field, field_validator import json diff --git a/src/backend/langflow/interface/tools/base.py b/src/backend/langflow/interface/tools/base.py index 449957bfa..82d334512 100644 --- a/src/backend/langflow/interface/tools/base.py +++ b/src/backend/langflow/interface/tools/base.py @@ -136,10 +136,15 @@ class ToolCreator(LangChainTypeCreator): tool_dict = build_template_from_class(tool_type, OTHER_TOOLS) fields = tool_dict["template"] + # _type is the only key in fields + # return None + if len(fields) == 1 and "_type" in fields: + return None + # Pop unnecessary fields and add name fields.pop("_type") # type: ignore - fields.pop("return_direct") # type: ignore - fields.pop("verbose") # type: ignore + fields.pop("return_direct", None) # type: ignore + fields.pop("verbose", None) # type: ignore tool_params = { "name": fields.pop("name")["value"], # type: ignore diff --git a/src/backend/langflow/services/database/models/flow.py b/src/backend/langflow/services/database/models/flow.py index 952d47bc2..bf263993e 100644 --- a/src/backend/langflow/services/database/models/flow.py +++ b/src/backend/langflow/services/database/models/flow.py @@ -4,13 +4,14 @@ from langflow.services.database.models.base import SQLModelSerializable from sqlmodel import Field, JSON, Column from uuid import UUID, uuid4 from typing import Dict, Optional +from pydantic import field_validator # if TYPE_CHECKING: class FlowBase(SQLModelSerializable): name: str = Field(index=True) - description: Optional[str] = Field(index=True) + description: Optional[str] = Field(index=True, default="") data: Optional[Dict] = Field(default=None) @field_validator("data") diff --git a/src/backend/langflow/services/settings/base.py b/src/backend/langflow/services/settings/base.py index 750b2c02a..5545af45d 100644 --- a/src/backend/langflow/services/settings/base.py +++ b/src/backend/langflow/services/settings/base.py @@ -8,7 +8,7 @@ from pathlib import Path import yaml from pydantic_settings import SettingsConfigDict, BaseSettings -from pydantic import field_validator +from pydantic import field_validator, validator from langflow.utils.logger import logger # BASE_COMPONENTS_PATH = str(Path(__file__).parent / "components") diff --git a/tests/conftest.py b/tests/conftest.py index e90d03d0a..182e59e89 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -108,7 +108,7 @@ def session_fixture(): yield session -@pytest.fixture(name="client") +@pytest.fixture(name="client", scope="function", autouse=True) def client_fixture(session: Session): def get_session_override(): return session