diff --git a/langflow/schema/schema.py b/langflow/schema/schema.py new file mode 100644 index 000000000000..9b94165ad7ea --- /dev/null +++ b/langflow/schema/schema.py @@ -0,0 +1,119 @@ +from collections.abc import Generator +from enum import Enum +from typing import Literal + +from pandas import Series +from pydantic import BaseModel +from typing_extensions import TypedDict + +from langflow.schema.data import Data +from langflow.schema.dataframe import DataFrame +from langflow.schema.message import Message +from langflow.serialization.serialization import serialize + +INPUT_FIELD_NAME = "input_value" + +InputType = Literal["chat", "text", "any"] +OutputType = Literal["chat", "text", "any", "debug"] + + +class LogType(str, Enum): + MESSAGE = "message" + DATA = "data" + STREAM = "stream" + OBJECT = "object" + ARRAY = "array" + TEXT = "text" + UNKNOWN = "unknown" + + +class StreamURL(TypedDict): + location: str + + +class ErrorLog(TypedDict): + errorMessage: str + stackTrace: str + + +class OutputValue(BaseModel): + message: ErrorLog | StreamURL | dict | list | str + type: str + + +def get_type(payload): + result = LogType.UNKNOWN + match payload: + case Message(): + result = LogType.MESSAGE + + case Data(): + result = LogType.DATA + + case dict(): + result = LogType.OBJECT + + case list() | DataFrame(): + result = LogType.ARRAY + + case str(): + result = LogType.TEXT + + if result == LogType.UNKNOWN and ( + (payload and isinstance(payload, Generator)) + or (isinstance(payload, Message) and isinstance(payload.text, Generator)) + ): + result = LogType.STREAM + + return result + + +def get_message(payload): + message = getattr(payload, "data", None) + if message is None: + model_dump = getattr(payload, "model_dump", None) + if callable(model_dump): + message = model_dump() + elif isinstance(payload, (dict, str, Data)): + message = payload.data if isinstance(payload, Data) else payload + + if isinstance(message, Series): + return message if not message.empty else payload + + return message or payload + + +def build_output_logs(vertex, result) -> dict: + outputs: dict[str, OutputValue] = {} + component_instance = result[0] + for index, output in enumerate(vertex.outputs): + if component_instance.status is None: + payload = component_instance._results + output_result = payload.get(output["name"]) + else: + payload = component_instance._artifacts + output_result = payload.get(output["name"], {}).get("raw") + message = get_message(output_result) + type_ = get_type(output_result) + + match type_: + case LogType.STREAM if "stream_url" in message: + message = StreamURL(location=message["stream_url"]) + + case LogType.STREAM: + message = "" + + case LogType.MESSAGE if hasattr(message, "message"): + message = message.message + + case LogType.UNKNOWN: + message = "" + + case LogType.ARRAY: + if isinstance(message, DataFrame): + message = message.to_dict(orient="records") + message = [serialize(item) for item in message] + name = output.get("name", f"output_{index}") + outputs |= {name: OutputValue(message=message, type=type_).model_dump()} + + return outputs diff --git a/src/backend/tests/base.py b/src/backend/tests/base.py index f82ed1228fe8..e84b8f47ac65 100644 --- a/src/backend/tests/base.py +++ b/src/backend/tests/base.py @@ -5,11 +5,11 @@ from uuid import uuid4 import pytest +from typing_extensions import TypedDict + from langflow.custom.custom_component.component import Component from langflow.graph.graph.base import Graph from langflow.graph.vertex.base import Vertex -from typing_extensions import TypedDict - from tests.constants import SUPPORTED_VERSIONS from tests.integration.utils import build_component_instance_for_tests diff --git a/src/backend/tests/conftest.py b/src/backend/tests/conftest.py index 5f509195b384..abf7af99b9cf 100644 --- a/src/backend/tests/conftest.py +++ b/src/backend/tests/conftest.py @@ -17,6 +17,13 @@ from dotenv import load_dotenv from fastapi.testclient import TestClient from httpx import ASGITransport, AsyncClient +from sqlalchemy.ext.asyncio import create_async_engine +from sqlalchemy.orm import selectinload +from sqlmodel import Session, SQLModel, create_engine, select +from sqlmodel.ext.asyncio.session import AsyncSession +from sqlmodel.pool import StaticPool +from typer.testing import CliRunner + from langflow.components.input_output import ChatInput from langflow.graph import Graph from langflow.initial_setup.constants import STARTER_FOLDER_NAME @@ -31,13 +38,6 @@ from langflow.services.database.models.vertex_builds.crud import delete_vertex_builds_by_flow_id from langflow.services.database.utils import session_getter from langflow.services.deps import get_db_service, session_scope -from sqlalchemy.ext.asyncio import create_async_engine -from sqlalchemy.orm import selectinload -from sqlmodel import Session, SQLModel, create_engine, select -from sqlmodel.ext.asyncio.session import AsyncSession -from sqlmodel.pool import StaticPool -from typer.testing import CliRunner - from tests.api_keys import get_openai_api_key load_dotenv() diff --git a/src/backend/tests/integration/backward_compatibility/test_starter_projects.py b/src/backend/tests/integration/backward_compatibility/test_starter_projects.py index a7e7d9059c0e..30d305b867ac 100644 --- a/src/backend/tests/integration/backward_compatibility/test_starter_projects.py +++ b/src/backend/tests/integration/backward_compatibility/test_starter_projects.py @@ -1,6 +1,6 @@ import pytest -from langflow.schema.message import Message +from langflow.schema.message import Message from tests.api_keys import get_openai_api_key from tests.integration.utils import download_flow_from_github, run_json_flow diff --git a/src/backend/tests/integration/components/assistants/test_assistants_components.py b/src/backend/tests/integration/components/assistants/test_assistants_components.py index 59c0c968e35e..27c45a79aabe 100644 --- a/src/backend/tests/integration/components/assistants/test_assistants_components.py +++ b/src/backend/tests/integration/components/assistants/test_assistants_components.py @@ -1,4 +1,5 @@ import pytest + from langflow.components.datastax import ( AssistantsCreateAssistant, AssistantsCreateThread, @@ -6,7 +7,6 @@ AssistantsListAssistants, AssistantsRun, ) - from tests.integration.utils import run_single_component diff --git a/src/backend/tests/integration/components/astra/test_astra_component.py b/src/backend/tests/integration/components/astra/test_astra_component.py index 40535d8190df..c93fcec5b61f 100644 --- a/src/backend/tests/integration/components/astra/test_astra_component.py +++ b/src/backend/tests/integration/components/astra/test_astra_component.py @@ -4,10 +4,10 @@ from astrapy import DataAPIClient from langchain_astradb import AstraDBVectorStore, VectorServiceOptions from langchain_core.documents import Document + from langflow.components.datastax import AstraDBVectorStoreComponent from langflow.components.openai.openai import OpenAIEmbeddingsComponent from langflow.schema.data import Data - from tests.api_keys import get_astradb_api_endpoint, get_astradb_application_token, get_openai_api_key from tests.integration.components.mock_components import TextToData from tests.integration.utils import ComponentInputHandle, run_single_component diff --git a/src/backend/tests/integration/components/helpers/test_parse_json_data.py b/src/backend/tests/integration/components/helpers/test_parse_json_data.py index 2671c4a53eec..7d81dfdcd094 100644 --- a/src/backend/tests/integration/components/helpers/test_parse_json_data.py +++ b/src/backend/tests/integration/components/helpers/test_parse_json_data.py @@ -1,7 +1,6 @@ from langflow.components.input_output import ChatInput from langflow.components.processing.parse_json_data import ParseJSONDataComponent from langflow.schema import Data - from tests.integration.components.mock_components import TextToData from tests.integration.utils import ComponentInputHandle, pyleak_marker, run_single_component diff --git a/src/backend/tests/integration/components/inputs/test_chat_input.py b/src/backend/tests/integration/components/inputs/test_chat_input.py index 69fbaef8dcf1..27803ca96ff5 100644 --- a/src/backend/tests/integration/components/inputs/test_chat_input.py +++ b/src/backend/tests/integration/components/inputs/test_chat_input.py @@ -1,7 +1,6 @@ from langflow.components.input_output import ChatInput from langflow.memory import aget_messages from langflow.schema.message import Message - from tests.integration.utils import pyleak_marker, run_single_component pytestmark = pyleak_marker() diff --git a/src/backend/tests/integration/components/inputs/test_text_input.py b/src/backend/tests/integration/components/inputs/test_text_input.py index 362dab4ec4dc..5044d37e125f 100644 --- a/src/backend/tests/integration/components/inputs/test_text_input.py +++ b/src/backend/tests/integration/components/inputs/test_text_input.py @@ -1,6 +1,5 @@ from langflow.components.input_output import TextInputComponent from langflow.schema.message import Message - from tests.integration.utils import pyleak_marker, run_single_component pytestmark = pyleak_marker() diff --git a/src/backend/tests/integration/components/mcp/test_mcp_memory_leak.py b/src/backend/tests/integration/components/mcp/test_mcp_memory_leak.py index 5ed652f39c08..ca06df89e533 100644 --- a/src/backend/tests/integration/components/mcp/test_mcp_memory_leak.py +++ b/src/backend/tests/integration/components/mcp/test_mcp_memory_leak.py @@ -13,10 +13,11 @@ import psutil import pytest -from langflow.base.mcp.util import MCPSessionManager from loguru import logger from mcp import StdioServerParameters +from langflow.base.mcp.util import MCPSessionManager + pytestmark = [ pytest.mark.timeout(300, method="thread"), pytest.mark.skip(reason="Skipping all MCP memory leak integration tests for now."), diff --git a/src/backend/tests/integration/components/mcp/test_mcp_superuser_flow.py b/src/backend/tests/integration/components/mcp/test_mcp_superuser_flow.py index 06e28b89a854..54e1ea87c0b5 100644 --- a/src/backend/tests/integration/components/mcp/test_mcp_superuser_flow.py +++ b/src/backend/tests/integration/components/mcp/test_mcp_superuser_flow.py @@ -1,4 +1,5 @@ import pytest + from langflow.services.auth.utils import create_user_longterm_token from langflow.services.deps import get_db_service, get_settings_service from langflow.services.utils import initialize_services diff --git a/src/backend/tests/integration/components/output_parsers/test_output_parser.py b/src/backend/tests/integration/components/output_parsers/test_output_parser.py index e52bc374da5c..3c6699743439 100644 --- a/src/backend/tests/integration/components/output_parsers/test_output_parser.py +++ b/src/backend/tests/integration/components/output_parsers/test_output_parser.py @@ -1,10 +1,10 @@ import os import pytest + from langflow.components.helpers import OutputParserComponent from langflow.components.openai.openai_chat_model import OpenAIModelComponent from langflow.components.processing import PromptComponent - from tests.integration.utils import ComponentInputHandle, run_single_component diff --git a/src/backend/tests/integration/components/outputs/test_chat_output.py b/src/backend/tests/integration/components/outputs/test_chat_output.py index bfe9abd648df..ec620992fe1c 100644 --- a/src/backend/tests/integration/components/outputs/test_chat_output.py +++ b/src/backend/tests/integration/components/outputs/test_chat_output.py @@ -1,7 +1,6 @@ from langflow.components.input_output import ChatOutput from langflow.memory import aget_messages from langflow.schema.message import Message - from tests.integration.utils import run_single_component diff --git a/src/backend/tests/integration/components/outputs/test_text_output.py b/src/backend/tests/integration/components/outputs/test_text_output.py index 7303081b5d69..64a1a73b0d7f 100644 --- a/src/backend/tests/integration/components/outputs/test_text_output.py +++ b/src/backend/tests/integration/components/outputs/test_text_output.py @@ -1,6 +1,5 @@ from langflow.components.input_output import TextOutputComponent from langflow.schema.message import Message - from tests.integration.utils import run_single_component diff --git a/src/backend/tests/integration/components/prompts/test_prompt.py b/src/backend/tests/integration/components/prompts/test_prompt.py index eb58edf06d34..a50a91cea4e5 100644 --- a/src/backend/tests/integration/components/prompts/test_prompt.py +++ b/src/backend/tests/integration/components/prompts/test_prompt.py @@ -1,6 +1,5 @@ from langflow.components.processing import PromptComponent from langflow.schema.message import Message - from tests.integration.utils import pyleak_marker, run_single_component pytestmark = pyleak_marker() diff --git a/src/backend/tests/integration/flows/test_basic_prompting.py b/src/backend/tests/integration/flows/test_basic_prompting.py index cc225225c66c..04aa3522a20c 100644 --- a/src/backend/tests/integration/flows/test_basic_prompting.py +++ b/src/backend/tests/integration/flows/test_basic_prompting.py @@ -2,7 +2,6 @@ from langflow.components.processing import PromptComponent from langflow.graph import Graph from langflow.schema.message import Message - from tests.integration.utils import pyleak_marker, run_flow diff --git a/src/backend/tests/integration/test_dynamic_import_integration.py b/src/backend/tests/integration/test_dynamic_import_integration.py index 6d12353f0e00..02ca763fb0d2 100644 --- a/src/backend/tests/integration/test_dynamic_import_integration.py +++ b/src/backend/tests/integration/test_dynamic_import_integration.py @@ -8,6 +8,7 @@ import time import pytest + from langflow.components.agents import AgentComponent from langflow.components.data import APIRequestComponent from langflow.components.openai import OpenAIModelComponent diff --git a/src/backend/tests/integration/test_exception_telemetry.py b/src/backend/tests/integration/test_exception_telemetry.py index ed028564663a..8944e17e2e3a 100644 --- a/src/backend/tests/integration/test_exception_telemetry.py +++ b/src/backend/tests/integration/test_exception_telemetry.py @@ -4,6 +4,7 @@ from unittest.mock import AsyncMock, MagicMock import pytest + from langflow.services.telemetry.service import TelemetryService diff --git a/src/backend/tests/integration/test_misc.py b/src/backend/tests/integration/test_misc.py index cf0c10f9d47d..ab0c38257f1d 100644 --- a/src/backend/tests/integration/test_misc.py +++ b/src/backend/tests/integration/test_misc.py @@ -3,6 +3,7 @@ import pytest from fastapi import status from httpx import AsyncClient + from langflow.graph.schema import RunOutputs from langflow.initial_setup.setup import load_starter_projects from langflow.load.load import arun_flow_from_json diff --git a/src/backend/tests/integration/utils.py b/src/backend/tests/integration/utils.py index b23bc23dc194..bc141c2e3304 100644 --- a/src/backend/tests/integration/utils.py +++ b/src/backend/tests/integration/utils.py @@ -6,6 +6,7 @@ import pytest import requests from astrapy.admin import parse_api_endpoint + from langflow.api.v1.schemas import InputValueRequest from langflow.custom import Component from langflow.custom.eval import eval_custom_component_code diff --git a/src/backend/tests/performance/test_server_init.py b/src/backend/tests/performance/test_server_init.py index 6a83a4900031..f5133ffc4e67 100644 --- a/src/backend/tests/performance/test_server_init.py +++ b/src/backend/tests/performance/test_server_init.py @@ -1,6 +1,7 @@ import os import pytest + from langflow.services.deps import get_settings_service diff --git a/src/backend/tests/unit/api/v1/test_api_schemas.py b/src/backend/tests/unit/api/v1/test_api_schemas.py index 2a73afe2290b..40bbfa541fb8 100644 --- a/src/backend/tests/unit/api/v1/test_api_schemas.py +++ b/src/backend/tests/unit/api/v1/test_api_schemas.py @@ -2,11 +2,12 @@ from hypothesis import HealthCheck, example, given, settings from hypothesis import strategies as st +from pydantic import BaseModel + from langflow.api.v1.schemas import ResultDataResponse, VertexBuildResponse from langflow.schema.schema import OutputValue from langflow.serialization import serialize from langflow.services.tracing.schema import Log -from pydantic import BaseModel # Use a smaller test size for hypothesis TEST_TEXT_LENGTH = 50 diff --git a/src/backend/tests/unit/api/v1/test_endpoints.py b/src/backend/tests/unit/api/v1/test_endpoints.py index 13a3b5311351..00d152581542 100644 --- a/src/backend/tests/unit/api/v1/test_endpoints.py +++ b/src/backend/tests/unit/api/v1/test_endpoints.py @@ -5,6 +5,7 @@ from anyio import Path from fastapi import status from httpx import AsyncClient + from langflow.api.v1.schemas import CustomComponentRequest, UpdateCustomComponentRequest from langflow.components.agents.agent import AgentComponent from langflow.custom.utils import build_custom_component_template diff --git a/src/backend/tests/unit/api/v1/test_files.py b/src/backend/tests/unit/api/v1/test_files.py index c4a9574d2ca9..ef674158f13e 100644 --- a/src/backend/tests/unit/api/v1/test_files.py +++ b/src/backend/tests/unit/api/v1/test_files.py @@ -11,6 +11,9 @@ import pytest from asgi_lifespan import LifespanManager from httpx import ASGITransport, AsyncClient +from sqlalchemy.orm import selectinload +from sqlmodel import select + from langflow.main import create_app from langflow.services.auth.utils import get_password_hash from langflow.services.database.models.api_key.model import ApiKey @@ -18,9 +21,6 @@ from langflow.services.database.models.user.model import User, UserRead from langflow.services.database.utils import session_getter from langflow.services.deps import get_db_service -from sqlalchemy.orm import selectinload -from sqlmodel import select - from tests.conftest import _delete_transactions_and_vertex_builds diff --git a/src/backend/tests/unit/api/v1/test_flows.py b/src/backend/tests/unit/api/v1/test_flows.py index fdd7895d9011..b9cd7f46dcc7 100644 --- a/src/backend/tests/unit/api/v1/test_flows.py +++ b/src/backend/tests/unit/api/v1/test_flows.py @@ -4,6 +4,7 @@ from anyio import Path from fastapi import status from httpx import AsyncClient + from langflow.services.database.models import Flow diff --git a/src/backend/tests/unit/api/v1/test_mcp.py b/src/backend/tests/unit/api/v1/test_mcp.py index 2bea371cc1fc..763db93e6697 100644 --- a/src/backend/tests/unit/api/v1/test_mcp.py +++ b/src/backend/tests/unit/api/v1/test_mcp.py @@ -4,6 +4,7 @@ import pytest from fastapi import status from httpx import AsyncClient + from langflow.services.auth.utils import get_password_hash from langflow.services.database.models.user import User diff --git a/src/backend/tests/unit/api/v1/test_mcp_projects.py b/src/backend/tests/unit/api/v1/test_mcp_projects.py index 7b78af80149c..413d908a1e3a 100644 --- a/src/backend/tests/unit/api/v1/test_mcp_projects.py +++ b/src/backend/tests/unit/api/v1/test_mcp_projects.py @@ -5,6 +5,9 @@ import pytest from fastapi import HTTPException, status from httpx import AsyncClient +from mcp.server.sse import SseServerTransport +from sqlmodel import select + from langflow.api.v1.mcp_projects import ( get_project_mcp_server, get_project_sse, @@ -18,8 +21,6 @@ from langflow.services.database.models.user.model import User from langflow.services.deps import get_db_service, get_settings_service, session_scope from langflow.services.utils import initialize_services -from mcp.server.sse import SseServerTransport -from sqlmodel import select # Mark all tests in this module as asyncio pytestmark = pytest.mark.asyncio diff --git a/src/backend/tests/unit/api/v1/test_schemas.py b/src/backend/tests/unit/api/v1/test_schemas.py index 077af749fa5d..d0643c024f3e 100644 --- a/src/backend/tests/unit/api/v1/test_schemas.py +++ b/src/backend/tests/unit/api/v1/test_schemas.py @@ -1,4 +1,5 @@ import pytest + from langflow.api.v1.schemas import VertexBuildResponse from langflow.serialization.constants import MAX_ITEMS_LENGTH diff --git a/src/backend/tests/unit/api/v1/test_variable.py b/src/backend/tests/unit/api/v1/test_variable.py index 8d8f81fde295..9e5ce5876b17 100644 --- a/src/backend/tests/unit/api/v1/test_variable.py +++ b/src/backend/tests/unit/api/v1/test_variable.py @@ -4,6 +4,7 @@ import pytest from fastapi import HTTPException, status from httpx import AsyncClient + from langflow.services.variable.constants import CREDENTIAL_TYPE, GENERIC_TYPE diff --git a/src/backend/tests/unit/api/v2/test_files.py b/src/backend/tests/unit/api/v2/test_files.py index e44c4c0cd138..2873fd8da0b3 100644 --- a/src/backend/tests/unit/api/v2/test_files.py +++ b/src/backend/tests/unit/api/v2/test_files.py @@ -8,15 +8,15 @@ import pytest from asgi_lifespan import LifespanManager from httpx import ASGITransport, AsyncClient +from sqlalchemy.orm import selectinload +from sqlmodel import select + from langflow.main import create_app from langflow.services.auth.utils import get_password_hash from langflow.services.database.models.api_key.model import ApiKey from langflow.services.database.models.user.model import User, UserRead from langflow.services.database.utils import session_getter from langflow.services.deps import get_db_service -from sqlalchemy.orm import selectinload -from sqlmodel import select - from tests.conftest import _delete_transactions_and_vertex_builds diff --git a/src/backend/tests/unit/base/data/test_kb_utils.py b/src/backend/tests/unit/base/data/test_kb_utils.py index 806a161fe482..01627fd08f8c 100644 --- a/src/backend/tests/unit/base/data/test_kb_utils.py +++ b/src/backend/tests/unit/base/data/test_kb_utils.py @@ -1,4 +1,5 @@ import pytest + from langflow.base.knowledge_bases.knowledge_base_utils import compute_bm25, compute_tfidf diff --git a/src/backend/tests/unit/base/load/test_load.py b/src/backend/tests/unit/base/load/test_load.py index bce82d6589d5..ec7f76c13a90 100644 --- a/src/backend/tests/unit/base/load/test_load.py +++ b/src/backend/tests/unit/base/load/test_load.py @@ -3,6 +3,7 @@ import pytest from dotenv import load_dotenv + from langflow.load import run_flow_from_json diff --git a/src/backend/tests/unit/base/mcp/test_mcp_util.py b/src/backend/tests/unit/base/mcp/test_mcp_util.py index 074103b75d2b..9cc019fa3aed 100644 --- a/src/backend/tests/unit/base/mcp/test_mcp_util.py +++ b/src/backend/tests/unit/base/mcp/test_mcp_util.py @@ -11,6 +11,7 @@ from unittest.mock import AsyncMock, MagicMock, patch import pytest + from langflow.base.mcp import util from langflow.base.mcp.util import MCPSessionManager, MCPSseClient, MCPStdioClient, _process_headers, validate_headers diff --git a/src/backend/tests/unit/base/tools/test_component_toolkit.py b/src/backend/tests/unit/base/tools/test_component_toolkit.py index 73b7d66506f2..5c4960c1cf32 100644 --- a/src/backend/tests/unit/base/tools/test_component_toolkit.py +++ b/src/backend/tests/unit/base/tools/test_component_toolkit.py @@ -3,6 +3,8 @@ from pathlib import Path import pytest +from pydantic import BaseModel + from langflow.base.tools.component_tool import ComponentToolkit from langflow.components.data.sql_executor import SQLComponent from langflow.components.input_output.chat_output import ChatOutput @@ -10,7 +12,6 @@ from langflow.components.openai.openai_chat_model import OpenAIModelComponent from langflow.components.tools.calculator import CalculatorToolComponent from langflow.graph.graph.base import Graph -from pydantic import BaseModel @pytest.fixture diff --git a/src/backend/tests/unit/base/tools/test_toolmodemixin.py b/src/backend/tests/unit/base/tools/test_toolmodemixin.py index b837a1508c3e..b64ba8a35d5d 100644 --- a/src/backend/tests/unit/base/tools/test_toolmodemixin.py +++ b/src/backend/tests/unit/base/tools/test_toolmodemixin.py @@ -1,3 +1,5 @@ +from pydantic import BaseModel + from langflow.base.tools.component_tool import ComponentToolkit from langflow.custom import Component @@ -21,7 +23,6 @@ TableInput, ) from langflow.schema import Data -from pydantic import BaseModel class AllInputsComponent(Component): diff --git a/src/backend/tests/unit/base/tools/test_vector_store_decorator.py b/src/backend/tests/unit/base/tools/test_vector_store_decorator.py index 9d3e9371b001..a3c29c846220 100644 --- a/src/backend/tests/unit/base/tools/test_vector_store_decorator.py +++ b/src/backend/tests/unit/base/tools/test_vector_store_decorator.py @@ -1,8 +1,8 @@ from typing import Any import pytest -from langflow.components.datastax import AstraDBVectorStoreComponent +from langflow.components.datastax import AstraDBVectorStoreComponent from tests.base import ComponentTestBaseWithoutClient, VersionComponentMapping diff --git a/src/backend/tests/unit/build_utils.py b/src/backend/tests/unit/build_utils.py index 7907f0427363..e94009c09599 100644 --- a/src/backend/tests/unit/build_utils.py +++ b/src/backend/tests/unit/build_utils.py @@ -4,6 +4,7 @@ from uuid import UUID from httpx import AsyncClient, codes + from langflow.logging.logger import logger diff --git a/src/backend/tests/unit/components/agents/test_agent_component.py b/src/backend/tests/unit/components/agents/test_agent_component.py index 0855888cee15..f231143e678a 100644 --- a/src/backend/tests/unit/components/agents/test_agent_component.py +++ b/src/backend/tests/unit/components/agents/test_agent_component.py @@ -3,6 +3,7 @@ from uuid import uuid4 import pytest + from langflow.base.models.anthropic_constants import ANTHROPIC_MODELS from langflow.base.models.model_input_constants import ( MODEL_PROVIDERS, @@ -14,7 +15,6 @@ from langflow.components.agents.agent import AgentComponent from langflow.components.tools.calculator import CalculatorToolComponent from langflow.custom import Component - from tests.base import ComponentTestBaseWithClient, ComponentTestBaseWithoutClient from tests.unit.mock_language_model import MockLanguageModel diff --git a/src/backend/tests/unit/components/agents/test_agent_events.py b/src/backend/tests/unit/components/agents/test_agent_events.py index c1342135aa7d..6e80398919f7 100644 --- a/src/backend/tests/unit/components/agents/test_agent_events.py +++ b/src/backend/tests/unit/components/agents/test_agent_events.py @@ -3,6 +3,7 @@ from unittest.mock import AsyncMock from langchain_core.agents import AgentFinish + from langflow.base.agents.agent import process_agent_events from langflow.base.agents.events import ( handle_on_chain_end, diff --git a/src/backend/tests/unit/components/agents/test_tool_calling_agent.py b/src/backend/tests/unit/components/agents/test_tool_calling_agent.py index d636e0230604..9ce104abda20 100644 --- a/src/backend/tests/unit/components/agents/test_tool_calling_agent.py +++ b/src/backend/tests/unit/components/agents/test_tool_calling_agent.py @@ -1,6 +1,7 @@ import os import pytest + from langflow.components.langchain_utilities import ToolCallingAgentComponent from langflow.components.openai.openai_chat_model import OpenAIModelComponent from langflow.components.tools.calculator import CalculatorToolComponent diff --git a/src/backend/tests/unit/components/bundles/google/test_google_bq_sql_executor_component.py b/src/backend/tests/unit/components/bundles/google/test_google_bq_sql_executor_component.py index 73647a057775..beb4694c74ba 100644 --- a/src/backend/tests/unit/components/bundles/google/test_google_bq_sql_executor_component.py +++ b/src/backend/tests/unit/components/bundles/google/test_google_bq_sql_executor_component.py @@ -8,9 +8,9 @@ import pytest from google.auth.exceptions import RefreshError from google.oauth2.service_account import Credentials -from langflow.components.google.google_bq_sql_executor import BigQueryExecutorComponent from pandas import DataFrame +from langflow.components.google.google_bq_sql_executor import BigQueryExecutorComponent from tests.base import ComponentTestBaseWithoutClient diff --git a/src/backend/tests/unit/components/bundles/langwatch/test_langwatch_component.py b/src/backend/tests/unit/components/bundles/langwatch/test_langwatch_component.py index 2d42899c43b8..90f03417d510 100644 --- a/src/backend/tests/unit/components/bundles/langwatch/test_langwatch_component.py +++ b/src/backend/tests/unit/components/bundles/langwatch/test_langwatch_component.py @@ -6,11 +6,11 @@ import pytest import respx from httpx import Response + from langflow.base.langwatch.utils import get_cached_evaluators from langflow.components.langwatch.langwatch import LangWatchComponent from langflow.schema.data import Data from langflow.schema.dotdict import dotdict - from tests.base import ComponentTestBaseWithoutClient diff --git a/src/backend/tests/unit/components/bundles/youtube/test_youtube_transcript_component.py b/src/backend/tests/unit/components/bundles/youtube/test_youtube_transcript_component.py index fae298591c18..e646fe6be797 100644 --- a/src/backend/tests/unit/components/bundles/youtube/test_youtube_transcript_component.py +++ b/src/backend/tests/unit/components/bundles/youtube/test_youtube_transcript_component.py @@ -1,10 +1,10 @@ from unittest.mock import Mock, patch import pytest -from langflow.components.youtube.youtube_transcripts import YouTubeTranscriptsComponent -from langflow.schema import Data, DataFrame, Message from youtube_transcript_api import NoTranscriptFound, TranscriptsDisabled +from langflow.components.youtube.youtube_transcripts import YouTubeTranscriptsComponent +from langflow.schema import Data, DataFrame, Message from tests.base import ComponentTestBaseWithoutClient diff --git a/src/backend/tests/unit/components/data/test_api_request_component.py b/src/backend/tests/unit/components/data/test_api_request_component.py index e15918d70e77..a602abf6d2b0 100644 --- a/src/backend/tests/unit/components/data/test_api_request_component.py +++ b/src/backend/tests/unit/components/data/test_api_request_component.py @@ -6,10 +6,10 @@ import pytest import respx from httpx import Response + from langflow.components.data import APIRequestComponent from langflow.schema import Data from langflow.schema.dotdict import dotdict - from tests.base import ComponentTestBaseWithoutClient diff --git a/src/backend/tests/unit/components/data/test_directory_component.py b/src/backend/tests/unit/components/data/test_directory_component.py index b08ae2d77fd1..110a3a1a57eb 100644 --- a/src/backend/tests/unit/components/data/test_directory_component.py +++ b/src/backend/tests/unit/components/data/test_directory_component.py @@ -3,9 +3,9 @@ from unittest.mock import Mock, patch import pytest + from langflow.components.data import DirectoryComponent from langflow.schema import Data, DataFrame - from tests.base import ComponentTestBaseWithoutClient diff --git a/src/backend/tests/unit/components/data/test_mcp_component.py b/src/backend/tests/unit/components/data/test_mcp_component.py index 4b4e2d0998ef..819e63763905 100644 --- a/src/backend/tests/unit/components/data/test_mcp_component.py +++ b/src/backend/tests/unit/components/data/test_mcp_component.py @@ -9,9 +9,9 @@ from unittest.mock import AsyncMock, MagicMock, patch import pytest + from langflow.base.mcp.util import MCPSessionManager, MCPSseClient, MCPStdioClient from langflow.components.agents.mcp_component import MCPToolsComponent - from tests.base import ComponentTestBaseWithoutClient, VersionComponentMapping diff --git a/src/backend/tests/unit/components/data/test_news_search.py b/src/backend/tests/unit/components/data/test_news_search.py index f77aebbd95e6..e9a9a7c089b5 100644 --- a/src/backend/tests/unit/components/data/test_news_search.py +++ b/src/backend/tests/unit/components/data/test_news_search.py @@ -2,9 +2,9 @@ import pytest import requests + from langflow.components.data.news_search import NewsSearchComponent from langflow.schema import DataFrame - from tests.base import ComponentTestBaseWithoutClient diff --git a/src/backend/tests/unit/components/data/test_rss.py b/src/backend/tests/unit/components/data/test_rss.py index 0b7875ad9b34..493eec733c6c 100644 --- a/src/backend/tests/unit/components/data/test_rss.py +++ b/src/backend/tests/unit/components/data/test_rss.py @@ -2,9 +2,9 @@ import pytest import requests + from langflow.components.data.rss import RSSReaderComponent from langflow.schema import DataFrame - from tests.base import ComponentTestBaseWithoutClient diff --git a/src/backend/tests/unit/components/data/test_s3_uploader_component.py b/src/backend/tests/unit/components/data/test_s3_uploader_component.py index 7188305563b6..a7ce0ce30716 100644 --- a/src/backend/tests/unit/components/data/test_s3_uploader_component.py +++ b/src/backend/tests/unit/components/data/test_s3_uploader_component.py @@ -5,9 +5,9 @@ import boto3 import pytest + from langflow.components.amazon.s3_bucket_uploader import S3BucketUploaderComponent from langflow.schema.data import Data - from tests.base import ComponentTestBaseWithoutClient diff --git a/src/backend/tests/unit/components/data/test_sql_executor.py b/src/backend/tests/unit/components/data/test_sql_executor.py index 45e5ab90e469..7b9ab6e7dcfe 100644 --- a/src/backend/tests/unit/components/data/test_sql_executor.py +++ b/src/backend/tests/unit/components/data/test_sql_executor.py @@ -2,9 +2,9 @@ from pathlib import Path import pytest + from langflow.components.data.sql_executor import SQLComponent from langflow.schema import DataFrame, Message - from tests.base import ComponentTestBaseWithoutClient diff --git a/src/backend/tests/unit/components/data/test_url_component.py b/src/backend/tests/unit/components/data/test_url_component.py index 1213d5e3767c..7b0f342c794e 100644 --- a/src/backend/tests/unit/components/data/test_url_component.py +++ b/src/backend/tests/unit/components/data/test_url_component.py @@ -1,9 +1,9 @@ from unittest.mock import Mock, patch import pytest + from langflow.components.data import URLComponent from langflow.schema import DataFrame - from tests.base import ComponentTestBaseWithoutClient diff --git a/src/backend/tests/unit/components/data/test_web_search.py b/src/backend/tests/unit/components/data/test_web_search.py index 6b6e73f0ac9f..86cf1ee630a3 100644 --- a/src/backend/tests/unit/components/data/test_web_search.py +++ b/src/backend/tests/unit/components/data/test_web_search.py @@ -1,7 +1,7 @@ import pytest + from langflow.components.data.web_search import WebSearchComponent from langflow.schema import DataFrame - from tests.base import ComponentTestBaseWithoutClient diff --git a/src/backend/tests/unit/components/git/test_git_component.py b/src/backend/tests/unit/components/git/test_git_component.py index 537f1420b5d1..53aed07cb144 100644 --- a/src/backend/tests/unit/components/git/test_git_component.py +++ b/src/backend/tests/unit/components/git/test_git_component.py @@ -2,6 +2,7 @@ from pathlib import Path import pytest + from langflow.components.git import GitLoaderComponent diff --git a/src/backend/tests/unit/components/inputs/test_input_components.py b/src/backend/tests/unit/components/inputs/test_input_components.py index 03d711239aa5..ce4339b5b6d6 100644 --- a/src/backend/tests/unit/components/inputs/test_input_components.py +++ b/src/backend/tests/unit/components/inputs/test_input_components.py @@ -1,9 +1,9 @@ import pytest from anyio import Path + from langflow.components.input_output import ChatInput, TextInputComponent from langflow.schema.message import Message from langflow.utils.constants import MESSAGE_SENDER_AI, MESSAGE_SENDER_NAME_USER, MESSAGE_SENDER_USER - from tests.base import ComponentTestBaseWithClient, ComponentTestBaseWithoutClient diff --git a/src/backend/tests/unit/components/knowledge_bases/test_ingestion.py b/src/backend/tests/unit/components/knowledge_bases/test_ingestion.py index c97e4a764ab9..6620770c078d 100644 --- a/src/backend/tests/unit/components/knowledge_bases/test_ingestion.py +++ b/src/backend/tests/unit/components/knowledge_bases/test_ingestion.py @@ -3,11 +3,11 @@ from unittest.mock import AsyncMock, MagicMock, patch import pytest + from langflow.base.knowledge_bases.knowledge_base_utils import get_knowledge_bases from langflow.components.knowledge_bases.ingestion import KnowledgeIngestionComponent from langflow.schema.data import Data from langflow.schema.dataframe import DataFrame - from tests.base import ComponentTestBaseWithoutClient diff --git a/src/backend/tests/unit/components/knowledge_bases/test_retrieval.py b/src/backend/tests/unit/components/knowledge_bases/test_retrieval.py index 1f46facdd0c1..859eba451ad2 100644 --- a/src/backend/tests/unit/components/knowledge_bases/test_retrieval.py +++ b/src/backend/tests/unit/components/knowledge_bases/test_retrieval.py @@ -5,10 +5,10 @@ from unittest.mock import AsyncMock, MagicMock, patch import pytest -from langflow.base.knowledge_bases.knowledge_base_utils import get_knowledge_bases -from langflow.components.knowledge_bases.retrieval import KnowledgeRetrievalComponent from pydantic import SecretStr +from langflow.base.knowledge_bases.knowledge_base_utils import get_knowledge_bases +from langflow.components.knowledge_bases.retrieval import KnowledgeRetrievalComponent from tests.base import ComponentTestBaseWithoutClient diff --git a/src/backend/tests/unit/components/languagemodels/test_baidu_qianfan.py b/src/backend/tests/unit/components/languagemodels/test_baidu_qianfan.py index f720dc291940..5186c38db668 100644 --- a/src/backend/tests/unit/components/languagemodels/test_baidu_qianfan.py +++ b/src/backend/tests/unit/components/languagemodels/test_baidu_qianfan.py @@ -3,9 +3,10 @@ import pytest from langchain.schema import HumanMessage from langchain_community.chat_models.baidu_qianfan_endpoint import QianfanChatEndpoint -from langflow.components.baidu.baidu_qianfan_chat import QianfanChatEndpointComponent from qianfan.errors import APIError +from langflow.components.baidu.baidu_qianfan_chat import QianfanChatEndpointComponent + @pytest.fixture def qianfan_credentials(): diff --git a/src/backend/tests/unit/components/languagemodels/test_chatollama_component.py b/src/backend/tests/unit/components/languagemodels/test_chatollama_component.py index 83e5787926d1..c9b89063e92a 100644 --- a/src/backend/tests/unit/components/languagemodels/test_chatollama_component.py +++ b/src/backend/tests/unit/components/languagemodels/test_chatollama_component.py @@ -2,8 +2,8 @@ import pytest from langchain_ollama import ChatOllama -from langflow.components.ollama.ollama import ChatOllamaComponent +from langflow.components.ollama.ollama import ChatOllamaComponent from tests.base import ComponentTestBaseWithoutClient diff --git a/src/backend/tests/unit/components/languagemodels/test_deepseek.py b/src/backend/tests/unit/components/languagemodels/test_deepseek.py index b111cf759501..1d6fb3ef461f 100644 --- a/src/backend/tests/unit/components/languagemodels/test_deepseek.py +++ b/src/backend/tests/unit/components/languagemodels/test_deepseek.py @@ -1,6 +1,7 @@ from unittest.mock import MagicMock import pytest + from langflow.components.deepseek.deepseek import DeepSeekModelComponent from langflow.custom.custom_component.component import Component from langflow.custom.utils import build_custom_component_template diff --git a/src/backend/tests/unit/components/languagemodels/test_openai_model.py b/src/backend/tests/unit/components/languagemodels/test_openai_model.py index 60c77c7f26a8..96cbad5da345 100644 --- a/src/backend/tests/unit/components/languagemodels/test_openai_model.py +++ b/src/backend/tests/unit/components/languagemodels/test_openai_model.py @@ -3,8 +3,8 @@ import pytest from langchain_openai import ChatOpenAI -from langflow.components.openai.openai_chat_model import OpenAIModelComponent +from langflow.components.openai.openai_chat_model import OpenAIModelComponent from tests.base import ComponentTestBaseWithoutClient diff --git a/src/backend/tests/unit/components/languagemodels/test_xai.py b/src/backend/tests/unit/components/languagemodels/test_xai.py index f469122a01f7..6be940faa273 100644 --- a/src/backend/tests/unit/components/languagemodels/test_xai.py +++ b/src/backend/tests/unit/components/languagemodels/test_xai.py @@ -1,6 +1,7 @@ from unittest.mock import MagicMock, patch import pytest + from langflow.components.xai.xai import XAIModelComponent from langflow.custom.custom_component.component import Component from langflow.custom.utils import build_custom_component_template @@ -13,7 +14,6 @@ SecretStrInput, SliderInput, ) - from tests.base import ComponentTestBaseWithoutClient diff --git a/src/backend/tests/unit/components/logic/test_loop.py b/src/backend/tests/unit/components/logic/test_loop.py index 60f25c8cc0fb..649d3aa36cb0 100644 --- a/src/backend/tests/unit/components/logic/test_loop.py +++ b/src/backend/tests/unit/components/logic/test_loop.py @@ -5,6 +5,7 @@ import orjson import pytest from httpx import AsyncClient + from langflow.components.data.url import URLComponent from langflow.components.input_output import ChatOutput from langflow.components.logic import LoopComponent @@ -19,7 +20,6 @@ from langflow.memory import aget_messages from langflow.schema.data import Data from langflow.services.database.models.flow import FlowCreate - from tests.base import ComponentTestBaseWithClient from tests.unit.build_utils import build_flow, get_build_events diff --git a/src/backend/tests/unit/components/models/test_embedding_model_component.py b/src/backend/tests/unit/components/models/test_embedding_model_component.py index 8abab5721f78..e4c842b0114d 100644 --- a/src/backend/tests/unit/components/models/test_embedding_model_component.py +++ b/src/backend/tests/unit/components/models/test_embedding_model_component.py @@ -1,9 +1,9 @@ from unittest.mock import MagicMock, patch import pytest + from langflow.base.models.openai_constants import OPENAI_EMBEDDING_MODEL_NAMES from langflow.components.models.embedding_model import EmbeddingModelComponent - from tests.base import ComponentTestBaseWithClient diff --git a/src/backend/tests/unit/components/models/test_language_model_component.py b/src/backend/tests/unit/components/models/test_language_model_component.py index c8fb48e0de12..c852957f0788 100644 --- a/src/backend/tests/unit/components/models/test_language_model_component.py +++ b/src/backend/tests/unit/components/models/test_language_model_component.py @@ -4,11 +4,11 @@ from langchain_anthropic import ChatAnthropic from langchain_google_genai import ChatGoogleGenerativeAI from langchain_openai import ChatOpenAI + from langflow.base.models.anthropic_constants import ANTHROPIC_MODELS from langflow.base.models.google_generative_ai_constants import GOOGLE_GENERATIVE_AI_MODELS from langflow.base.models.openai_constants import OPENAI_CHAT_MODEL_NAMES, OPENAI_REASONING_MODEL_NAMES from langflow.components.models.language_model import LanguageModelComponent - from tests.base import ComponentTestBaseWithoutClient diff --git a/src/backend/tests/unit/components/outputs/test_chat_output_component.py b/src/backend/tests/unit/components/outputs/test_chat_output_component.py index f12a26746416..e1f794f2dfdf 100644 --- a/src/backend/tests/unit/components/outputs/test_chat_output_component.py +++ b/src/backend/tests/unit/components/outputs/test_chat_output_component.py @@ -1,10 +1,10 @@ import pytest + from langflow.components.input_output import ChatOutput from langflow.schema.data import Data from langflow.schema.dataframe import DataFrame from langflow.schema.message import Message from langflow.utils.constants import MESSAGE_SENDER_AI, MESSAGE_SENDER_NAME_AI - from tests.base import ComponentTestBaseWithClient diff --git a/src/backend/tests/unit/components/outputs/test_output_components.py b/src/backend/tests/unit/components/outputs/test_output_components.py index 8e550bb138a2..a2baf0923776 100644 --- a/src/backend/tests/unit/components/outputs/test_output_components.py +++ b/src/backend/tests/unit/components/outputs/test_output_components.py @@ -1,6 +1,6 @@ import pytest -from langflow.components.input_output import TextOutputComponent +from langflow.components.input_output import TextOutputComponent from tests.base import ComponentTestBaseWithoutClient diff --git a/src/backend/tests/unit/components/processing/test_batch_run_component.py b/src/backend/tests/unit/components/processing/test_batch_run_component.py index bcb7b075ca83..c9f239df9b72 100644 --- a/src/backend/tests/unit/components/processing/test_batch_run_component.py +++ b/src/backend/tests/unit/components/processing/test_batch_run_component.py @@ -1,9 +1,9 @@ import re import pytest + from langflow.components.processing.batch_run import BatchRunComponent from langflow.schema import DataFrame - from tests.base import ComponentTestBaseWithoutClient from tests.unit.mock_language_model import MockLanguageModel diff --git a/src/backend/tests/unit/components/processing/test_data_operations_component.py b/src/backend/tests/unit/components/processing/test_data_operations_component.py index aa873dfc3d19..9be5be329471 100644 --- a/src/backend/tests/unit/components/processing/test_data_operations_component.py +++ b/src/backend/tests/unit/components/processing/test_data_operations_component.py @@ -1,7 +1,7 @@ import pytest + from langflow.components.processing.data_operations import DataOperationsComponent from langflow.schema import Data - from tests.base import ComponentTestBaseWithoutClient diff --git a/src/backend/tests/unit/components/processing/test_data_to_dataframe_component.py b/src/backend/tests/unit/components/processing/test_data_to_dataframe_component.py index 196ded59b761..fec0e97af9b1 100644 --- a/src/backend/tests/unit/components/processing/test_data_to_dataframe_component.py +++ b/src/backend/tests/unit/components/processing/test_data_to_dataframe_component.py @@ -1,7 +1,7 @@ import pytest + from langflow.components.processing.data_to_dataframe import DataToDataFrameComponent from langflow.schema import Data, DataFrame - from tests.base import ComponentTestBaseWithoutClient diff --git a/src/backend/tests/unit/components/processing/test_dataframe_operations.py b/src/backend/tests/unit/components/processing/test_dataframe_operations.py index 335434942095..1f62f4f2fb4f 100644 --- a/src/backend/tests/unit/components/processing/test_dataframe_operations.py +++ b/src/backend/tests/unit/components/processing/test_dataframe_operations.py @@ -1,5 +1,6 @@ import pandas as pd import pytest + from langflow.components.processing.dataframe_operations import DataFrameOperationsComponent from langflow.schema.dataframe import DataFrame diff --git a/src/backend/tests/unit/components/processing/test_lambda_filter.py b/src/backend/tests/unit/components/processing/test_lambda_filter.py index cfdf595f3e3e..90865c80a584 100644 --- a/src/backend/tests/unit/components/processing/test_lambda_filter.py +++ b/src/backend/tests/unit/components/processing/test_lambda_filter.py @@ -1,9 +1,9 @@ from unittest.mock import AsyncMock import pytest + from langflow.components.processing.lambda_filter import LambdaFilterComponent from langflow.schema import Data - from tests.base import ComponentTestBaseWithoutClient diff --git a/src/backend/tests/unit/components/processing/test_parse_dataframe_component.py b/src/backend/tests/unit/components/processing/test_parse_dataframe_component.py index 1d3e57cddbe4..240401f26059 100644 --- a/src/backend/tests/unit/components/processing/test_parse_dataframe_component.py +++ b/src/backend/tests/unit/components/processing/test_parse_dataframe_component.py @@ -2,10 +2,10 @@ import pandas as pd import pytest + from langflow.components.processing.parse_dataframe import ParseDataFrameComponent from langflow.schema import DataFrame from langflow.schema.message import Message - from tests.base import ComponentTestBaseWithoutClient diff --git a/src/backend/tests/unit/components/processing/test_parser_component.py b/src/backend/tests/unit/components/processing/test_parser_component.py index 3ed456f6ae1b..c5cc10353d45 100644 --- a/src/backend/tests/unit/components/processing/test_parser_component.py +++ b/src/backend/tests/unit/components/processing/test_parser_component.py @@ -1,8 +1,8 @@ import pytest + from langflow.components.processing.parser import ParserComponent from langflow.schema import Data, DataFrame from langflow.schema.message import Message - from tests.base import ComponentTestBaseWithoutClient diff --git a/src/backend/tests/unit/components/processing/test_regex_component.py b/src/backend/tests/unit/components/processing/test_regex_component.py index 1dc64ab5f208..9c5bfff17249 100644 --- a/src/backend/tests/unit/components/processing/test_regex_component.py +++ b/src/backend/tests/unit/components/processing/test_regex_component.py @@ -1,8 +1,8 @@ import pytest + from langflow.components.processing.regex import RegexExtractorComponent from langflow.schema import Data from langflow.schema.message import Message - from tests.base import ComponentTestBaseWithoutClient diff --git a/src/backend/tests/unit/components/processing/test_save_file_component.py b/src/backend/tests/unit/components/processing/test_save_file_component.py index bc033b444d56..ada597c4548a 100644 --- a/src/backend/tests/unit/components/processing/test_save_file_component.py +++ b/src/backend/tests/unit/components/processing/test_save_file_component.py @@ -4,9 +4,9 @@ import pandas as pd import pytest + from langflow.components.processing.save_file import SaveToFileComponent from langflow.schema import Data, Message - from tests.base import ComponentTestBaseWithoutClient # TODO: Re-enable this test when the SaveToFileComponent is ready for use. diff --git a/src/backend/tests/unit/components/processing/test_split_text_component.py b/src/backend/tests/unit/components/processing/test_split_text_component.py index 40e66ed62a37..073445f3c0cc 100644 --- a/src/backend/tests/unit/components/processing/test_split_text_component.py +++ b/src/backend/tests/unit/components/processing/test_split_text_component.py @@ -1,8 +1,8 @@ import pytest + from langflow.components.data import URLComponent from langflow.components.processing import SplitTextComponent from langflow.schema import Data, DataFrame - from tests.base import ComponentTestBaseWithoutClient diff --git a/src/backend/tests/unit/components/processing/test_structured_output_component.py b/src/backend/tests/unit/components/processing/test_structured_output_component.py index 33ab6a3407d2..8cd475b2a0c8 100644 --- a/src/backend/tests/unit/components/processing/test_structured_output_component.py +++ b/src/backend/tests/unit/components/processing/test_structured_output_component.py @@ -5,11 +5,11 @@ import openai import pytest from langchain_openai import ChatOpenAI +from pydantic import BaseModel + from langflow.components.processing.structured_output import StructuredOutputComponent from langflow.helpers.base_model import build_model_from_schema from langflow.inputs.inputs import TableInput -from pydantic import BaseModel - from tests.base import ComponentTestBaseWithoutClient from tests.unit.mock_language_model import MockLanguageModel diff --git a/src/backend/tests/unit/components/processing/test_type_converter_component.py b/src/backend/tests/unit/components/processing/test_type_converter_component.py index 2a09b015b907..852e7f584c80 100644 --- a/src/backend/tests/unit/components/processing/test_type_converter_component.py +++ b/src/backend/tests/unit/components/processing/test_type_converter_component.py @@ -1,10 +1,10 @@ import pandas as pd import pytest + from langflow.components.processing.converter import TypeConverterComponent from langflow.schema.data import Data from langflow.schema.dataframe import DataFrame from langflow.schema.message import Message - from tests.base import ComponentTestBaseWithoutClient diff --git a/src/backend/tests/unit/components/prompts/test_prompt_component.py b/src/backend/tests/unit/components/prompts/test_prompt_component.py index 5db80334deb9..c55bcdbf79db 100644 --- a/src/backend/tests/unit/components/prompts/test_prompt_component.py +++ b/src/backend/tests/unit/components/prompts/test_prompt_component.py @@ -1,6 +1,6 @@ import pytest -from langflow.components.processing import PromptComponent +from langflow.components.processing import PromptComponent from tests.base import ComponentTestBaseWithClient diff --git a/src/backend/tests/unit/components/prototypes/test_create_data_component.py b/src/backend/tests/unit/components/prototypes/test_create_data_component.py index edfe222e4b63..650ad6f238a1 100644 --- a/src/backend/tests/unit/components/prototypes/test_create_data_component.py +++ b/src/backend/tests/unit/components/prototypes/test_create_data_component.py @@ -1,6 +1,7 @@ import re import pytest + from langflow.components.processing import CreateDataComponent from langflow.schema import Data diff --git a/src/backend/tests/unit/components/prototypes/test_update_data_component.py b/src/backend/tests/unit/components/prototypes/test_update_data_component.py index 5cd7d25de4d4..5d9b7d99a1ec 100644 --- a/src/backend/tests/unit/components/prototypes/test_update_data_component.py +++ b/src/backend/tests/unit/components/prototypes/test_update_data_component.py @@ -1,6 +1,7 @@ import re import pytest + from langflow.components.processing import UpdateDataComponent from langflow.schema import Data diff --git a/src/backend/tests/unit/components/search/test_google_search_api.py b/src/backend/tests/unit/components/search/test_google_search_api.py index 2f70b9217872..306309906fd2 100644 --- a/src/backend/tests/unit/components/search/test_google_search_api.py +++ b/src/backend/tests/unit/components/search/test_google_search_api.py @@ -2,9 +2,9 @@ import pandas as pd import pytest + from langflow.components.google.google_search_api_core import GoogleSearchAPICore from langflow.schema import DataFrame - from tests.base import ComponentTestBaseWithoutClient diff --git a/src/backend/tests/unit/components/search/test_google_serper_api_core.py b/src/backend/tests/unit/components/search/test_google_serper_api_core.py index 5be92e6c1ef7..cf7fd321ecdc 100644 --- a/src/backend/tests/unit/components/search/test_google_serper_api_core.py +++ b/src/backend/tests/unit/components/search/test_google_serper_api_core.py @@ -1,6 +1,7 @@ from unittest.mock import MagicMock, patch import pytest + from langflow.components.serper.google_serper_api_core import GoogleSerperAPICore from langflow.schema import DataFrame diff --git a/src/backend/tests/unit/components/search/test_wikidata_api.py b/src/backend/tests/unit/components/search/test_wikidata_api.py index 618b3b031ace..1fb0a88f40dd 100644 --- a/src/backend/tests/unit/components/search/test_wikidata_api.py +++ b/src/backend/tests/unit/components/search/test_wikidata_api.py @@ -3,6 +3,7 @@ import httpx import pytest from langchain_core.tools import ToolException + from langflow.components.wikipedia import WikidataComponent from langflow.custom import Component from langflow.custom.utils import build_custom_component_template diff --git a/src/backend/tests/unit/components/search/test_wikipedia_api.py b/src/backend/tests/unit/components/search/test_wikipedia_api.py index 261f6c4a4260..b9517a43a92d 100644 --- a/src/backend/tests/unit/components/search/test_wikipedia_api.py +++ b/src/backend/tests/unit/components/search/test_wikipedia_api.py @@ -1,6 +1,7 @@ from unittest.mock import MagicMock import pytest + from langflow.components.wikipedia import WikipediaComponent from langflow.custom import Component from langflow.custom.utils import build_custom_component_template diff --git a/src/backend/tests/unit/components/search/test_yfinance_tool.py b/src/backend/tests/unit/components/search/test_yfinance_tool.py index af4dce878b44..ae76e8cd6b36 100644 --- a/src/backend/tests/unit/components/search/test_yfinance_tool.py +++ b/src/backend/tests/unit/components/search/test_yfinance_tool.py @@ -2,6 +2,7 @@ import pytest from langchain_core.tools import ToolException + from langflow.components.yahoosearch.yahoo import YahooFinanceMethod, YfinanceComponent from langflow.custom.utils import build_custom_component_template from langflow.schema import Data diff --git a/src/backend/tests/unit/components/test_all_modules_importable.py b/src/backend/tests/unit/components/test_all_modules_importable.py index a0d61b7b6f49..48575ab01588 100644 --- a/src/backend/tests/unit/components/test_all_modules_importable.py +++ b/src/backend/tests/unit/components/test_all_modules_importable.py @@ -7,6 +7,7 @@ import importlib import pytest + from langflow import components diff --git a/src/backend/tests/unit/components/test_dynamic_imports.py b/src/backend/tests/unit/components/test_dynamic_imports.py index faf0a2db0754..71a27c6698fe 100644 --- a/src/backend/tests/unit/components/test_dynamic_imports.py +++ b/src/backend/tests/unit/components/test_dynamic_imports.py @@ -12,6 +12,7 @@ from unittest.mock import patch import pytest + from langflow.components._importing import import_mod diff --git a/src/backend/tests/unit/components/tools/test_calculator.py b/src/backend/tests/unit/components/tools/test_calculator.py index 451efd984d7c..86f5c6b4b80a 100644 --- a/src/backend/tests/unit/components/tools/test_calculator.py +++ b/src/backend/tests/unit/components/tools/test_calculator.py @@ -1,6 +1,6 @@ import pytest -from langflow.components.helpers.calculator_core import CalculatorComponent +from langflow.components.helpers.calculator_core import CalculatorComponent from tests.base import ComponentTestBaseWithoutClient diff --git a/src/backend/tests/unit/components/tools/test_python_repl_tool.py b/src/backend/tests/unit/components/tools/test_python_repl_tool.py index 20fa26593c98..a1a8171046e1 100644 --- a/src/backend/tests/unit/components/tools/test_python_repl_tool.py +++ b/src/backend/tests/unit/components/tools/test_python_repl_tool.py @@ -1,6 +1,6 @@ import pytest -from langflow.components.processing import PythonREPLComponent +from langflow.components.processing import PythonREPLComponent from tests.base import DID_NOT_EXIST, ComponentTestBaseWithoutClient diff --git a/src/backend/tests/unit/components/tools/test_serp_api.py b/src/backend/tests/unit/components/tools/test_serp_api.py index d7f2d905e4ff..d8523398b054 100644 --- a/src/backend/tests/unit/components/tools/test_serp_api.py +++ b/src/backend/tests/unit/components/tools/test_serp_api.py @@ -2,6 +2,7 @@ import pytest from langchain_core.tools import ToolException + from langflow.components.serpapi.serp import SerpComponent from langflow.custom import Component from langflow.custom.utils import build_custom_component_template diff --git a/src/backend/tests/unit/components/vectorstores/test_chroma_vector_store_component.py b/src/backend/tests/unit/components/vectorstores/test_chroma_vector_store_component.py index 8e1bf3ce931f..a77927cb20ba 100644 --- a/src/backend/tests/unit/components/vectorstores/test_chroma_vector_store_component.py +++ b/src/backend/tests/unit/components/vectorstores/test_chroma_vector_store_component.py @@ -3,9 +3,9 @@ from typing import Any import pytest + from langflow.components.chroma import ChromaVectorStoreComponent from langflow.schema.data import Data - from tests.base import ComponentTestBaseWithoutClient, VersionComponentMapping diff --git a/src/backend/tests/unit/components/vectorstores/test_graph_rag_component.py b/src/backend/tests/unit/components/vectorstores/test_graph_rag_component.py index 8d9cfc889f7d..028328fd5b97 100644 --- a/src/backend/tests/unit/components/vectorstores/test_graph_rag_component.py +++ b/src/backend/tests/unit/components/vectorstores/test_graph_rag_component.py @@ -5,8 +5,8 @@ from langchain_community.embeddings.fake import DeterministicFakeEmbedding from langchain_core.documents import Document from langchain_core.vectorstores.in_memory import InMemoryVectorStore -from langflow.components.datastax.graph_rag import GraphRAGComponent +from langflow.components.datastax.graph_rag import GraphRAGComponent from tests.base import ComponentTestBaseWithoutClient diff --git a/src/backend/tests/unit/components/vectorstores/test_local_db_component.py b/src/backend/tests/unit/components/vectorstores/test_local_db_component.py index f3c2a435e96f..6f706578d1ef 100644 --- a/src/backend/tests/unit/components/vectorstores/test_local_db_component.py +++ b/src/backend/tests/unit/components/vectorstores/test_local_db_component.py @@ -4,10 +4,10 @@ from unittest.mock import MagicMock, patch import pytest + from langflow.components.vectorstores.local_db import LocalDBComponent from langflow.schema.data import Data from langflow.services.cache.utils import CACHE_DIR - from tests.base import ComponentTestBaseWithoutClient, VersionComponentMapping diff --git a/src/backend/tests/unit/components/vectorstores/test_mongodb_atlas.py b/src/backend/tests/unit/components/vectorstores/test_mongodb_atlas.py index c609a949f377..020e99aaff09 100644 --- a/src/backend/tests/unit/components/vectorstores/test_mongodb_atlas.py +++ b/src/backend/tests/unit/components/vectorstores/test_mongodb_atlas.py @@ -4,10 +4,10 @@ import pytest from langchain_community.embeddings.fake import DeterministicFakeEmbedding -from langflow.components.mongodb import MongoVectorStoreComponent -from langflow.schema.data import Data from pymongo.collection import Collection +from langflow.components.mongodb import MongoVectorStoreComponent +from langflow.schema.data import Data from tests.base import ComponentTestBaseWithoutClient, VersionComponentMapping diff --git a/src/backend/tests/unit/custom/component/test_component_instance_attributes.py b/src/backend/tests/unit/custom/component/test_component_instance_attributes.py index 82e1f3142226..f846604d07de 100644 --- a/src/backend/tests/unit/custom/component/test_component_instance_attributes.py +++ b/src/backend/tests/unit/custom/component/test_component_instance_attributes.py @@ -1,4 +1,5 @@ import pytest + from langflow.components.input_output.chat import ChatInput from langflow.schema.message import Message diff --git a/src/backend/tests/unit/custom/component/test_component_loading_fix.py b/src/backend/tests/unit/custom/component/test_component_loading_fix.py index 64cbfe25a96c..c72a40af03b9 100644 --- a/src/backend/tests/unit/custom/component/test_component_loading_fix.py +++ b/src/backend/tests/unit/custom/component/test_component_loading_fix.py @@ -10,6 +10,7 @@ from unittest.mock import AsyncMock, MagicMock, patch import pytest + from langflow.interface.components import ( component_cache, get_and_cache_all_types_dict, diff --git a/src/backend/tests/unit/custom/component/test_componet_set_functionality.py b/src/backend/tests/unit/custom/component/test_componet_set_functionality.py index d6591f40f3e9..ed461cf3256f 100644 --- a/src/backend/tests/unit/custom/component/test_componet_set_functionality.py +++ b/src/backend/tests/unit/custom/component/test_componet_set_functionality.py @@ -1,4 +1,5 @@ import pytest + from langflow.custom import Component from langflow.inputs.inputs import MessageTextInput, StrInput diff --git a/src/backend/tests/unit/custom/custom_component/test_component.py b/src/backend/tests/unit/custom/custom_component/test_component.py index a14efec312c1..b2a4af382176 100644 --- a/src/backend/tests/unit/custom/custom_component/test_component.py +++ b/src/backend/tests/unit/custom/custom_component/test_component.py @@ -2,6 +2,7 @@ from unittest.mock import MagicMock import pytest + from langflow.components.crewai import CrewAIAgentComponent, SequentialTaskComponent from langflow.components.custom_component import CustomComponent from langflow.components.input_output import ChatInput, ChatOutput diff --git a/src/backend/tests/unit/custom/custom_component/test_component_events.py b/src/backend/tests/unit/custom/custom_component/test_component_events.py index 0b946b2a4c3c..1940cc981d24 100644 --- a/src/backend/tests/unit/custom/custom_component/test_component_events.py +++ b/src/backend/tests/unit/custom/custom_component/test_component_events.py @@ -5,6 +5,7 @@ from uuid import uuid4 import pytest + from langflow.custom.custom_component.component import Component from langflow.events.event_manager import EventManager from langflow.schema.content_block import ContentBlock diff --git a/src/backend/tests/unit/custom/custom_component/test_update_outputs.py b/src/backend/tests/unit/custom/custom_component/test_update_outputs.py index a1a7c39c3f91..555b60f110ac 100644 --- a/src/backend/tests/unit/custom/custom_component/test_update_outputs.py +++ b/src/backend/tests/unit/custom/custom_component/test_update_outputs.py @@ -1,4 +1,5 @@ import pytest + from langflow.base.tools.constants import TOOL_OUTPUT_DISPLAY_NAME, TOOL_OUTPUT_NAME from langflow.custom.custom_component.component import Component diff --git a/src/backend/tests/unit/custom/test_utils_metadata.py b/src/backend/tests/unit/custom/test_utils_metadata.py index 7812dc3eba9c..fae29e3ce6f2 100644 --- a/src/backend/tests/unit/custom/test_utils_metadata.py +++ b/src/backend/tests/unit/custom/test_utils_metadata.py @@ -3,6 +3,7 @@ from unittest.mock import Mock, patch import pytest + from langflow.custom.utils import ( _generate_code_hash, build_component_metadata, diff --git a/src/backend/tests/unit/events/test_event_manager.py b/src/backend/tests/unit/events/test_event_manager.py index 7fca8092d9ae..16358b45ff22 100644 --- a/src/backend/tests/unit/events/test_event_manager.py +++ b/src/backend/tests/unit/events/test_event_manager.py @@ -4,6 +4,7 @@ import uuid import pytest + from langflow.events.event_manager import EventManager from langflow.schema.log import LoggableType diff --git a/src/backend/tests/unit/graph/edge/test_edge_base.py b/src/backend/tests/unit/graph/edge/test_edge_base.py index 6b2ef79523b6..85185fa8cd06 100644 --- a/src/backend/tests/unit/graph/edge/test_edge_base.py +++ b/src/backend/tests/unit/graph/edge/test_edge_base.py @@ -1,6 +1,7 @@ import re import pytest + from langflow.components.input_output import ChatInput, ChatOutput from langflow.components.openai.openai_chat_model import OpenAIModelComponent from langflow.components.processing import PromptComponent diff --git a/src/backend/tests/unit/graph/graph/state/test_state_model.py b/src/backend/tests/unit/graph/graph/state/test_state_model.py index 735a2bc8efdf..b28dd201302d 100644 --- a/src/backend/tests/unit/graph/graph/state/test_state_model.py +++ b/src/backend/tests/unit/graph/graph/state/test_state_model.py @@ -1,10 +1,11 @@ import pytest +from pydantic import Field + from langflow.components.input_output import ChatInput, ChatOutput from langflow.graph import Graph from langflow.graph.graph.constants import Finish from langflow.graph.state.model import create_state_model from langflow.template.field.base import UNDEFINED -from pydantic import Field @pytest.fixture diff --git a/src/backend/tests/unit/graph/graph/test_base.py b/src/backend/tests/unit/graph/graph/test_base.py index a85999a7a724..af49aef541c7 100644 --- a/src/backend/tests/unit/graph/graph/test_base.py +++ b/src/backend/tests/unit/graph/graph/test_base.py @@ -1,6 +1,7 @@ from collections import deque import pytest + from langflow.components.input_output import ChatInput, ChatOutput, TextOutputComponent from langflow.components.langchain_utilities import ToolCallingAgentComponent from langflow.components.tools import YfinanceToolComponent diff --git a/src/backend/tests/unit/graph/graph/test_callback_graph.py b/src/backend/tests/unit/graph/graph/test_callback_graph.py index 88cee907f083..b0652bd70df2 100644 --- a/src/backend/tests/unit/graph/graph/test_callback_graph.py +++ b/src/backend/tests/unit/graph/graph/test_callback_graph.py @@ -1,6 +1,7 @@ import asyncio import pytest + from langflow.components.input_output import ChatOutput from langflow.custom import Component from langflow.events.event_manager import EventManager diff --git a/src/backend/tests/unit/graph/graph/test_cycles.py b/src/backend/tests/unit/graph/graph/test_cycles.py index d1b8e77860a8..7feb2d53d384 100644 --- a/src/backend/tests/unit/graph/graph/test_cycles.py +++ b/src/backend/tests/unit/graph/graph/test_cycles.py @@ -1,6 +1,7 @@ import os import pytest + from langflow.components.input_output import ChatInput, ChatOutput, TextOutputComponent from langflow.components.input_output.text import TextInputComponent from langflow.components.logic.conditional_router import ConditionalRouterComponent diff --git a/src/backend/tests/unit/graph/graph/test_graph_state_model.py b/src/backend/tests/unit/graph/graph/test_graph_state_model.py index 8d1e194534ce..f9045424173a 100644 --- a/src/backend/tests/unit/graph/graph/test_graph_state_model.py +++ b/src/backend/tests/unit/graph/graph/test_graph_state_model.py @@ -1,6 +1,7 @@ from typing import TYPE_CHECKING import pytest + from langflow.components.helpers.memory import MemoryComponent from langflow.components.input_output import ChatInput, ChatOutput from langflow.components.openai.openai_chat_model import OpenAIModelComponent diff --git a/src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py b/src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py index e775b11f870d..2186286e4293 100644 --- a/src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py +++ b/src/backend/tests/unit/graph/graph/test_runnable_vertices_manager.py @@ -2,6 +2,7 @@ from typing import TYPE_CHECKING import pytest + from langflow.graph.graph.runnable_vertices_manager import RunnableVerticesManager if TYPE_CHECKING: diff --git a/src/backend/tests/unit/graph/graph/test_utils.py b/src/backend/tests/unit/graph/graph/test_utils.py index 3c2c8990f7c6..4e51c8e54177 100644 --- a/src/backend/tests/unit/graph/graph/test_utils.py +++ b/src/backend/tests/unit/graph/graph/test_utils.py @@ -1,6 +1,7 @@ import copy import pytest + from langflow.graph.graph import utils diff --git a/src/backend/tests/unit/graph/test_graph.py b/src/backend/tests/unit/graph/test_graph.py index 159ef68195cc..a1f02ae24ccc 100644 --- a/src/backend/tests/unit/graph/test_graph.py +++ b/src/backend/tests/unit/graph/test_graph.py @@ -2,6 +2,7 @@ import json import pytest + from langflow.graph import Graph from langflow.graph.graph.utils import ( find_last_node, diff --git a/src/backend/tests/unit/graph/vertex/test_vertex_base.py b/src/backend/tests/unit/graph/vertex/test_vertex_base.py index 5b9b1935113c..665d38accaf0 100644 --- a/src/backend/tests/unit/graph/vertex/test_vertex_base.py +++ b/src/backend/tests/unit/graph/vertex/test_vertex_base.py @@ -8,6 +8,7 @@ import pandas as pd import pytest + from langflow.graph.edge.base import Edge from langflow.graph.vertex.base import ParameterHandler, Vertex from langflow.services.storage.service import StorageService diff --git a/src/backend/tests/unit/helpers/test_base_model_from_schema.py b/src/backend/tests/unit/helpers/test_base_model_from_schema.py index d07a4908e0a3..654cc595a6d1 100644 --- a/src/backend/tests/unit/helpers/test_base_model_from_schema.py +++ b/src/backend/tests/unit/helpers/test_base_model_from_schema.py @@ -3,10 +3,11 @@ from typing import Any import pytest -from langflow.helpers.base_model import build_model_from_schema from pydantic import BaseModel from pydantic_core import PydanticUndefined +from langflow.helpers.base_model import build_model_from_schema + class TestBuildModelFromSchema: # Successfully creates a Pydantic model from a valid schema diff --git a/src/backend/tests/unit/helpers/test_data.py b/src/backend/tests/unit/helpers/test_data.py index 50324da4253d..45c6ee190e2d 100644 --- a/src/backend/tests/unit/helpers/test_data.py +++ b/src/backend/tests/unit/helpers/test_data.py @@ -1,4 +1,5 @@ import pytest + from langflow.helpers.data import data_to_text_list from langflow.schema import Data diff --git a/src/backend/tests/unit/helpers/test_data_to_text_list.py b/src/backend/tests/unit/helpers/test_data_to_text_list.py index 2f87ac0ef788..d2b9e3401921 100644 --- a/src/backend/tests/unit/helpers/test_data_to_text_list.py +++ b/src/backend/tests/unit/helpers/test_data_to_text_list.py @@ -1,4 +1,5 @@ import pytest + from langflow.helpers.data import data_to_text_list from langflow.schema import Data diff --git a/src/backend/tests/unit/initial_setup/starter_projects/test_memory_chatbot.py b/src/backend/tests/unit/initial_setup/starter_projects/test_memory_chatbot.py index 43988a5fe7eb..1d27a9b88406 100644 --- a/src/backend/tests/unit/initial_setup/starter_projects/test_memory_chatbot.py +++ b/src/backend/tests/unit/initial_setup/starter_projects/test_memory_chatbot.py @@ -3,6 +3,7 @@ from typing import TYPE_CHECKING import pytest + from langflow.components.helpers.memory import MemoryComponent from langflow.components.input_output import ChatInput, ChatOutput from langflow.components.openai.openai_chat_model import OpenAIModelComponent diff --git a/src/backend/tests/unit/initial_setup/starter_projects/test_vector_store_rag.py b/src/backend/tests/unit/initial_setup/starter_projects/test_vector_store_rag.py index ba08d1d1d50e..e6479e8a8d8c 100644 --- a/src/backend/tests/unit/initial_setup/starter_projects/test_vector_store_rag.py +++ b/src/backend/tests/unit/initial_setup/starter_projects/test_vector_store_rag.py @@ -3,6 +3,7 @@ from textwrap import dedent import pytest + from langflow.components.data import FileComponent from langflow.components.datastax import AstraDBVectorStoreComponent from langflow.components.input_output import ChatInput, ChatOutput diff --git a/src/backend/tests/unit/initial_setup/test_setup_functions.py b/src/backend/tests/unit/initial_setup/test_setup_functions.py index c660e445a4aa..9e77b08a9dbd 100644 --- a/src/backend/tests/unit/initial_setup/test_setup_functions.py +++ b/src/backend/tests/unit/initial_setup/test_setup_functions.py @@ -2,6 +2,7 @@ from uuid import uuid4 import pytest + from langflow.initial_setup.setup import DEFAULT_FOLDER_NAME, get_or_create_default_folder, session_scope from langflow.services.database.models.folder.model import FolderRead diff --git a/src/backend/tests/unit/inputs/test_inputs.py b/src/backend/tests/unit/inputs/test_inputs.py index 9c5b2a4434d9..3f7edd8d1b1e 100644 --- a/src/backend/tests/unit/inputs/test_inputs.py +++ b/src/backend/tests/unit/inputs/test_inputs.py @@ -1,4 +1,6 @@ import pytest +from pydantic import ValidationError + from langflow.inputs.inputs import ( BoolInput, CodeInput, @@ -24,7 +26,6 @@ ) from langflow.inputs.utils import instantiate_input from langflow.schema.message import Message -from pydantic import ValidationError def test_table_input_valid(): diff --git a/src/backend/tests/unit/interface/initialize/test_loading.py b/src/backend/tests/unit/interface/initialize/test_loading.py index 7a08603083f6..1e44612b5334 100644 --- a/src/backend/tests/unit/interface/initialize/test_loading.py +++ b/src/backend/tests/unit/interface/initialize/test_loading.py @@ -2,6 +2,7 @@ from unittest.mock import AsyncMock, MagicMock, patch import pytest + from langflow.interface.initialize.loading import update_params_with_load_from_db_fields diff --git a/src/backend/tests/unit/io/test_io_schema.py b/src/backend/tests/unit/io/test_io_schema.py index af8e11da5bcb..22c217443834 100644 --- a/src/backend/tests/unit/io/test_io_schema.py +++ b/src/backend/tests/unit/io/test_io_schema.py @@ -1,6 +1,7 @@ from typing import TYPE_CHECKING, Literal import pytest + from langflow.components.input_output import ChatInput from langflow.inputs.inputs import DropdownInput, FileInput, IntInput, NestedDictInput, StrInput from langflow.io.schema import create_input_schema diff --git a/src/backend/tests/unit/io/test_table_schema.py b/src/backend/tests/unit/io/test_table_schema.py index 423731943098..4e08949db1e6 100644 --- a/src/backend/tests/unit/io/test_table_schema.py +++ b/src/backend/tests/unit/io/test_table_schema.py @@ -1,6 +1,7 @@ # Generated by qodo Gen import pytest + from langflow.schema.table import Column, FormatterType diff --git a/src/backend/tests/unit/schema/test_content_block.py b/src/backend/tests/unit/schema/test_content_block.py index 05a1ee0cf4f8..38f44e38976a 100644 --- a/src/backend/tests/unit/schema/test_content_block.py +++ b/src/backend/tests/unit/schema/test_content_block.py @@ -1,4 +1,5 @@ import pytest + from langflow.schema.content_block import ContentBlock from langflow.schema.content_types import CodeContent, ErrorContent, JSONContent, MediaContent, TextContent, ToolContent diff --git a/src/backend/tests/unit/schema/test_image.py b/src/backend/tests/unit/schema/test_image.py index ce7d840da837..af4a75d399d9 100644 --- a/src/backend/tests/unit/schema/test_image.py +++ b/src/backend/tests/unit/schema/test_image.py @@ -2,12 +2,13 @@ import aiofiles import pytest +from PIL import Image as PILImage + from langflow.schema.image import ( get_file_paths, get_files, is_image_file, ) -from PIL import Image as PILImage @pytest.fixture diff --git a/src/backend/tests/unit/schema/test_schema_data.py b/src/backend/tests/unit/schema/test_schema_data.py index 05e0f91452c4..863d7763a883 100644 --- a/src/backend/tests/unit/schema/test_schema_data.py +++ b/src/backend/tests/unit/schema/test_schema_data.py @@ -2,6 +2,7 @@ import pytest from langchain_core.messages import AIMessage, HumanMessage + from langflow.schema.data import Data from langflow.utils.constants import MESSAGE_SENDER_AI, MESSAGE_SENDER_USER diff --git a/src/backend/tests/unit/schema/test_schema_data_set.py b/src/backend/tests/unit/schema/test_schema_data_set.py index 68ad47f2613d..f56b34660210 100644 --- a/src/backend/tests/unit/schema/test_schema_data_set.py +++ b/src/backend/tests/unit/schema/test_schema_data_set.py @@ -1,5 +1,6 @@ import pandas as pd import pytest + from langflow.schema.data import Data from langflow.schema.dataframe import DataFrame diff --git a/src/backend/tests/unit/schema/test_schema_dataframe.py b/src/backend/tests/unit/schema/test_schema_dataframe.py index 7bd9d2ea7c88..244b6223bb83 100644 --- a/src/backend/tests/unit/schema/test_schema_dataframe.py +++ b/src/backend/tests/unit/schema/test_schema_dataframe.py @@ -1,6 +1,7 @@ import pandas as pd import pytest from langchain_core.documents import Document + from langflow.schema.data import Data from langflow.schema.dataframe import DataFrame diff --git a/src/backend/tests/unit/schema/test_schema_message.py b/src/backend/tests/unit/schema/test_schema_message.py index 885655ab77ab..c6ea8d92b726 100644 --- a/src/backend/tests/unit/schema/test_schema_message.py +++ b/src/backend/tests/unit/schema/test_schema_message.py @@ -6,10 +6,11 @@ import pytest from langchain_core.messages import AIMessage, HumanMessage from langchain_core.prompts.chat import ChatPromptTemplate +from platformdirs import user_cache_dir + from langflow.logging.logger import logger from langflow.schema.message import Message from langflow.utils.constants import MESSAGE_SENDER_AI, MESSAGE_SENDER_USER -from platformdirs import user_cache_dir @pytest.fixture diff --git a/src/backend/tests/unit/serialization/test_serialization.py b/src/backend/tests/unit/serialization/test_serialization.py index aa35c466a62c..5c721d356786 100644 --- a/src/backend/tests/unit/serialization/test_serialization.py +++ b/src/backend/tests/unit/serialization/test_serialization.py @@ -7,11 +7,12 @@ from hypothesis import given, settings from hypothesis import strategies as st from langchain_core.documents import Document -from langflow.serialization.constants import MAX_ITEMS_LENGTH, MAX_TEXT_LENGTH -from langflow.serialization.serialization import serialize, serialize_or_str from pydantic import BaseModel as PydanticBaseModel from pydantic.v1 import BaseModel as PydanticV1BaseModel +from langflow.serialization.constants import MAX_ITEMS_LENGTH, MAX_TEXT_LENGTH +from langflow.serialization.serialization import serialize, serialize_or_str + # Comprehensive hypothesis strategies text_strategy = st.text(min_size=0, max_size=MAX_TEXT_LENGTH * 3) bytes_strategy = st.binary(min_size=0, max_size=MAX_TEXT_LENGTH * 3) diff --git a/src/backend/tests/unit/services/auth/test_mcp_encryption.py b/src/backend/tests/unit/services/auth/test_mcp_encryption.py index 2c609f7dde57..f65f7f188a23 100644 --- a/src/backend/tests/unit/services/auth/test_mcp_encryption.py +++ b/src/backend/tests/unit/services/auth/test_mcp_encryption.py @@ -4,12 +4,13 @@ import pytest from cryptography.fernet import Fernet +from pydantic import SecretStr + from langflow.services.auth.mcp_encryption import ( decrypt_auth_settings, encrypt_auth_settings, is_encrypted, ) -from pydantic import SecretStr @pytest.fixture diff --git a/src/backend/tests/unit/services/database/test_vertex_builds.py b/src/backend/tests/unit/services/database/test_vertex_builds.py index 2febb46a6c77..fd8fd4ad827b 100644 --- a/src/backend/tests/unit/services/database/test_vertex_builds.py +++ b/src/backend/tests/unit/services/database/test_vertex_builds.py @@ -3,11 +3,12 @@ from uuid import uuid4 import pytest +from sqlalchemy import delete, func, select +from sqlalchemy.ext.asyncio import AsyncSession + from langflow.services.database.models.vertex_builds.crud import log_vertex_build from langflow.services.database.models.vertex_builds.model import VertexBuildBase, VertexBuildTable from langflow.services.settings.base import Settings -from sqlalchemy import delete, func, select -from sqlalchemy.ext.asyncio import AsyncSession @pytest.fixture(autouse=True) diff --git a/src/backend/tests/unit/services/flow/test_flow_runner.py b/src/backend/tests/unit/services/flow/test_flow_runner.py index fb047441cdab..5e3bb60f7c8e 100644 --- a/src/backend/tests/unit/services/flow/test_flow_runner.py +++ b/src/backend/tests/unit/services/flow/test_flow_runner.py @@ -1,6 +1,7 @@ from uuid import uuid4 import pytest + from langflow.services.flow.flow_runner import LangflowRunnerExperimental diff --git a/src/backend/tests/unit/services/tasks/test_temp_flow_cleanup.py b/src/backend/tests/unit/services/tasks/test_temp_flow_cleanup.py index 4b0c82c54842..5d45c6718262 100644 --- a/src/backend/tests/unit/services/tasks/test_temp_flow_cleanup.py +++ b/src/backend/tests/unit/services/tasks/test_temp_flow_cleanup.py @@ -5,6 +5,7 @@ from uuid import uuid4 import pytest + from langflow.services.database.models.flow import Flow as FlowTable from langflow.services.database.models.message.model import MessageTable from langflow.services.deps import get_settings_service, get_storage_service, session_scope diff --git a/src/backend/tests/unit/services/tracing/test_tracing_service.py b/src/backend/tests/unit/services/tracing/test_tracing_service.py index 9eb1530a73b6..c119df554900 100644 --- a/src/backend/tests/unit/services/tracing/test_tracing_service.py +++ b/src/backend/tests/unit/services/tracing/test_tracing_service.py @@ -3,6 +3,7 @@ from unittest.mock import AsyncMock, MagicMock, patch import pytest + from langflow.services.settings.base import Settings from langflow.services.settings.service import SettingsService from langflow.services.tracing.base import BaseTracer diff --git a/src/backend/tests/unit/services/variable/test_service.py b/src/backend/tests/unit/services/variable/test_service.py index fd7a66ba1a99..ddac0b3588a0 100644 --- a/src/backend/tests/unit/services/variable/test_service.py +++ b/src/backend/tests/unit/services/variable/test_service.py @@ -3,14 +3,15 @@ from uuid import uuid4 import pytest +from sqlalchemy.ext.asyncio import create_async_engine +from sqlmodel import SQLModel +from sqlmodel.ext.asyncio.session import AsyncSession + from langflow.services.database.models.variable.model import VariableUpdate from langflow.services.deps import get_settings_service from langflow.services.settings.constants import VARIABLES_TO_GET_FROM_ENVIRONMENT from langflow.services.variable.constants import CREDENTIAL_TYPE from langflow.services.variable.service import DatabaseVariableService -from sqlalchemy.ext.asyncio import create_async_engine -from sqlmodel import SQLModel -from sqlmodel.ext.asyncio.session import AsyncSession @pytest.fixture diff --git a/src/backend/tests/unit/test_api_key.py b/src/backend/tests/unit/test_api_key.py index d3358f873486..0177bdbe0ede 100644 --- a/src/backend/tests/unit/test_api_key.py +++ b/src/backend/tests/unit/test_api_key.py @@ -1,5 +1,6 @@ import pytest from httpx import AsyncClient + from langflow.services.database.models.api_key import ApiKeyCreate diff --git a/src/backend/tests/unit/test_async_helpers.py b/src/backend/tests/unit/test_async_helpers.py index 6b307eae0126..bf6c84d169a8 100644 --- a/src/backend/tests/unit/test_async_helpers.py +++ b/src/backend/tests/unit/test_async_helpers.py @@ -6,6 +6,7 @@ from unittest.mock import patch import pytest + from langflow.utils.async_helpers import run_until_complete diff --git a/src/backend/tests/unit/test_auth_settings.py b/src/backend/tests/unit/test_auth_settings.py index 5ce303be9c72..9509e6ab8d78 100644 --- a/src/backend/tests/unit/test_auth_settings.py +++ b/src/backend/tests/unit/test_auth_settings.py @@ -1,9 +1,10 @@ from pathlib import Path import pytest +from pydantic import SecretStr + from langflow.services.settings.auth import AuthSettings from langflow.services.settings.constants import DEFAULT_SUPERUSER, DEFAULT_SUPERUSER_PASSWORD -from pydantic import SecretStr @pytest.mark.parametrize("auto_login", [True, False]) diff --git a/src/backend/tests/unit/test_chat_endpoint.py b/src/backend/tests/unit/test_chat_endpoint.py index acbf68f61a18..a34cfdee05ee 100644 --- a/src/backend/tests/unit/test_chat_endpoint.py +++ b/src/backend/tests/unit/test_chat_endpoint.py @@ -5,10 +5,10 @@ import pytest from httpx import codes + from langflow.logging.logger import logger from langflow.memory import aget_messages from langflow.services.database.models.flow import FlowUpdate - from tests.unit.build_utils import build_flow, consume_and_assert_stream, create_flow, get_build_events diff --git a/src/backend/tests/unit/test_cli.py b/src/backend/tests/unit/test_cli.py index 46b7ce2442fb..a8d59190d614 100644 --- a/src/backend/tests/unit/test_cli.py +++ b/src/backend/tests/unit/test_cli.py @@ -5,6 +5,7 @@ import pytest import typer + from langflow.__main__ import _create_superuser, app from langflow.services import deps diff --git a/src/backend/tests/unit/test_code_hash.py b/src/backend/tests/unit/test_code_hash.py index cfbc5fdc0c2d..74536d19e809 100644 --- a/src/backend/tests/unit/test_code_hash.py +++ b/src/backend/tests/unit/test_code_hash.py @@ -1,6 +1,7 @@ """Test code hash and module metadata functionality.""" import pytest + from langflow.interface.components import import_langflow_components diff --git a/src/backend/tests/unit/test_custom_component.py b/src/backend/tests/unit/test_custom_component.py index f4a098eb2a15..d9511a4bd7b4 100644 --- a/src/backend/tests/unit/test_custom_component.py +++ b/src/backend/tests/unit/test_custom_component.py @@ -5,6 +5,7 @@ import pytest from langchain_core.documents import Document + from langflow.custom import Component, CustomComponent from langflow.custom.code_parser.code_parser import CodeParser, CodeSyntaxError from langflow.custom.custom_component.base_component import BaseComponent, ComponentCodeNullError diff --git a/src/backend/tests/unit/test_custom_component_with_client.py b/src/backend/tests/unit/test_custom_component_with_client.py index 30d639aca2a9..a8b5d0c041b1 100644 --- a/src/backend/tests/unit/test_custom_component_with_client.py +++ b/src/backend/tests/unit/test_custom_component_with_client.py @@ -1,4 +1,5 @@ import pytest + from langflow.custom.custom_component.custom_component import CustomComponent from langflow.field_typing.constants import Data diff --git a/src/backend/tests/unit/test_data_class.py b/src/backend/tests/unit/test_data_class.py index 03fc80cffaab..3fd9f497b9fa 100644 --- a/src/backend/tests/unit/test_data_class.py +++ b/src/backend/tests/unit/test_data_class.py @@ -2,6 +2,7 @@ import pytest from langchain_core.documents import Document + from langflow.schema import Data diff --git a/src/backend/tests/unit/test_database.py b/src/backend/tests/unit/test_database.py index 7f93d6aadc93..4e8f842f8ca6 100644 --- a/src/backend/tests/unit/test_database.py +++ b/src/backend/tests/unit/test_database.py @@ -5,6 +5,8 @@ import orjson import pytest from httpx import AsyncClient +from sqlalchemy import text + from langflow.api.v1.schemas import FlowListCreate, ResultDataResponse from langflow.graph.utils import log_transaction, log_vertex_build from langflow.initial_setup.setup import load_starter_projects @@ -13,7 +15,6 @@ from langflow.services.database.models.folder.model import FolderCreate from langflow.services.database.utils import session_getter from langflow.services.deps import get_db_service -from sqlalchemy import text @pytest.fixture(scope="module") diff --git a/src/backend/tests/unit/test_endpoints.py b/src/backend/tests/unit/test_endpoints.py index f9a9108c80ec..3173f74a2f10 100644 --- a/src/backend/tests/unit/test_endpoints.py +++ b/src/backend/tests/unit/test_endpoints.py @@ -5,6 +5,7 @@ import pytest from fastapi import status from httpx import AsyncClient + from langflow.custom.directory_reader.directory_reader import DirectoryReader from langflow.services.settings.base import BASE_COMPONENTS_PATH diff --git a/src/backend/tests/unit/test_exception_telemetry.py b/src/backend/tests/unit/test_exception_telemetry.py index 23cc5f54a736..c724d4c62383 100644 --- a/src/backend/tests/unit/test_exception_telemetry.py +++ b/src/backend/tests/unit/test_exception_telemetry.py @@ -5,6 +5,7 @@ from unittest.mock import AsyncMock, MagicMock import pytest + from langflow.services.telemetry.schema import ExceptionPayload from langflow.services.telemetry.service import TelemetryService diff --git a/src/backend/tests/unit/test_frontend_nodes.py b/src/backend/tests/unit/test_frontend_nodes.py index 0a4123f10072..97a3db984767 100644 --- a/src/backend/tests/unit/test_frontend_nodes.py +++ b/src/backend/tests/unit/test_frontend_nodes.py @@ -1,4 +1,5 @@ import pytest + from langflow.template.field.base import Input from langflow.template.frontend_node.base import FrontendNode from langflow.template.template.base import Template diff --git a/src/backend/tests/unit/test_import_utils.py b/src/backend/tests/unit/test_import_utils.py index 3c9cc63bf51f..3927de6cb625 100644 --- a/src/backend/tests/unit/test_import_utils.py +++ b/src/backend/tests/unit/test_import_utils.py @@ -6,6 +6,7 @@ from unittest.mock import patch import pytest + from langflow.components._importing import import_mod diff --git a/src/backend/tests/unit/test_initial_setup.py b/src/backend/tests/unit/test_initial_setup.py index 5993aa94dfe3..097239642034 100644 --- a/src/backend/tests/unit/test_initial_setup.py +++ b/src/backend/tests/unit/test_initial_setup.py @@ -8,6 +8,9 @@ import pytest from anyio import Path from httpx import AsyncClient +from sqlalchemy.orm import selectinload +from sqlmodel import select + from langflow.custom.directory_reader.utils import abuild_custom_component_list_from_path from langflow.initial_setup.constants import STARTER_FOLDER_NAME from langflow.initial_setup.setup import ( @@ -22,8 +25,6 @@ from langflow.services.database.models import Flow from langflow.services.database.models.folder.model import Folder from langflow.services.deps import get_settings_service, session_scope -from sqlalchemy.orm import selectinload -from sqlmodel import select async def test_load_starter_projects(): diff --git a/src/backend/tests/unit/test_kubernetes_secrets.py b/src/backend/tests/unit/test_kubernetes_secrets.py index 9da44cdef82a..7598cad2c788 100644 --- a/src/backend/tests/unit/test_kubernetes_secrets.py +++ b/src/backend/tests/unit/test_kubernetes_secrets.py @@ -4,6 +4,7 @@ import pytest from kubernetes.client import V1ObjectMeta, V1Secret + from langflow.services.variable.kubernetes_secrets import KubernetesSecretManager, encode_user_id diff --git a/src/backend/tests/unit/test_load_components.py b/src/backend/tests/unit/test_load_components.py index 406d7055da0d..c2cbe860cbef 100644 --- a/src/backend/tests/unit/test_load_components.py +++ b/src/backend/tests/unit/test_load_components.py @@ -3,6 +3,7 @@ import time import pytest + from langflow.interface.components import aget_all_types_dict, import_langflow_components from langflow.services.settings.base import BASE_COMPONENTS_PATH diff --git a/src/backend/tests/unit/test_logger.py b/src/backend/tests/unit/test_logger.py index abf3f288ef67..0984637c0663 100644 --- a/src/backend/tests/unit/test_logger.py +++ b/src/backend/tests/unit/test_logger.py @@ -20,6 +20,7 @@ import pytest import structlog + from langflow.logging.logger import ( LOG_LEVEL_MAP, VALID_LOG_LEVELS, diff --git a/src/backend/tests/unit/test_login.py b/src/backend/tests/unit/test_login.py index e22016267f76..86bd03d12480 100644 --- a/src/backend/tests/unit/test_login.py +++ b/src/backend/tests/unit/test_login.py @@ -1,8 +1,9 @@ import pytest +from sqlalchemy.exc import IntegrityError + from langflow.services.auth.utils import get_password_hash from langflow.services.database.models.user import User from langflow.services.deps import session_scope -from sqlalchemy.exc import IntegrityError @pytest.fixture diff --git a/src/backend/tests/unit/test_messages.py b/src/backend/tests/unit/test_messages.py index dfdde84bb5a7..0c2a38cd6d38 100644 --- a/src/backend/tests/unit/test_messages.py +++ b/src/backend/tests/unit/test_messages.py @@ -2,6 +2,7 @@ from uuid import UUID, uuid4 import pytest + from langflow.memory import ( aadd_messages, aadd_messagetables, diff --git a/src/backend/tests/unit/test_messages_endpoints.py b/src/backend/tests/unit/test_messages_endpoints.py index 9b72c90ceed2..243dc847936e 100644 --- a/src/backend/tests/unit/test_messages_endpoints.py +++ b/src/backend/tests/unit/test_messages_endpoints.py @@ -4,6 +4,7 @@ import pytest from httpx import AsyncClient + from langflow.memory import aadd_messagetables # Assuming you have these imports available diff --git a/src/backend/tests/unit/test_schema.py b/src/backend/tests/unit/test_schema.py index c48431e0564a..8ea756637e11 100644 --- a/src/backend/tests/unit/test_schema.py +++ b/src/backend/tests/unit/test_schema.py @@ -3,13 +3,14 @@ from typing import Union import pytest +from pydantic import BaseModel, Field, ValidationError + from langflow.inputs.inputs import BoolInput, DictInput, FloatInput, InputTypes, IntInput, MessageTextInput from langflow.io.schema import schema_to_langflow_inputs from langflow.schema.data import Data from langflow.template import Input, Output from langflow.template.field.base import UNDEFINED from langflow.type_extraction.type_extraction import post_process_type -from pydantic import BaseModel, Field, ValidationError class TestInput: diff --git a/src/backend/tests/unit/test_session_endpoint.py b/src/backend/tests/unit/test_session_endpoint.py index ca20a2b09466..9a5fc766e23d 100644 --- a/src/backend/tests/unit/test_session_endpoint.py +++ b/src/backend/tests/unit/test_session_endpoint.py @@ -2,6 +2,7 @@ import pytest from httpx import AsyncClient + from langflow.memory import aadd_messagetables from langflow.services.database.models.message.model import MessageTable from langflow.services.deps import session_scope diff --git a/src/backend/tests/unit/test_setup_superuser.py b/src/backend/tests/unit/test_setup_superuser.py index 8e470165f7f9..fe4edfc5183e 100644 --- a/src/backend/tests/unit/test_setup_superuser.py +++ b/src/backend/tests/unit/test_setup_superuser.py @@ -2,6 +2,8 @@ from unittest.mock import AsyncMock, MagicMock, patch import pytest +from sqlalchemy.exc import IntegrityError + from langflow.services.auth.utils import create_super_user from langflow.services.database.models.user.model import User from langflow.services.settings.constants import ( @@ -9,7 +11,6 @@ DEFAULT_SUPERUSER_PASSWORD, ) from langflow.services.utils import teardown_superuser -from sqlalchemy.exc import IntegrityError # @patch("langflow.services.deps.get_session") # @patch("langflow.services.utils.create_super_user") diff --git a/src/backend/tests/unit/test_setup_superuser_flow.py b/src/backend/tests/unit/test_setup_superuser_flow.py index f6363b6dd4cc..47c67a82a515 100644 --- a/src/backend/tests/unit/test_setup_superuser_flow.py +++ b/src/backend/tests/unit/test_setup_superuser_flow.py @@ -1,10 +1,11 @@ import pytest +from sqlmodel import select + from langflow.services.auth.utils import verify_password from langflow.services.database.models.user.model import User from langflow.services.deps import get_db_service, get_settings_service from langflow.services.settings.constants import DEFAULT_SUPERUSER, DEFAULT_SUPERUSER_PASSWORD from langflow.services.utils import initialize_services, setup_superuser, teardown_superuser -from sqlmodel import select @pytest.mark.asyncio diff --git a/src/backend/tests/unit/test_telemetry.py b/src/backend/tests/unit/test_telemetry.py index ad56a0cb77e3..1e66113b43f7 100644 --- a/src/backend/tests/unit/test_telemetry.py +++ b/src/backend/tests/unit/test_telemetry.py @@ -3,6 +3,7 @@ from concurrent.futures import ThreadPoolExecutor, as_completed import pytest + from langflow.services.telemetry.opentelemetry import OpenTelemetry fixed_labels = {"flow_id": "this_flow_id", "service": "this", "user": "that"} diff --git a/src/backend/tests/unit/test_template.py b/src/backend/tests/unit/test_template.py index 6b2127178017..30dd0bb8ce74 100644 --- a/src/backend/tests/unit/test_template.py +++ b/src/backend/tests/unit/test_template.py @@ -1,9 +1,10 @@ import importlib import pytest -from langflow.utils.util import build_template_from_function, get_base_classes, get_default_factory from pydantic import BaseModel +from langflow.utils.util import build_template_from_function, get_base_classes, get_default_factory + # Dummy classes for testing purposes class Parent(BaseModel): diff --git a/src/backend/tests/unit/test_user.py b/src/backend/tests/unit/test_user.py index b04fed9cca99..ddf4652be456 100644 --- a/src/backend/tests/unit/test_user.py +++ b/src/backend/tests/unit/test_user.py @@ -2,13 +2,14 @@ import pytest from httpx import AsyncClient +from sqlmodel import select + from langflow.services.auth.utils import create_super_user, get_password_hash from langflow.services.database.models.user import UserUpdate from langflow.services.database.models.user.model import User from langflow.services.database.utils import session_getter from langflow.services.deps import get_db_service, get_settings_service from langflow.services.settings.constants import DEFAULT_SUPERUSER -from sqlmodel import select @pytest.fixture diff --git a/src/backend/tests/unit/test_validate_code.py b/src/backend/tests/unit/test_validate_code.py index 0e9394efa1c3..cbdb884dbfc5 100644 --- a/src/backend/tests/unit/test_validate_code.py +++ b/src/backend/tests/unit/test_validate_code.py @@ -2,6 +2,8 @@ from unittest import mock import pytest +from requests.exceptions import MissingSchema + from langflow.utils.validate import ( create_class, create_function, @@ -9,7 +11,6 @@ extract_function_name, validate_code, ) -from requests.exceptions import MissingSchema def test_create_function(): diff --git a/src/backend/tests/unit/utils/test_connection_string_parser.py b/src/backend/tests/unit/utils/test_connection_string_parser.py index 7492b4162c62..d6d9d1d1f29f 100644 --- a/src/backend/tests/unit/utils/test_connection_string_parser.py +++ b/src/backend/tests/unit/utils/test_connection_string_parser.py @@ -1,4 +1,5 @@ import pytest + from langflow.utils.connection_string_parser import transform_connection_string diff --git a/src/backend/tests/unit/utils/test_format_directory_path.py b/src/backend/tests/unit/utils/test_format_directory_path.py index 16ff40080b88..d2e8624c89bd 100644 --- a/src/backend/tests/unit/utils/test_format_directory_path.py +++ b/src/backend/tests/unit/utils/test_format_directory_path.py @@ -1,4 +1,5 @@ import pytest + from langflow.base.data.utils import format_directory_path diff --git a/src/backend/tests/unit/utils/test_image_utils.py b/src/backend/tests/unit/utils/test_image_utils.py index 31c2432aba3e..50c9b8832647 100644 --- a/src/backend/tests/unit/utils/test_image_utils.py +++ b/src/backend/tests/unit/utils/test_image_utils.py @@ -1,6 +1,7 @@ import base64 import pytest + from langflow.utils.image import convert_image_to_base64, create_data_url, create_image_content_dict diff --git a/src/backend/tests/unit/utils/test_interface_utils.py b/src/backend/tests/unit/utils/test_interface_utils.py index e1d7e7e85778..73de147063f0 100644 --- a/src/backend/tests/unit/utils/test_interface_utils.py +++ b/src/backend/tests/unit/utils/test_interface_utils.py @@ -1,4 +1,5 @@ import pytest + from langflow.interface.utils import extract_input_variables_from_prompt diff --git a/src/backend/tests/unit/utils/test_rewrite_file_path.py b/src/backend/tests/unit/utils/test_rewrite_file_path.py index bb30280e2b8a..8c84e32ae212 100644 --- a/src/backend/tests/unit/utils/test_rewrite_file_path.py +++ b/src/backend/tests/unit/utils/test_rewrite_file_path.py @@ -1,4 +1,5 @@ import pytest + from langflow.base.data.utils import format_directory_path diff --git a/src/backend/tests/unit/utils/test_template_validation.py b/src/backend/tests/unit/utils/test_template_validation.py index 0ef3f859d07c..c04e3f63cfa9 100644 --- a/src/backend/tests/unit/utils/test_template_validation.py +++ b/src/backend/tests/unit/utils/test_template_validation.py @@ -4,6 +4,7 @@ from unittest.mock import AsyncMock, Mock, patch import pytest + from langflow.utils.template_validation import ( _validate_event_stream, validate_flow_can_build, diff --git a/src/backend/tests/unit/utils/test_truncate_long_strings.py b/src/backend/tests/unit/utils/test_truncate_long_strings.py index bdb9d855d9a0..b4434c13e85d 100644 --- a/src/backend/tests/unit/utils/test_truncate_long_strings.py +++ b/src/backend/tests/unit/utils/test_truncate_long_strings.py @@ -1,6 +1,7 @@ import math import pytest + from langflow.serialization.constants import MAX_TEXT_LENGTH from langflow.utils.util_strings import truncate_long_strings diff --git a/src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py b/src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py index 20af26e6dbfe..d219526f55ff 100644 --- a/src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py +++ b/src/backend/tests/unit/utils/test_truncate_long_strings_on_objects.py @@ -1,4 +1,5 @@ import pytest + from langflow.serialization.constants import MAX_TEXT_LENGTH from langflow.utils.util_strings import truncate_long_strings diff --git a/src/backend/tests/unit/utils/test_util_strings.py b/src/backend/tests/unit/utils/test_util_strings.py index 364148d38424..2d8dbd897240 100644 --- a/src/backend/tests/unit/utils/test_util_strings.py +++ b/src/backend/tests/unit/utils/test_util_strings.py @@ -1,4 +1,5 @@ import pytest + from langflow.utils import util_strings diff --git a/src/backend/tests/unit/utils/test_validate.py b/src/backend/tests/unit/utils/test_validate.py index c1aca478887f..e21f1704dcd9 100644 --- a/src/backend/tests/unit/utils/test_validate.py +++ b/src/backend/tests/unit/utils/test_validate.py @@ -5,6 +5,7 @@ from unittest.mock import Mock, patch import pytest + from langflow.utils.validate import ( _create_langflow_execution_context, add_type_ignores,