From 69dde9c4e9f36dbd6c376078aeb5e7c0ac7a559e Mon Sep 17 00:00:00 2001 From: cristhianzl Date: Thu, 24 Oct 2024 10:53:32 -0300 Subject: [PATCH 01/12] =?UTF-8?q?=E2=9C=A8=20(authContext.tsx):=20Add=20fu?= =?UTF-8?q?nctionality=20to=20fetch=20global=20variables=20on=20authentica?= =?UTF-8?q?tion=20=F0=9F=94=A7=20(api.tsx):=20Replace=20universal-cookie?= =?UTF-8?q?=20import=20with=20react-cookie=20for=20consistency=20?= =?UTF-8?q?=F0=9F=94=A7=20(authStore.ts):=20Replace=20universal-cookie=20i?= =?UTF-8?q?mport=20with=20react-cookie=20for=20consistency=20=F0=9F=94=A7?= =?UTF-8?q?=20(use-get-global-variables.ts):=20Add=20check=20to=20only=20f?= =?UTF-8?q?etch=20global=20variables=20if=20user=20is=20authenticated=20?= =?UTF-8?q?=E2=9C=A8=20(use-get-mutation-global-variables.ts):=20Add=20mut?= =?UTF-8?q?ation=20function=20to=20fetch=20and=20update=20global=20variabl?= =?UTF-8?q?es=20=F0=9F=94=A7=20(authStore.ts):=20Replace=20universal-cooki?= =?UTF-8?q?e=20import=20with=20react-cookie=20for=20consistency?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/frontend/src/contexts/authContext.tsx | 9 ++++- src/frontend/src/controllers/API/api.tsx | 20 +++++++---- .../variables/use-get-global-variables.ts | 4 +++ .../use-get-mutation-global-variables.ts | 33 +++++++++++++++++++ src/frontend/src/stores/authStore.ts | 2 +- 5 files changed, 59 insertions(+), 9 deletions(-) create mode 100644 src/frontend/src/controllers/API/queries/variables/use-get-mutation-global-variables.ts diff --git a/src/frontend/src/contexts/authContext.tsx b/src/frontend/src/contexts/authContext.tsx index 5a80266294d..cb8108001d1 100644 --- a/src/frontend/src/contexts/authContext.tsx +++ b/src/frontend/src/contexts/authContext.tsx @@ -5,9 +5,10 @@ import { LANGFLOW_REFRESH_TOKEN, } from "@/constants/constants"; import { useGetUserData } from "@/controllers/API/queries/auth"; +import { useGetGlobalVariablesMutation } from "@/controllers/API/queries/variables/use-get-mutation-global-variables"; import useAuthStore from "@/stores/authStore"; import { createContext, useEffect, useState } from "react"; -import Cookies from "universal-cookie"; +import { Cookies } from "react-cookie"; import { useStoreStore } from "../stores/storeStore"; import { Users } from "../types/api"; import { AuthContextType } from "../types/contexts/auth"; @@ -41,6 +42,7 @@ export function AuthProvider({ children }): React.ReactElement { const setIsAuthenticated = useAuthStore((state) => state.setIsAuthenticated); const { mutate: mutateLoggedUser } = useGetUserData(); + const { mutate: mutateGetGlobalVariables } = useGetGlobalVariablesMutation(); useEffect(() => { const storedAccessToken = cookies.get(LANGFLOW_ACCESS_TOKEN); @@ -86,12 +88,17 @@ export function AuthProvider({ children }): React.ReactElement { setAccessToken(newAccessToken); setIsAuthenticated(true); getUser(); + getGlobalVariables(); } function storeApiKey(apikey: string) { setApiKey(apikey); } + function getGlobalVariables() { + mutateGetGlobalVariables({}); + } + return ( // !! to convert string to boolean state.autoLogin); const setErrorData = useAlertStore((state) => state.setErrorData); - let { accessToken, authenticationErrorCount } = useContext(AuthContext); + const accessToken = useAuthStore((state) => state.accessToken); + const authenticationErrorCount = useAuthStore( + (state) => state.authenticationErrorCount, + ); + const setAuthenticationErrorCount = useAuthStore( + (state) => state.setAuthenticationErrorCount, + ); + const { mutate: mutationLogout } = useLogout(); const { mutate: mutationRenewAccessToken } = useRefreshAccessToken(); const isLoginPage = location.pathname.includes("login"); @@ -149,10 +155,10 @@ function ApiInterceptor() { function checkErrorCount() { if (isLoginPage) return; - authenticationErrorCount = authenticationErrorCount + 1; + setAuthenticationErrorCount(authenticationErrorCount + 1); if (authenticationErrorCount > 3) { - authenticationErrorCount = 0; + setAuthenticationErrorCount(0); mutationLogout(); return false; } @@ -169,9 +175,9 @@ function ApiInterceptor() { } mutationRenewAccessToken(undefined, { onSuccess: async () => { - authenticationErrorCount = 0; + setAuthenticationErrorCount(0); await remakeRequest(error); - authenticationErrorCount = 0; + setAuthenticationErrorCount(0); }, onError: (error) => { console.error(error); diff --git a/src/frontend/src/controllers/API/queries/variables/use-get-global-variables.ts b/src/frontend/src/controllers/API/queries/variables/use-get-global-variables.ts index dbb400a3963..431cdec85b2 100644 --- a/src/frontend/src/controllers/API/queries/variables/use-get-global-variables.ts +++ b/src/frontend/src/controllers/API/queries/variables/use-get-global-variables.ts @@ -1,3 +1,4 @@ +import useAuthStore from "@/stores/authStore"; import { useGlobalVariablesStore } from "@/stores/globalVariablesStore/globalVariables"; import getUnavailableFields from "@/stores/globalVariablesStore/utils/get-unavailable-fields"; import { useQueryFunctionType } from "@/types/api"; @@ -20,7 +21,10 @@ export const useGetGlobalVariables: useQueryFunctionType< (state) => state.setUnavailableFields, ); + const isAuthenticated = useAuthStore((state) => state.isAuthenticated); + const getGlobalVariablesFn = async (): Promise => { + if (!isAuthenticated) return []; const res = await api.get(`${getURL("VARIABLES")}/`); setGlobalVariablesEntries(res.data.map((entry) => entry.name)); setUnavailableFields(getUnavailableFields(res.data)); diff --git a/src/frontend/src/controllers/API/queries/variables/use-get-mutation-global-variables.ts b/src/frontend/src/controllers/API/queries/variables/use-get-mutation-global-variables.ts new file mode 100644 index 00000000000..c3cac686c65 --- /dev/null +++ b/src/frontend/src/controllers/API/queries/variables/use-get-mutation-global-variables.ts @@ -0,0 +1,33 @@ +import { useGlobalVariablesStore } from "@/stores/globalVariablesStore/globalVariables"; +import getUnavailableFields from "@/stores/globalVariablesStore/utils/get-unavailable-fields"; +import { useMutationFunctionType } from "@/types/api"; +import { GlobalVariable } from "@/types/global_variables"; +import { UseMutationOptions, UseMutationResult } from "@tanstack/react-query"; +import { api } from "../../api"; +import { getURL } from "../../helpers/constants"; +import { UseRequestProcessor } from "../../services/request-processor"; + +export const useGetGlobalVariablesMutation: useMutationFunctionType< + undefined +> = (options?) => { + const { mutate } = UseRequestProcessor(); + + const setGlobalVariablesEntries = useGlobalVariablesStore( + (state) => state.setGlobalVariablesEntries, + ); + const setUnavailableFields = useGlobalVariablesStore( + (state) => state.setUnavailableFields, + ); + + const getGlobalVariablesFn = async (): Promise => { + const res = await api.get(`${getURL("VARIABLES")}/`); + setGlobalVariablesEntries(res.data.map((entry) => entry.name)); + setUnavailableFields(getUnavailableFields(res.data)); + return res.data; + }; + + const mutation: UseMutationResult = + mutate(["useGetGlobalVariables"], getGlobalVariablesFn, options); + + return mutation; +}; diff --git a/src/frontend/src/stores/authStore.ts b/src/frontend/src/stores/authStore.ts index a588ed4c0a2..40282c6742e 100644 --- a/src/frontend/src/stores/authStore.ts +++ b/src/frontend/src/stores/authStore.ts @@ -1,7 +1,7 @@ // authStore.js import { LANGFLOW_ACCESS_TOKEN } from "@/constants/constants"; import { AuthStoreType } from "@/types/zustand/auth"; -import Cookies from "universal-cookie"; +import { Cookies } from "react-cookie"; import { create } from "zustand"; const cookies = new Cookies(); From 08d40da13e4350b93b7f7d892fdea32f81f00818 Mon Sep 17 00:00:00 2001 From: cristhianzl Date: Thu, 24 Oct 2024 13:30:35 -0300 Subject: [PATCH 02/12] =?UTF-8?q?=F0=9F=93=9D=20(endpoints.py):=20add=20fe?= =?UTF-8?q?ature=5Fflags=20field=20to=20ConfigResponse=20schema=20?= =?UTF-8?q?=F0=9F=93=9D=20(endpoints.py):=20modify=20get=5Fconfig=20functi?= =?UTF-8?q?on=20to=20include=20feature=5Fflags=20in=20the=20response=20?= =?UTF-8?q?=F0=9F=93=9D=20(feature=5Fflags.py):=20add=20mvp=5Fcomponents?= =?UTF-8?q?=20field=20to=20FeatureFlags=20settings=20=F0=9F=93=9D=20(schem?= =?UTF-8?q?as.py):=20add=20feature=5Fflags=20field=20to=20ConfigResponse?= =?UTF-8?q?=20schema?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/base/langflow/api/v1/endpoints.py | 4 +++- src/backend/base/langflow/api/v1/schemas.py | 1 + .../base/langflow/services/settings/feature_flags.py | 1 + src/backend/tests/conftest.py | 10 +++++----- .../backward_compatibility/test_starter_projects.py | 2 +- .../components/astra/test_astra_component.py | 2 +- .../components/helpers/test_parse_json_data.py | 2 +- .../integration/components/inputs/test_chat_input.py | 2 +- .../integration/components/inputs/test_text_input.py | 2 +- .../components/output_parsers/test_output_parser.py | 2 +- .../integration/components/outputs/test_chat_output.py | 2 +- .../integration/components/outputs/test_text_output.py | 2 +- .../integration/components/prompts/test_prompt.py | 2 +- .../tests/integration/flows/test_basic_prompting.py | 2 +- src/backend/tests/integration/test_misc.py | 1 + src/backend/tests/integration/utils.py | 1 + .../tests/unit/base/tools/test_component_toolkit.py | 1 + .../helpers/test_structured_output_component.py | 5 +++-- .../components/models/test_chatollama_component.py | 1 + .../prototypes/test_create_data_component.py | 1 + .../prototypes/test_update_data_component.py | 1 + .../unit/custom/custom_component/test_component.py | 1 + src/backend/tests/unit/events/test_event_manager.py | 1 + src/backend/tests/unit/graph/edge/test_edge_base.py | 1 + .../tests/unit/graph/graph/state/test_state_model.py | 3 ++- src/backend/tests/unit/graph/graph/test_base.py | 1 + src/backend/tests/unit/graph/graph/test_cycles.py | 1 + .../tests/unit/graph/graph/test_graph_state_model.py | 1 + .../unit/graph/graph/test_runnable_vertices_manager.py | 1 + src/backend/tests/unit/graph/graph/test_utils.py | 1 + src/backend/tests/unit/graph/test_graph.py | 1 + .../tests/unit/helpers/test_base_model_from_schema.py | 3 ++- .../starter_projects/test_memory_chatbot.py | 1 + .../starter_projects/test_vector_store_rag.py | 1 + src/backend/tests/unit/inputs/test_inputs.py | 3 ++- src/backend/tests/unit/io/test_io_schema.py | 1 + src/backend/tests/unit/io/test_table_schema.py | 1 + src/backend/tests/unit/schema/test_schema_message.py | 1 + .../tests/unit/services/variable/test_service.py | 3 ++- src/backend/tests/unit/test_api_key.py | 1 + src/backend/tests/unit/test_chat_endpoint.py | 3 ++- src/backend/tests/unit/test_cli.py | 1 + src/backend/tests/unit/test_custom_component.py | 1 + .../tests/unit/test_custom_component_with_client.py | 1 + src/backend/tests/unit/test_data_class.py | 1 + src/backend/tests/unit/test_data_components.py | 1 + src/backend/tests/unit/test_database.py | 1 + src/backend/tests/unit/test_endpoints.py | 1 + src/backend/tests/unit/test_files.py | 3 ++- src/backend/tests/unit/test_frontend_nodes.py | 1 + src/backend/tests/unit/test_initial_setup.py | 3 ++- src/backend/tests/unit/test_kubernetes_secrets.py | 1 + src/backend/tests/unit/test_logger.py | 1 + src/backend/tests/unit/test_login.py | 3 ++- src/backend/tests/unit/test_messages.py | 1 + src/backend/tests/unit/test_messages_endpoints.py | 1 + src/backend/tests/unit/test_process.py | 1 + src/backend/tests/unit/test_schema.py | 3 ++- src/backend/tests/unit/test_telemetry.py | 1 + src/backend/tests/unit/test_template.py | 3 ++- src/backend/tests/unit/test_user.py | 3 ++- src/backend/tests/unit/test_validate_code.py | 3 ++- .../tests/unit/utils/test_connection_string_parser.py | 1 + .../tests/unit/utils/test_format_directory_path.py | 1 + src/backend/tests/unit/utils/test_rewrite_file_path.py | 1 + .../tests/unit/utils/test_truncate_long_strings.py | 1 + .../utils/test_truncate_long_strings_on_objects.py | 1 + 67 files changed, 87 insertions(+), 30 deletions(-) diff --git a/src/backend/base/langflow/api/v1/endpoints.py b/src/backend/base/langflow/api/v1/endpoints.py index a4b86652d3a..1b48c3d9f8d 100644 --- a/src/backend/base/langflow/api/v1/endpoints.py +++ b/src/backend/base/langflow/api/v1/endpoints.py @@ -45,6 +45,7 @@ get_task_service, get_telemetry_service, ) +from langflow.services.settings.feature_flags import FEATURE_FLAGS from langflow.services.telemetry.schema import RunPayload from langflow.utils.constants import SIDEBAR_CATEGORIES from langflow.utils.version import get_version_info @@ -629,7 +630,8 @@ def get_config(): from langflow.services.deps import get_settings_service settings_service: SettingsService = get_settings_service() - return settings_service.settings.model_dump() + + return {"feature_flags": FEATURE_FLAGS.model_dump(), **settings_service.settings.model_dump()} except Exception as exc: raise HTTPException(status_code=500, detail=str(exc)) from exc diff --git a/src/backend/base/langflow/api/v1/schemas.py b/src/backend/base/langflow/api/v1/schemas.py index 2cae487b288..93f9d57dd0d 100644 --- a/src/backend/base/langflow/api/v1/schemas.py +++ b/src/backend/base/langflow/api/v1/schemas.py @@ -350,6 +350,7 @@ class FlowDataRequest(BaseModel): class ConfigResponse(BaseModel): + feature_flags: dict frontend_timeout: int auto_saving: bool auto_saving_interval: int diff --git a/src/backend/base/langflow/services/settings/feature_flags.py b/src/backend/base/langflow/services/settings/feature_flags.py index 1a8dc0f7a29..6ffd48cf6c9 100644 --- a/src/backend/base/langflow/services/settings/feature_flags.py +++ b/src/backend/base/langflow/services/settings/feature_flags.py @@ -3,6 +3,7 @@ class FeatureFlags(BaseSettings): add_toolkit_output: bool = False + mvp_components: bool = False class Config: env_prefix = "LANGFLOW_FEATURE_" diff --git a/src/backend/tests/conftest.py b/src/backend/tests/conftest.py index 3405630bf79..f2db307fe47 100644 --- a/src/backend/tests/conftest.py +++ b/src/backend/tests/conftest.py @@ -15,6 +15,11 @@ from dotenv import load_dotenv from fastapi.testclient import TestClient from httpx import ASGITransport, AsyncClient +from loguru import logger +from sqlmodel import Session, SQLModel, create_engine, select +from sqlmodel.pool import StaticPool +from typer.testing import CliRunner + from langflow.components.inputs import ChatInput from langflow.graph import Graph from langflow.initial_setup.setup import STARTER_FOLDER_NAME @@ -27,11 +32,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 -from loguru import logger -from sqlmodel import Session, SQLModel, create_engine, select -from sqlmodel.pool import StaticPool -from typer.testing import CliRunner - from tests.api_keys import get_openai_api_key if TYPE_CHECKING: 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 d2319c56d70..043adc44510 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/astra/test_astra_component.py b/src/backend/tests/integration/components/astra/test_astra_component.py index fed8d186613..9c23f150d92 100644 --- a/src/backend/tests/integration/components/astra/test_astra_component.py +++ b/src/backend/tests/integration/components/astra/test_astra_component.py @@ -3,10 +3,10 @@ import pytest from astrapy.db import AstraDB from langchain_core.documents import Document + from langflow.components.embeddings import OpenAIEmbeddingsComponent from langflow.components.vectorstores import AstraVectorStoreComponent 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 16e01b90212..8a3ae873b4d 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,8 +1,8 @@ import pytest + from langflow.components.helpers import ParseJSONDataComponent from langflow.components.inputs import ChatInput from langflow.schema import Data - 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/inputs/test_chat_input.py b/src/backend/tests/integration/components/inputs/test_chat_input.py index dd7840eefaf..5dfba9466b4 100644 --- a/src/backend/tests/integration/components/inputs/test_chat_input.py +++ b/src/backend/tests/integration/components/inputs/test_chat_input.py @@ -1,8 +1,8 @@ import pytest + from langflow.components.inputs import ChatInput from langflow.memory import get_messages from langflow.schema.message import Message - from tests.integration.utils import run_single_component 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 c4169c98704..c5a61ce7718 100644 --- a/src/backend/tests/integration/components/inputs/test_text_input.py +++ b/src/backend/tests/integration/components/inputs/test_text_input.py @@ -1,7 +1,7 @@ import pytest + from langflow.components.inputs import TextInputComponent from langflow.schema.message import Message - from tests.integration.utils import run_single_component 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 83fb487e3e1..4db33cae95f 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.models import OpenAIModelComponent from langflow.components.output_parsers import OutputParserComponent from langflow.components.prompts 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 27b4e42171e..325116744d6 100644 --- a/src/backend/tests/integration/components/outputs/test_chat_output.py +++ b/src/backend/tests/integration/components/outputs/test_chat_output.py @@ -1,8 +1,8 @@ import pytest + from langflow.components.outputs import ChatOutput from langflow.memory import get_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 22076462e90..392c185f463 100644 --- a/src/backend/tests/integration/components/outputs/test_text_output.py +++ b/src/backend/tests/integration/components/outputs/test_text_output.py @@ -1,7 +1,7 @@ import pytest + from langflow.components.outputs 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 1f52fd3b707..ee092a2d04f 100644 --- a/src/backend/tests/integration/components/prompts/test_prompt.py +++ b/src/backend/tests/integration/components/prompts/test_prompt.py @@ -1,7 +1,7 @@ import pytest + from langflow.components.prompts import PromptComponent from langflow.schema.message import Message - from tests.integration.utils import run_single_component diff --git a/src/backend/tests/integration/flows/test_basic_prompting.py b/src/backend/tests/integration/flows/test_basic_prompting.py index 46dac6dec67..0d492ad768b 100644 --- a/src/backend/tests/integration/flows/test_basic_prompting.py +++ b/src/backend/tests/integration/flows/test_basic_prompting.py @@ -1,10 +1,10 @@ import pytest + from langflow.components.inputs import ChatInput from langflow.components.outputs import ChatOutput from langflow.components.prompts import PromptComponent from langflow.graph import Graph from langflow.schema.message import Message - from tests.integration.utils import run_flow diff --git a/src/backend/tests/integration/test_misc.py b/src/backend/tests/integration/test_misc.py index 5d10fe1fdf5..af9c8b08ce1 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 fastapi.testclient import TestClient + from langflow.graph.schema import RunOutputs from langflow.initial_setup.setup import load_starter_projects from langflow.load import run_flow_from_json diff --git a/src/backend/tests/integration/utils.py b/src/backend/tests/integration/utils.py index 4620f41147c..c2611cb5734 100644 --- a/src/backend/tests/integration/utils.py +++ b/src/backend/tests/integration/utils.py @@ -5,6 +5,7 @@ import requests from astrapy.admin import parse_api_endpoint + from langflow.api.v1.schemas import InputValueRequest from langflow.custom import Component from langflow.field_typing import Embeddings 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 67c81dae474..e84de568ae7 100644 --- a/src/backend/tests/unit/base/tools/test_component_toolkit.py +++ b/src/backend/tests/unit/base/tools/test_component_toolkit.py @@ -1,6 +1,7 @@ import os import pytest + from langflow.base.tools.component_tool import ComponentToolkit from langflow.components.agents import ToolCallingAgentComponent from langflow.components.inputs import ChatInput diff --git a/src/backend/tests/unit/components/helpers/test_structured_output_component.py b/src/backend/tests/unit/components/helpers/test_structured_output_component.py index bce79b4b5fe..a205ee4914a 100644 --- a/src/backend/tests/unit/components/helpers/test_structured_output_component.py +++ b/src/backend/tests/unit/components/helpers/test_structured_output_component.py @@ -2,11 +2,12 @@ import pytest from langchain_core.language_models import BaseLanguageModel -from langflow.components.helpers.structured_output import StructuredOutputComponent -from langflow.schema.data import Data from pydantic import BaseModel from typing_extensions import override +from langflow.components.helpers.structured_output import StructuredOutputComponent +from langflow.schema.data import Data + class TestStructuredOutputComponent: # Ensure that the structured output is successfully generated with the correct BaseModel instance returned by diff --git a/src/backend/tests/unit/components/models/test_chatollama_component.py b/src/backend/tests/unit/components/models/test_chatollama_component.py index 95d81383a79..dd81799387c 100644 --- a/src/backend/tests/unit/components/models/test_chatollama_component.py +++ b/src/backend/tests/unit/components/models/test_chatollama_component.py @@ -3,6 +3,7 @@ import pytest from langchain_community.chat_models import ChatOllama + from langflow.components.models import ChatOllamaComponent 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 716ea9a4e3f..d47aec5b5c0 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,4 +1,5 @@ import pytest + from langflow.components.prototypes 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 0eef004e957..7d6ae6151a6 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,4 +1,5 @@ import pytest + from langflow.components.prototypes import UpdateDataComponent from langflow.schema import Data 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 4c03f827e9e..f49760d8108 100644 --- a/src/backend/tests/unit/custom/custom_component/test_component.py +++ b/src/backend/tests/unit/custom/custom_component/test_component.py @@ -1,4 +1,5 @@ import pytest + from langflow.components.agents import CrewAIAgentComponent, ToolCallingAgentComponent from langflow.components.helpers import SequentialTaskComponent from langflow.components.inputs import ChatInput diff --git a/src/backend/tests/unit/events/test_event_manager.py b/src/backend/tests/unit/events/test_event_manager.py index b02e29d2c31..62a24ad8616 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 19037447aad..f3674e01749 100644 --- a/src/backend/tests/unit/graph/edge/test_edge_base.py +++ b/src/backend/tests/unit/graph/edge/test_edge_base.py @@ -1,4 +1,5 @@ import pytest + from langflow.components.inputs import ChatInput from langflow.components.models import OpenAIModelComponent from langflow.components.outputs import ChatOutput 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 abe7140de26..f39f38088e9 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,11 +1,12 @@ import pytest +from pydantic import Field + from langflow.components.inputs import ChatInput from langflow.components.outputs import 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 a434d97e540..c0ac7d27636 100644 --- a/src/backend/tests/unit/graph/graph/test_base.py +++ b/src/backend/tests/unit/graph/graph/test_base.py @@ -2,6 +2,7 @@ from collections import deque import pytest + from langflow.components.agents import ToolCallingAgentComponent from langflow.components.inputs import ChatInput from langflow.components.outputs import ChatOutput, TextOutputComponent diff --git a/src/backend/tests/unit/graph/graph/test_cycles.py b/src/backend/tests/unit/graph/graph/test_cycles.py index 223d7d4c3de..e7f7ef20967 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.inputs import ChatInput from langflow.components.models import OpenAIModelComponent from langflow.components.outputs import ChatOutput, TextOutputComponent 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 0fbe00adce6..1921efb5a9c 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 import MemoryComponent from langflow.components.inputs import ChatInput from langflow.components.models 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 188d19b915c..19c5beef85f 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 982f73118af..5d0755ef0c7 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 af9f009cc5c..41a2aad5f27 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/helpers/test_base_model_from_schema.py b/src/backend/tests/unit/helpers/test_base_model_from_schema.py index d07a4908e0a..654cc595a6d 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/initial_setup/starter_projects/test_memory_chatbot.py b/src/backend/tests/unit/initial_setup/starter_projects/test_memory_chatbot.py index 024433335e4..d1542c056fe 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 import MemoryComponent from langflow.components.inputs import ChatInput from langflow.components.models 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 36e462c106c..980d2e15415 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.embeddings import OpenAIEmbeddingsComponent from langflow.components.helpers import ParseDataComponent, SplitTextComponent diff --git a/src/backend/tests/unit/inputs/test_inputs.py b/src/backend/tests/unit/inputs/test_inputs.py index 8d4386bcb73..4716a2931cc 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, @@ -22,7 +24,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/io/test_io_schema.py b/src/backend/tests/unit/io/test_io_schema.py index 0c7497a1b94..2978dc99da9 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.inputs import ChatInput if TYPE_CHECKING: diff --git a/src/backend/tests/unit/io/test_table_schema.py b/src/backend/tests/unit/io/test_table_schema.py index 42373194309..4e08949db1e 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_schema_message.py b/src/backend/tests/unit/schema/test_schema_message.py index 6ea7da610bc..cc96f67f36b 100644 --- a/src/backend/tests/unit/schema/test_schema_message.py +++ b/src/backend/tests/unit/schema/test_schema_message.py @@ -1,5 +1,6 @@ import pytest from langchain_core.prompts.chat import ChatPromptTemplate + from langflow.schema.message import Message diff --git a/src/backend/tests/unit/services/variable/test_service.py b/src/backend/tests/unit/services/variable/test_service.py index 081c7147f29..a399352450c 100644 --- a/src/backend/tests/unit/services/variable/test_service.py +++ b/src/backend/tests/unit/services/variable/test_service.py @@ -3,12 +3,13 @@ from uuid import uuid4 import pytest +from sqlmodel import Session, SQLModel, create_engine + 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, GENERIC_TYPE from langflow.services.variable.service import DatabaseVariableService -from sqlmodel import Session, SQLModel, create_engine @pytest.fixture diff --git a/src/backend/tests/unit/test_api_key.py b/src/backend/tests/unit/test_api_key.py index d3358f87348..0177bdbe0ed 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_chat_endpoint.py b/src/backend/tests/unit/test_chat_endpoint.py index 9d267f26681..47cce5741c8 100644 --- a/src/backend/tests/unit/test_chat_endpoint.py +++ b/src/backend/tests/unit/test_chat_endpoint.py @@ -1,9 +1,10 @@ import json from uuid import UUID +from orjson import orjson + from langflow.memory import get_messages from langflow.services.database.models.flow import FlowCreate, FlowUpdate -from orjson import orjson async def test_build_flow(client, json_memory_chatbot_no_llm, logged_in_headers): diff --git a/src/backend/tests/unit/test_cli.py b/src/backend/tests/unit/test_cli.py index 796935adb57..37c41c78e8f 100644 --- a/src/backend/tests/unit/test_cli.py +++ b/src/backend/tests/unit/test_cli.py @@ -1,4 +1,5 @@ import pytest + from langflow.__main__ import app from langflow.services import deps diff --git a/src/backend/tests/unit/test_custom_component.py b/src/backend/tests/unit/test_custom_component.py index 3985c5e0eef..2a1d9b5e961 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 cc81f89bc67..4d0eb64fceb 100644 --- a/src/backend/tests/unit/test_custom_component_with_client.py +++ b/src/backend/tests/unit/test_custom_component_with_client.py @@ -1,6 +1,7 @@ from pathlib import Path import pytest + from langflow.custom import Component from langflow.custom.custom_component.custom_component import CustomComponent from langflow.custom.utils import build_custom_component_template diff --git a/src/backend/tests/unit/test_data_class.py b/src/backend/tests/unit/test_data_class.py index 83ee12bd02a..dadc790e5c2 100644 --- a/src/backend/tests/unit/test_data_class.py +++ b/src/backend/tests/unit/test_data_class.py @@ -1,5 +1,6 @@ import pytest from langchain_core.documents import Document + from langflow.schema import Data diff --git a/src/backend/tests/unit/test_data_components.py b/src/backend/tests/unit/test_data_components.py index 05d9fa974fd..7a8fe148d80 100644 --- a/src/backend/tests/unit/test_data_components.py +++ b/src/backend/tests/unit/test_data_components.py @@ -6,6 +6,7 @@ import pytest import respx from httpx import Response + from langflow.components import data diff --git a/src/backend/tests/unit/test_database.py b/src/backend/tests/unit/test_database.py index 7055971ab73..17bfa4c5a8e 100644 --- a/src/backend/tests/unit/test_database.py +++ b/src/backend/tests/unit/test_database.py @@ -5,6 +5,7 @@ import orjson import pytest from fastapi.testclient import TestClient + 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_flows_from_directory, load_starter_projects diff --git a/src/backend/tests/unit/test_endpoints.py b/src/backend/tests/unit/test_endpoints.py index bd207212e07..222b4ba32c8 100644 --- a/src/backend/tests/unit/test_endpoints.py +++ b/src/backend/tests/unit/test_endpoints.py @@ -4,6 +4,7 @@ import pytest from fastapi import status from httpx import AsyncClient + from langflow.custom.directory_reader.directory_reader import DirectoryReader from langflow.services.deps import get_settings_service diff --git a/src/backend/tests/unit/test_files.py b/src/backend/tests/unit/test_files.py index 84eb7451165..172e3772c7f 100644 --- a/src/backend/tests/unit/test_files.py +++ b/src/backend/tests/unit/test_files.py @@ -8,9 +8,10 @@ import pytest from asgi_lifespan import LifespanManager from httpx import ASGITransport, AsyncClient +from sqlmodel import Session + from langflow.services.deps import get_storage_service from langflow.services.storage.service import StorageService -from sqlmodel import Session @pytest.fixture diff --git a/src/backend/tests/unit/test_frontend_nodes.py b/src/backend/tests/unit/test_frontend_nodes.py index 0a4123f1007..97a3db98476 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_initial_setup.py b/src/backend/tests/unit/test_initial_setup.py index 5236c1b0ba0..c03f3853ed2 100644 --- a/src/backend/tests/unit/test_initial_setup.py +++ b/src/backend/tests/unit/test_initial_setup.py @@ -2,6 +2,8 @@ from pathlib import Path import pytest +from sqlmodel import select + from langflow.custom.directory_reader.utils import build_custom_component_list_from_path from langflow.initial_setup.setup import ( STARTER_FOLDER_NAME, @@ -12,7 +14,6 @@ from langflow.interface.types import aget_all_types_dict from langflow.services.database.models.folder.model import Folder from langflow.services.deps import session_scope -from sqlmodel import select 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 9da44cdef82..7598cad2c78 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_logger.py b/src/backend/tests/unit/test_logger.py index ab49ff948f0..13c94760050 100644 --- a/src/backend/tests/unit/test_logger.py +++ b/src/backend/tests/unit/test_logger.py @@ -3,6 +3,7 @@ from unittest.mock import patch import pytest + from langflow.logging.logger import SizedLogBuffer diff --git a/src/backend/tests/unit/test_login.py b/src/backend/tests/unit/test_login.py index 16864f3ca48..b8e945ae109 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 fd8970710ac..963ffca6700 100644 --- a/src/backend/tests/unit/test_messages.py +++ b/src/backend/tests/unit/test_messages.py @@ -1,4 +1,5 @@ import pytest + from langflow.memory import add_messages, add_messagetables, delete_messages, get_messages, store_message from langflow.schema.message import Message diff --git a/src/backend/tests/unit/test_messages_endpoints.py b/src/backend/tests/unit/test_messages_endpoints.py index 87f404c7fba..82cc6e773de 100644 --- a/src/backend/tests/unit/test_messages_endpoints.py +++ b/src/backend/tests/unit/test_messages_endpoints.py @@ -2,6 +2,7 @@ import pytest from httpx import AsyncClient + from langflow.memory import add_messagetables # Assuming you have these imports available diff --git a/src/backend/tests/unit/test_process.py b/src/backend/tests/unit/test_process.py index d909b63e045..6a94026f719 100644 --- a/src/backend/tests/unit/test_process.py +++ b/src/backend/tests/unit/test_process.py @@ -1,4 +1,5 @@ import pytest + from langflow.processing.process import process_tweaks from langflow.services.deps import get_session_service diff --git a/src/backend/tests/unit/test_schema.py b/src/backend/tests/unit/test_schema.py index cce9d8bcd3d..66910e72f7a 100644 --- a/src/backend/tests/unit/test_schema.py +++ b/src/backend/tests/unit/test_schema.py @@ -3,11 +3,12 @@ from typing import Union import pytest +from pydantic import ValidationError + 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 ValidationError class TestInput: diff --git a/src/backend/tests/unit/test_telemetry.py b/src/backend/tests/unit/test_telemetry.py index 618493c6466..0025602b667 100644 --- a/src/backend/tests/unit/test_telemetry.py +++ b/src/backend/tests/unit/test_telemetry.py @@ -2,6 +2,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 6b212717801..30dd0bb8ce7 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 41fdaeabe45..45d105d8f4b 100644 --- a/src/backend/tests/unit/test_user.py +++ b/src/backend/tests/unit/test_user.py @@ -2,12 +2,13 @@ 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 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 93b567cd9f7..09e0d5ee74f 100644 --- a/src/backend/tests/unit/test_validate_code.py +++ b/src/backend/tests/unit/test_validate_code.py @@ -2,9 +2,10 @@ from unittest import mock import pytest -from langflow.utils.validate import create_function, execute_function, extract_function_name, validate_code from requests.exceptions import MissingSchema +from langflow.utils.validate import create_function, execute_function, extract_function_name, validate_code + def test_create_function(): code = """ 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 7492b4162c6..d6d9d1d1f29 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 16ff40080b8..d2e8624c89b 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_rewrite_file_path.py b/src/backend/tests/unit/utils/test_rewrite_file_path.py index bb30280e2b8..8c84e32ae21 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_truncate_long_strings.py b/src/backend/tests/unit/utils/test_truncate_long_strings.py index aa7ce3f958f..cbb756af6fb 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.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 eafc3f10b14..d572b15bcc7 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.utils.constants import MAX_TEXT_LENGTH from langflow.utils.util_strings import truncate_long_strings From 60e6faa5bcaa88ef2311feb2fa23e529541acfc0 Mon Sep 17 00:00:00 2001 From: cristhianzl Date: Thu, 24 Oct 2024 13:43:57 -0300 Subject: [PATCH 03/12] =?UTF-8?q?=E2=9C=A8=20(use-get-config.ts):=20Add=20?= =?UTF-8?q?feature=5Fflags=20field=20to=20ConfigResponse=20interface=20to?= =?UTF-8?q?=20support=20feature=20flags=20in=20the=20application=20?= =?UTF-8?q?=F0=9F=94=A7=20(utilityStore.ts):=20Add=20featureFlags=20field?= =?UTF-8?q?=20and=20setFeatureFlags=20function=20to=20utilityStore=20to=20?= =?UTF-8?q?manage=20feature=20flags=20in=20the=20application=20?= =?UTF-8?q?=F0=9F=92=A1=20(extraSidebarComponent/index.tsx):=20Use=20featu?= =?UTF-8?q?reFlags=20from=20utilityStore=20to=20conditionally=20render=20c?= =?UTF-8?q?omponents=20based=20on=20feature=20flags=20in=20ExtraSidebar=20?= =?UTF-8?q?component?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/frontend/package-lock.json | 1 + .../src/controllers/API/queries/config/use-get-config.ts | 3 +++ .../FlowPage/components/extraSidebarComponent/index.tsx | 5 ++++- src/frontend/src/stores/utilityStore.ts | 2 ++ src/frontend/src/types/zustand/utility/index.ts | 2 ++ 5 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/frontend/package-lock.json b/src/frontend/package-lock.json index af26f8ea431..51554664e6e 100644 --- a/src/frontend/package-lock.json +++ b/src/frontend/package-lock.json @@ -923,6 +923,7 @@ }, "node_modules/@clack/prompts/node_modules/is-unicode-supported": { "version": "1.3.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { diff --git a/src/frontend/src/controllers/API/queries/config/use-get-config.ts b/src/frontend/src/controllers/API/queries/config/use-get-config.ts index dad80c81165..b3457b13a9a 100644 --- a/src/frontend/src/controllers/API/queries/config/use-get-config.ts +++ b/src/frontend/src/controllers/API/queries/config/use-get-config.ts @@ -12,6 +12,7 @@ export interface ConfigResponse { auto_saving_interval: number; health_check_max_retries: number; max_file_size_upload: number; + feature_flags: Record; } export const useGetConfig: useQueryFunctionType = ( @@ -27,6 +28,7 @@ export const useGetConfig: useQueryFunctionType = ( const setMaxFileSizeUpload = useUtilityStore( (state) => state.setMaxFileSizeUpload, ); + const setFeatureFlags = useUtilityStore((state) => state.setFeatureFlags); const { query } = UseRequestProcessor(); @@ -43,6 +45,7 @@ export const useGetConfig: useQueryFunctionType = ( setAutoSavingInterval(data.auto_saving_interval); setHealthCheckMaxRetries(data.health_check_max_retries); setMaxFileSizeUpload(data.max_file_size_upload); + setFeatureFlags(data.feature_flags); } return data; }; diff --git a/src/frontend/src/pages/FlowPage/components/extraSidebarComponent/index.tsx b/src/frontend/src/pages/FlowPage/components/extraSidebarComponent/index.tsx index 6e05568ed1d..71f813f2b79 100644 --- a/src/frontend/src/pages/FlowPage/components/extraSidebarComponent/index.tsx +++ b/src/frontend/src/pages/FlowPage/components/extraSidebarComponent/index.tsx @@ -20,6 +20,7 @@ import { nodeIconsLucide } from "../../../../utils/styleUtils"; import ParentDisclosureComponent from "../ParentDisclosureComponent"; import { SidebarCategoryComponent } from "./SidebarCategoryComponent"; +import { useUtilityStore } from "@/stores/utilityStore"; import { SidebarFilterComponent } from "./sidebarFilterComponent"; import { sortKeys } from "./utils"; @@ -31,6 +32,8 @@ export default function ExtraSidebar(): JSX.Element { const hasStore = useStoreStore((state) => state.hasStore); const filterType = useFlowStore((state) => state.filterType); + const featureFlags = useUtilityStore((state) => state.featureFlags); + const setErrorData = useAlertStore((state) => state.setErrorData); const [dataFilter, setFilterData] = useState(data); const [search, setSearch] = useState(""); @@ -248,7 +251,7 @@ export default function ExtraSidebar(): JSX.Element {
), )} - {ENABLE_INTEGRATIONS && ( + {(ENABLE_INTEGRATIONS || featureFlags.mvp_components) && ( ((set, get) => ({ setFlowsPagination: (flowsPagination: Pagination) => set({ flowsPagination }), tags: [], setTags: (tags: Tag[]) => set({ tags }), + featureFlags: {}, + setFeatureFlags: (featureFlags: Record) => set({ featureFlags }), })); diff --git a/src/frontend/src/types/zustand/utility/index.ts b/src/frontend/src/types/zustand/utility/index.ts index 76d0c6452da..504fa8fac85 100644 --- a/src/frontend/src/types/zustand/utility/index.ts +++ b/src/frontend/src/types/zustand/utility/index.ts @@ -13,4 +13,6 @@ export type UtilityStoreType = { setFlowsPagination: (pagination: Pagination) => void; tags: Tag[]; setTags: (tags: Tag[]) => void; + featureFlags: Record; + setFeatureFlags: (featureFlags: Record) => void; }; From f08d45b55916088a3769ad0ddf828e9ec0b78df0 Mon Sep 17 00:00:00 2001 From: cristhianzl Date: Thu, 24 Oct 2024 13:46:47 -0300 Subject: [PATCH 04/12] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20(frontend/package-lo?= =?UTF-8?q?ck.json):=20remove=20extraneous=20flag=20from=20is-unicode-supp?= =?UTF-8?q?orted=20package=20to=20clean=20up=20unnecessary=20information?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/frontend/package-lock.json | 1 - 1 file changed, 1 deletion(-) diff --git a/src/frontend/package-lock.json b/src/frontend/package-lock.json index 51554664e6e..af26f8ea431 100644 --- a/src/frontend/package-lock.json +++ b/src/frontend/package-lock.json @@ -923,7 +923,6 @@ }, "node_modules/@clack/prompts/node_modules/is-unicode-supported": { "version": "1.3.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { From f55b0f76f677c0a998202f668d9b0fde97673f98 Mon Sep 17 00:00:00 2001 From: cristhianzl Date: Wed, 23 Oct 2024 12:06:46 -0300 Subject: [PATCH 05/12] =?UTF-8?q?=E2=9C=A8=20(integration-side-bar.spec.ts?= =?UTF-8?q?):=20Add=20integration=20tests=20to=20ensure=20correct=20visibi?= =?UTF-8?q?lity=20of=20integrations=20in=20the=20sidebar=20based=20on=20th?= =?UTF-8?q?e=20value=20of=20mvp=5Fcomponents.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../features/integration-side-bar.spec.ts | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 src/frontend/tests/extended/features/integration-side-bar.spec.ts diff --git a/src/frontend/tests/extended/features/integration-side-bar.spec.ts b/src/frontend/tests/extended/features/integration-side-bar.spec.ts new file mode 100644 index 00000000000..c36a6c80754 --- /dev/null +++ b/src/frontend/tests/extended/features/integration-side-bar.spec.ts @@ -0,0 +1,91 @@ +import { expect, test } from "@playwright/test"; + +test("user should be able to see integrations in the sidebar if mvp_components is true", async ({ + page, +}) => { + await page.route("**/api/v1/config", (route) => { + route.fulfill({ + status: 200, + contentType: "application/json", + body: JSON.stringify({ + mvp_components: true, + }), + headers: { + "content-type": "application/json", + ...route.request().headers(), + }, + }); + }); + + await page.goto("/"); + await page.waitForTimeout(1000); + + let modalCount = 0; + try { + const modalTitleElement = await page?.getByTestId("modal-title"); + if (modalTitleElement) { + modalCount = await modalTitleElement.count(); + } + } catch (error) { + modalCount = 0; + } + + while (modalCount === 0) { + await page.getByText("New Project", { exact: true }).click(); + await page.waitForTimeout(3000); + modalCount = await page.getByTestId("modal-title")?.count(); + } + + await page.getByTestId("blank-flow").click(); + await page.waitForSelector('[data-testid="extended-disclosure"]', { + timeout: 30000, + }); + + await expect(page.getByText("Integrations")).toBeVisible(); + await expect(page.getByText("Notion")).toBeVisible(); +}); + +test("user should NOT be able to see integrations in the sidebar if mvp_components is false", async ({ + page, +}) => { + await page.route("**/api/v1/config", (route) => { + route.fulfill({ + status: 200, + contentType: "application/json", + body: JSON.stringify({ + mvp_components: false, + }), + headers: { + "content-type": "application/json", + ...route.request().headers(), + }, + }); + }); + + await page.goto("/"); + await page.waitForTimeout(1000); + + let modalCount = 0; + try { + const modalTitleElement = await page?.getByTestId("modal-title"); + if (modalTitleElement) { + modalCount = await modalTitleElement.count(); + } + } catch (error) { + modalCount = 0; + } + + while (modalCount === 0) { + await page.getByText("New Project", { exact: true }).click(); + await page.waitForTimeout(3000); + modalCount = await page.getByTestId("modal-title")?.count(); + } + + await page.getByTestId("blank-flow").click(); + await page.waitForSelector('[data-testid="extended-disclosure"]', { + timeout: 30000, + }); + + await expect(page.getByText("Integrations")).not.toBeVisible(); + await expect(page.getByText("Notion")).not.toBeVisible(); +}); From d770a60b892c63e56217e8bc4de10d20cc6726c8 Mon Sep 17 00:00:00 2001 From: cristhianzl Date: Thu, 24 Oct 2024 13:50:52 -0300 Subject: [PATCH 06/12] =?UTF-8?q?=E2=9C=A8=20(integration-side-bar.spec.ts?= =?UTF-8?q?):=20update=20integration-side-bar=20tests=20to=20use=20feature?= =?UTF-8?q?=5Fflags=20object=20for=20mvp=5Fcomponents=20flag=20for=20bette?= =?UTF-8?q?r=20readability=20and=20maintainability.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tests/extended/features/integration-side-bar.spec.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/frontend/tests/extended/features/integration-side-bar.spec.ts b/src/frontend/tests/extended/features/integration-side-bar.spec.ts index c36a6c80754..fef5c062912 100644 --- a/src/frontend/tests/extended/features/integration-side-bar.spec.ts +++ b/src/frontend/tests/extended/features/integration-side-bar.spec.ts @@ -8,7 +8,9 @@ test("user should be able to see integrations in the sidebar if mvp_components i status: 200, contentType: "application/json", body: JSON.stringify({ - mvp_components: true, + feature_flags: { + mvp_components: true, + }, }), headers: { "content-type": "application/json", @@ -53,7 +55,9 @@ test("user should NOT be able to see integrations in the sidebar if mvp_componen status: 200, contentType: "application/json", body: JSON.stringify({ - mvp_components: false, + feature_flags: { + mvp_components: false, + }, }), headers: { "content-type": "application/json", From fe3f4a8c5ca224e026c1191156ca2f6b34b2dd51 Mon Sep 17 00:00:00 2001 From: cristhianzl Date: Thu, 24 Oct 2024 13:52:15 -0300 Subject: [PATCH 07/12] =?UTF-8?q?=E2=9C=A8=20(integration-side-bar.spec.ts?= =?UTF-8?q?):=20add=20a=204-second=20delay=20before=20making=20the=20API?= =?UTF-8?q?=20call=20to=20improve=20test=20reliability?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tests/extended/features/integration-side-bar.spec.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/frontend/tests/extended/features/integration-side-bar.spec.ts b/src/frontend/tests/extended/features/integration-side-bar.spec.ts index fef5c062912..99f64efde4a 100644 --- a/src/frontend/tests/extended/features/integration-side-bar.spec.ts +++ b/src/frontend/tests/extended/features/integration-side-bar.spec.ts @@ -50,6 +50,7 @@ test("user should be able to see integrations in the sidebar if mvp_components i test("user should NOT be able to see integrations in the sidebar if mvp_components is false", async ({ page, }) => { + await page.waitForTimeout(4000); await page.route("**/api/v1/config", (route) => { route.fulfill({ status: 200, From 9dfc5a88aab5aeac749ffd740534bd24359d221f Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Thu, 24 Oct 2024 16:53:04 +0000 Subject: [PATCH 08/12] [autofix.ci] apply automated fixes --- src/backend/tests/conftest.py | 10 +++++----- .../backward_compatibility/test_starter_projects.py | 2 +- .../components/astra/test_astra_component.py | 2 +- .../components/helpers/test_parse_json_data.py | 2 +- .../integration/components/inputs/test_chat_input.py | 2 +- .../integration/components/inputs/test_text_input.py | 2 +- .../components/output_parsers/test_output_parser.py | 2 +- .../integration/components/outputs/test_chat_output.py | 2 +- .../integration/components/outputs/test_text_output.py | 2 +- .../integration/components/prompts/test_prompt.py | 2 +- .../tests/integration/flows/test_basic_prompting.py | 2 +- src/backend/tests/integration/test_misc.py | 1 - src/backend/tests/integration/utils.py | 1 - .../tests/unit/base/tools/test_component_toolkit.py | 1 - .../helpers/test_structured_output_component.py | 5 ++--- .../components/models/test_chatollama_component.py | 1 - .../prototypes/test_create_data_component.py | 1 - .../prototypes/test_update_data_component.py | 1 - .../unit/custom/custom_component/test_component.py | 1 - src/backend/tests/unit/events/test_event_manager.py | 1 - src/backend/tests/unit/graph/edge/test_edge_base.py | 1 - .../tests/unit/graph/graph/state/test_state_model.py | 3 +-- src/backend/tests/unit/graph/graph/test_base.py | 1 - src/backend/tests/unit/graph/graph/test_cycles.py | 1 - .../tests/unit/graph/graph/test_graph_state_model.py | 1 - .../unit/graph/graph/test_runnable_vertices_manager.py | 1 - src/backend/tests/unit/graph/graph/test_utils.py | 1 - src/backend/tests/unit/graph/test_graph.py | 1 - .../tests/unit/helpers/test_base_model_from_schema.py | 3 +-- .../starter_projects/test_memory_chatbot.py | 1 - .../starter_projects/test_vector_store_rag.py | 1 - src/backend/tests/unit/inputs/test_inputs.py | 3 +-- src/backend/tests/unit/io/test_io_schema.py | 1 - src/backend/tests/unit/io/test_table_schema.py | 1 - src/backend/tests/unit/schema/test_schema_message.py | 1 - .../tests/unit/services/variable/test_service.py | 3 +-- src/backend/tests/unit/test_api_key.py | 1 - src/backend/tests/unit/test_chat_endpoint.py | 3 +-- src/backend/tests/unit/test_cli.py | 1 - src/backend/tests/unit/test_custom_component.py | 1 - .../tests/unit/test_custom_component_with_client.py | 1 - src/backend/tests/unit/test_data_class.py | 1 - src/backend/tests/unit/test_data_components.py | 1 - src/backend/tests/unit/test_database.py | 1 - src/backend/tests/unit/test_endpoints.py | 1 - src/backend/tests/unit/test_files.py | 3 +-- src/backend/tests/unit/test_frontend_nodes.py | 1 - src/backend/tests/unit/test_initial_setup.py | 3 +-- src/backend/tests/unit/test_kubernetes_secrets.py | 1 - src/backend/tests/unit/test_logger.py | 1 - src/backend/tests/unit/test_login.py | 3 +-- src/backend/tests/unit/test_messages.py | 1 - src/backend/tests/unit/test_messages_endpoints.py | 1 - src/backend/tests/unit/test_process.py | 1 - src/backend/tests/unit/test_schema.py | 3 +-- src/backend/tests/unit/test_telemetry.py | 1 - src/backend/tests/unit/test_template.py | 3 +-- src/backend/tests/unit/test_user.py | 3 +-- src/backend/tests/unit/test_validate_code.py | 3 +-- .../tests/unit/utils/test_connection_string_parser.py | 1 - .../tests/unit/utils/test_format_directory_path.py | 1 - src/backend/tests/unit/utils/test_rewrite_file_path.py | 1 - .../tests/unit/utils/test_truncate_long_strings.py | 1 - .../utils/test_truncate_long_strings_on_objects.py | 1 - 64 files changed, 29 insertions(+), 82 deletions(-) diff --git a/src/backend/tests/conftest.py b/src/backend/tests/conftest.py index f2db307fe47..3405630bf79 100644 --- a/src/backend/tests/conftest.py +++ b/src/backend/tests/conftest.py @@ -15,11 +15,6 @@ from dotenv import load_dotenv from fastapi.testclient import TestClient from httpx import ASGITransport, AsyncClient -from loguru import logger -from sqlmodel import Session, SQLModel, create_engine, select -from sqlmodel.pool import StaticPool -from typer.testing import CliRunner - from langflow.components.inputs import ChatInput from langflow.graph import Graph from langflow.initial_setup.setup import STARTER_FOLDER_NAME @@ -32,6 +27,11 @@ 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 +from loguru import logger +from sqlmodel import Session, SQLModel, create_engine, select +from sqlmodel.pool import StaticPool +from typer.testing import CliRunner + from tests.api_keys import get_openai_api_key if TYPE_CHECKING: 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 043adc44510..d2319c56d70 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 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/astra/test_astra_component.py b/src/backend/tests/integration/components/astra/test_astra_component.py index 9c23f150d92..fed8d186613 100644 --- a/src/backend/tests/integration/components/astra/test_astra_component.py +++ b/src/backend/tests/integration/components/astra/test_astra_component.py @@ -3,10 +3,10 @@ import pytest from astrapy.db import AstraDB from langchain_core.documents import Document - from langflow.components.embeddings import OpenAIEmbeddingsComponent from langflow.components.vectorstores import AstraVectorStoreComponent 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 8a3ae873b4d..16e01b90212 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,8 +1,8 @@ import pytest - from langflow.components.helpers import ParseJSONDataComponent from langflow.components.inputs import ChatInput from langflow.schema import Data + 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/inputs/test_chat_input.py b/src/backend/tests/integration/components/inputs/test_chat_input.py index 5dfba9466b4..dd7840eefaf 100644 --- a/src/backend/tests/integration/components/inputs/test_chat_input.py +++ b/src/backend/tests/integration/components/inputs/test_chat_input.py @@ -1,8 +1,8 @@ import pytest - from langflow.components.inputs import ChatInput from langflow.memory import get_messages from langflow.schema.message import Message + from tests.integration.utils import run_single_component 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 c5a61ce7718..c4169c98704 100644 --- a/src/backend/tests/integration/components/inputs/test_text_input.py +++ b/src/backend/tests/integration/components/inputs/test_text_input.py @@ -1,7 +1,7 @@ import pytest - from langflow.components.inputs import TextInputComponent from langflow.schema.message import Message + from tests.integration.utils import run_single_component 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 4db33cae95f..83fb487e3e1 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.models import OpenAIModelComponent from langflow.components.output_parsers import OutputParserComponent from langflow.components.prompts 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 325116744d6..27b4e42171e 100644 --- a/src/backend/tests/integration/components/outputs/test_chat_output.py +++ b/src/backend/tests/integration/components/outputs/test_chat_output.py @@ -1,8 +1,8 @@ import pytest - from langflow.components.outputs import ChatOutput from langflow.memory import get_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 392c185f463..22076462e90 100644 --- a/src/backend/tests/integration/components/outputs/test_text_output.py +++ b/src/backend/tests/integration/components/outputs/test_text_output.py @@ -1,7 +1,7 @@ import pytest - from langflow.components.outputs 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 ee092a2d04f..1f52fd3b707 100644 --- a/src/backend/tests/integration/components/prompts/test_prompt.py +++ b/src/backend/tests/integration/components/prompts/test_prompt.py @@ -1,7 +1,7 @@ import pytest - from langflow.components.prompts import PromptComponent from langflow.schema.message import Message + from tests.integration.utils import run_single_component diff --git a/src/backend/tests/integration/flows/test_basic_prompting.py b/src/backend/tests/integration/flows/test_basic_prompting.py index 0d492ad768b..46dac6dec67 100644 --- a/src/backend/tests/integration/flows/test_basic_prompting.py +++ b/src/backend/tests/integration/flows/test_basic_prompting.py @@ -1,10 +1,10 @@ import pytest - from langflow.components.inputs import ChatInput from langflow.components.outputs import ChatOutput from langflow.components.prompts import PromptComponent from langflow.graph import Graph from langflow.schema.message import Message + from tests.integration.utils import run_flow diff --git a/src/backend/tests/integration/test_misc.py b/src/backend/tests/integration/test_misc.py index af9c8b08ce1..5d10fe1fdf5 100644 --- a/src/backend/tests/integration/test_misc.py +++ b/src/backend/tests/integration/test_misc.py @@ -3,7 +3,6 @@ import pytest from fastapi import status from fastapi.testclient import TestClient - from langflow.graph.schema import RunOutputs from langflow.initial_setup.setup import load_starter_projects from langflow.load import run_flow_from_json diff --git a/src/backend/tests/integration/utils.py b/src/backend/tests/integration/utils.py index c2611cb5734..4620f41147c 100644 --- a/src/backend/tests/integration/utils.py +++ b/src/backend/tests/integration/utils.py @@ -5,7 +5,6 @@ import requests from astrapy.admin import parse_api_endpoint - from langflow.api.v1.schemas import InputValueRequest from langflow.custom import Component from langflow.field_typing import Embeddings 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 e84de568ae7..67c81dae474 100644 --- a/src/backend/tests/unit/base/tools/test_component_toolkit.py +++ b/src/backend/tests/unit/base/tools/test_component_toolkit.py @@ -1,7 +1,6 @@ import os import pytest - from langflow.base.tools.component_tool import ComponentToolkit from langflow.components.agents import ToolCallingAgentComponent from langflow.components.inputs import ChatInput diff --git a/src/backend/tests/unit/components/helpers/test_structured_output_component.py b/src/backend/tests/unit/components/helpers/test_structured_output_component.py index a205ee4914a..bce79b4b5fe 100644 --- a/src/backend/tests/unit/components/helpers/test_structured_output_component.py +++ b/src/backend/tests/unit/components/helpers/test_structured_output_component.py @@ -2,11 +2,10 @@ import pytest from langchain_core.language_models import BaseLanguageModel -from pydantic import BaseModel -from typing_extensions import override - from langflow.components.helpers.structured_output import StructuredOutputComponent from langflow.schema.data import Data +from pydantic import BaseModel +from typing_extensions import override class TestStructuredOutputComponent: diff --git a/src/backend/tests/unit/components/models/test_chatollama_component.py b/src/backend/tests/unit/components/models/test_chatollama_component.py index dd81799387c..95d81383a79 100644 --- a/src/backend/tests/unit/components/models/test_chatollama_component.py +++ b/src/backend/tests/unit/components/models/test_chatollama_component.py @@ -3,7 +3,6 @@ import pytest from langchain_community.chat_models import ChatOllama - from langflow.components.models import ChatOllamaComponent 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 d47aec5b5c0..716ea9a4e3f 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,5 +1,4 @@ import pytest - from langflow.components.prototypes 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 7d6ae6151a6..0eef004e957 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,5 +1,4 @@ import pytest - from langflow.components.prototypes import UpdateDataComponent from langflow.schema import Data 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 f49760d8108..4c03f827e9e 100644 --- a/src/backend/tests/unit/custom/custom_component/test_component.py +++ b/src/backend/tests/unit/custom/custom_component/test_component.py @@ -1,5 +1,4 @@ import pytest - from langflow.components.agents import CrewAIAgentComponent, ToolCallingAgentComponent from langflow.components.helpers import SequentialTaskComponent from langflow.components.inputs import ChatInput diff --git a/src/backend/tests/unit/events/test_event_manager.py b/src/backend/tests/unit/events/test_event_manager.py index 62a24ad8616..b02e29d2c31 100644 --- a/src/backend/tests/unit/events/test_event_manager.py +++ b/src/backend/tests/unit/events/test_event_manager.py @@ -4,7 +4,6 @@ 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 f3674e01749..19037447aad 100644 --- a/src/backend/tests/unit/graph/edge/test_edge_base.py +++ b/src/backend/tests/unit/graph/edge/test_edge_base.py @@ -1,5 +1,4 @@ import pytest - from langflow.components.inputs import ChatInput from langflow.components.models import OpenAIModelComponent from langflow.components.outputs import ChatOutput 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 f39f38088e9..abe7140de26 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,12 +1,11 @@ import pytest -from pydantic import Field - from langflow.components.inputs import ChatInput from langflow.components.outputs import 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 c0ac7d27636..a434d97e540 100644 --- a/src/backend/tests/unit/graph/graph/test_base.py +++ b/src/backend/tests/unit/graph/graph/test_base.py @@ -2,7 +2,6 @@ from collections import deque import pytest - from langflow.components.agents import ToolCallingAgentComponent from langflow.components.inputs import ChatInput from langflow.components.outputs import ChatOutput, TextOutputComponent diff --git a/src/backend/tests/unit/graph/graph/test_cycles.py b/src/backend/tests/unit/graph/graph/test_cycles.py index e7f7ef20967..223d7d4c3de 100644 --- a/src/backend/tests/unit/graph/graph/test_cycles.py +++ b/src/backend/tests/unit/graph/graph/test_cycles.py @@ -1,7 +1,6 @@ import os import pytest - from langflow.components.inputs import ChatInput from langflow.components.models import OpenAIModelComponent from langflow.components.outputs import ChatOutput, TextOutputComponent 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 1921efb5a9c..0fbe00adce6 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,7 +1,6 @@ from typing import TYPE_CHECKING import pytest - from langflow.components.helpers import MemoryComponent from langflow.components.inputs import ChatInput from langflow.components.models 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 19c5beef85f..188d19b915c 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,7 +2,6 @@ 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 5d0755ef0c7..982f73118af 100644 --- a/src/backend/tests/unit/graph/graph/test_utils.py +++ b/src/backend/tests/unit/graph/graph/test_utils.py @@ -1,7 +1,6 @@ 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 41a2aad5f27..af9f009cc5c 100644 --- a/src/backend/tests/unit/graph/test_graph.py +++ b/src/backend/tests/unit/graph/test_graph.py @@ -2,7 +2,6 @@ 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/helpers/test_base_model_from_schema.py b/src/backend/tests/unit/helpers/test_base_model_from_schema.py index 654cc595a6d..d07a4908e0a 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,11 +3,10 @@ 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/initial_setup/starter_projects/test_memory_chatbot.py b/src/backend/tests/unit/initial_setup/starter_projects/test_memory_chatbot.py index d1542c056fe..024433335e4 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,7 +3,6 @@ from typing import TYPE_CHECKING import pytest - from langflow.components.helpers import MemoryComponent from langflow.components.inputs import ChatInput from langflow.components.models 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 980d2e15415..36e462c106c 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,7 +3,6 @@ from textwrap import dedent import pytest - from langflow.components.data import FileComponent from langflow.components.embeddings import OpenAIEmbeddingsComponent from langflow.components.helpers import ParseDataComponent, SplitTextComponent diff --git a/src/backend/tests/unit/inputs/test_inputs.py b/src/backend/tests/unit/inputs/test_inputs.py index 4716a2931cc..8d4386bcb73 100644 --- a/src/backend/tests/unit/inputs/test_inputs.py +++ b/src/backend/tests/unit/inputs/test_inputs.py @@ -1,6 +1,4 @@ import pytest -from pydantic import ValidationError - from langflow.inputs.inputs import ( BoolInput, CodeInput, @@ -24,6 +22,7 @@ ) 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/io/test_io_schema.py b/src/backend/tests/unit/io/test_io_schema.py index 2978dc99da9..0c7497a1b94 100644 --- a/src/backend/tests/unit/io/test_io_schema.py +++ b/src/backend/tests/unit/io/test_io_schema.py @@ -1,7 +1,6 @@ from typing import TYPE_CHECKING, Literal import pytest - from langflow.components.inputs import ChatInput if TYPE_CHECKING: diff --git a/src/backend/tests/unit/io/test_table_schema.py b/src/backend/tests/unit/io/test_table_schema.py index 4e08949db1e..42373194309 100644 --- a/src/backend/tests/unit/io/test_table_schema.py +++ b/src/backend/tests/unit/io/test_table_schema.py @@ -1,7 +1,6 @@ # Generated by qodo Gen import pytest - from langflow.schema.table import Column, FormatterType diff --git a/src/backend/tests/unit/schema/test_schema_message.py b/src/backend/tests/unit/schema/test_schema_message.py index cc96f67f36b..6ea7da610bc 100644 --- a/src/backend/tests/unit/schema/test_schema_message.py +++ b/src/backend/tests/unit/schema/test_schema_message.py @@ -1,6 +1,5 @@ import pytest from langchain_core.prompts.chat import ChatPromptTemplate - from langflow.schema.message import Message diff --git a/src/backend/tests/unit/services/variable/test_service.py b/src/backend/tests/unit/services/variable/test_service.py index a399352450c..081c7147f29 100644 --- a/src/backend/tests/unit/services/variable/test_service.py +++ b/src/backend/tests/unit/services/variable/test_service.py @@ -3,13 +3,12 @@ from uuid import uuid4 import pytest -from sqlmodel import Session, SQLModel, create_engine - 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, GENERIC_TYPE from langflow.services.variable.service import DatabaseVariableService +from sqlmodel import Session, SQLModel, create_engine @pytest.fixture diff --git a/src/backend/tests/unit/test_api_key.py b/src/backend/tests/unit/test_api_key.py index 0177bdbe0ed..d3358f87348 100644 --- a/src/backend/tests/unit/test_api_key.py +++ b/src/backend/tests/unit/test_api_key.py @@ -1,6 +1,5 @@ import pytest from httpx import AsyncClient - from langflow.services.database.models.api_key import ApiKeyCreate diff --git a/src/backend/tests/unit/test_chat_endpoint.py b/src/backend/tests/unit/test_chat_endpoint.py index 47cce5741c8..9d267f26681 100644 --- a/src/backend/tests/unit/test_chat_endpoint.py +++ b/src/backend/tests/unit/test_chat_endpoint.py @@ -1,10 +1,9 @@ import json from uuid import UUID -from orjson import orjson - from langflow.memory import get_messages from langflow.services.database.models.flow import FlowCreate, FlowUpdate +from orjson import orjson async def test_build_flow(client, json_memory_chatbot_no_llm, logged_in_headers): diff --git a/src/backend/tests/unit/test_cli.py b/src/backend/tests/unit/test_cli.py index 37c41c78e8f..796935adb57 100644 --- a/src/backend/tests/unit/test_cli.py +++ b/src/backend/tests/unit/test_cli.py @@ -1,5 +1,4 @@ import pytest - from langflow.__main__ import app from langflow.services import deps diff --git a/src/backend/tests/unit/test_custom_component.py b/src/backend/tests/unit/test_custom_component.py index 2a1d9b5e961..3985c5e0eef 100644 --- a/src/backend/tests/unit/test_custom_component.py +++ b/src/backend/tests/unit/test_custom_component.py @@ -5,7 +5,6 @@ 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 4d0eb64fceb..cc81f89bc67 100644 --- a/src/backend/tests/unit/test_custom_component_with_client.py +++ b/src/backend/tests/unit/test_custom_component_with_client.py @@ -1,7 +1,6 @@ from pathlib import Path import pytest - from langflow.custom import Component from langflow.custom.custom_component.custom_component import CustomComponent from langflow.custom.utils import build_custom_component_template diff --git a/src/backend/tests/unit/test_data_class.py b/src/backend/tests/unit/test_data_class.py index dadc790e5c2..83ee12bd02a 100644 --- a/src/backend/tests/unit/test_data_class.py +++ b/src/backend/tests/unit/test_data_class.py @@ -1,6 +1,5 @@ import pytest from langchain_core.documents import Document - from langflow.schema import Data diff --git a/src/backend/tests/unit/test_data_components.py b/src/backend/tests/unit/test_data_components.py index 7a8fe148d80..05d9fa974fd 100644 --- a/src/backend/tests/unit/test_data_components.py +++ b/src/backend/tests/unit/test_data_components.py @@ -6,7 +6,6 @@ import pytest import respx from httpx import Response - from langflow.components import data diff --git a/src/backend/tests/unit/test_database.py b/src/backend/tests/unit/test_database.py index 17bfa4c5a8e..7055971ab73 100644 --- a/src/backend/tests/unit/test_database.py +++ b/src/backend/tests/unit/test_database.py @@ -5,7 +5,6 @@ import orjson import pytest from fastapi.testclient import TestClient - 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_flows_from_directory, load_starter_projects diff --git a/src/backend/tests/unit/test_endpoints.py b/src/backend/tests/unit/test_endpoints.py index 222b4ba32c8..bd207212e07 100644 --- a/src/backend/tests/unit/test_endpoints.py +++ b/src/backend/tests/unit/test_endpoints.py @@ -4,7 +4,6 @@ import pytest from fastapi import status from httpx import AsyncClient - from langflow.custom.directory_reader.directory_reader import DirectoryReader from langflow.services.deps import get_settings_service diff --git a/src/backend/tests/unit/test_files.py b/src/backend/tests/unit/test_files.py index 172e3772c7f..84eb7451165 100644 --- a/src/backend/tests/unit/test_files.py +++ b/src/backend/tests/unit/test_files.py @@ -8,10 +8,9 @@ import pytest from asgi_lifespan import LifespanManager from httpx import ASGITransport, AsyncClient -from sqlmodel import Session - from langflow.services.deps import get_storage_service from langflow.services.storage.service import StorageService +from sqlmodel import Session @pytest.fixture diff --git a/src/backend/tests/unit/test_frontend_nodes.py b/src/backend/tests/unit/test_frontend_nodes.py index 97a3db98476..0a4123f1007 100644 --- a/src/backend/tests/unit/test_frontend_nodes.py +++ b/src/backend/tests/unit/test_frontend_nodes.py @@ -1,5 +1,4 @@ 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_initial_setup.py b/src/backend/tests/unit/test_initial_setup.py index c03f3853ed2..5236c1b0ba0 100644 --- a/src/backend/tests/unit/test_initial_setup.py +++ b/src/backend/tests/unit/test_initial_setup.py @@ -2,8 +2,6 @@ from pathlib import Path import pytest -from sqlmodel import select - from langflow.custom.directory_reader.utils import build_custom_component_list_from_path from langflow.initial_setup.setup import ( STARTER_FOLDER_NAME, @@ -14,6 +12,7 @@ from langflow.interface.types import aget_all_types_dict from langflow.services.database.models.folder.model import Folder from langflow.services.deps import session_scope +from sqlmodel import select 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 7598cad2c78..9da44cdef82 100644 --- a/src/backend/tests/unit/test_kubernetes_secrets.py +++ b/src/backend/tests/unit/test_kubernetes_secrets.py @@ -4,7 +4,6 @@ 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_logger.py b/src/backend/tests/unit/test_logger.py index 13c94760050..ab49ff948f0 100644 --- a/src/backend/tests/unit/test_logger.py +++ b/src/backend/tests/unit/test_logger.py @@ -3,7 +3,6 @@ from unittest.mock import patch import pytest - from langflow.logging.logger import SizedLogBuffer diff --git a/src/backend/tests/unit/test_login.py b/src/backend/tests/unit/test_login.py index b8e945ae109..16864f3ca48 100644 --- a/src/backend/tests/unit/test_login.py +++ b/src/backend/tests/unit/test_login.py @@ -1,9 +1,8 @@ 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 963ffca6700..fd8970710ac 100644 --- a/src/backend/tests/unit/test_messages.py +++ b/src/backend/tests/unit/test_messages.py @@ -1,5 +1,4 @@ import pytest - from langflow.memory import add_messages, add_messagetables, delete_messages, get_messages, store_message from langflow.schema.message import Message diff --git a/src/backend/tests/unit/test_messages_endpoints.py b/src/backend/tests/unit/test_messages_endpoints.py index 82cc6e773de..87f404c7fba 100644 --- a/src/backend/tests/unit/test_messages_endpoints.py +++ b/src/backend/tests/unit/test_messages_endpoints.py @@ -2,7 +2,6 @@ import pytest from httpx import AsyncClient - from langflow.memory import add_messagetables # Assuming you have these imports available diff --git a/src/backend/tests/unit/test_process.py b/src/backend/tests/unit/test_process.py index 6a94026f719..d909b63e045 100644 --- a/src/backend/tests/unit/test_process.py +++ b/src/backend/tests/unit/test_process.py @@ -1,5 +1,4 @@ import pytest - from langflow.processing.process import process_tweaks from langflow.services.deps import get_session_service diff --git a/src/backend/tests/unit/test_schema.py b/src/backend/tests/unit/test_schema.py index 66910e72f7a..cce9d8bcd3d 100644 --- a/src/backend/tests/unit/test_schema.py +++ b/src/backend/tests/unit/test_schema.py @@ -3,12 +3,11 @@ from typing import Union import pytest -from pydantic import ValidationError - 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 ValidationError class TestInput: diff --git a/src/backend/tests/unit/test_telemetry.py b/src/backend/tests/unit/test_telemetry.py index 0025602b667..618493c6466 100644 --- a/src/backend/tests/unit/test_telemetry.py +++ b/src/backend/tests/unit/test_telemetry.py @@ -2,7 +2,6 @@ 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 30dd0bb8ce7..6b212717801 100644 --- a/src/backend/tests/unit/test_template.py +++ b/src/backend/tests/unit/test_template.py @@ -1,9 +1,8 @@ import importlib import pytest -from pydantic import BaseModel - from langflow.utils.util import build_template_from_function, get_base_classes, get_default_factory +from pydantic import BaseModel # Dummy classes for testing purposes diff --git a/src/backend/tests/unit/test_user.py b/src/backend/tests/unit/test_user.py index 45d105d8f4b..41fdaeabe45 100644 --- a/src/backend/tests/unit/test_user.py +++ b/src/backend/tests/unit/test_user.py @@ -2,13 +2,12 @@ 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 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 09e0d5ee74f..93b567cd9f7 100644 --- a/src/backend/tests/unit/test_validate_code.py +++ b/src/backend/tests/unit/test_validate_code.py @@ -2,9 +2,8 @@ from unittest import mock import pytest -from requests.exceptions import MissingSchema - from langflow.utils.validate import create_function, execute_function, 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 d6d9d1d1f29..7492b4162c6 100644 --- a/src/backend/tests/unit/utils/test_connection_string_parser.py +++ b/src/backend/tests/unit/utils/test_connection_string_parser.py @@ -1,5 +1,4 @@ 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 d2e8624c89b..16ff40080b8 100644 --- a/src/backend/tests/unit/utils/test_format_directory_path.py +++ b/src/backend/tests/unit/utils/test_format_directory_path.py @@ -1,5 +1,4 @@ import pytest - from langflow.base.data.utils import format_directory_path 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 8c84e32ae21..bb30280e2b8 100644 --- a/src/backend/tests/unit/utils/test_rewrite_file_path.py +++ b/src/backend/tests/unit/utils/test_rewrite_file_path.py @@ -1,5 +1,4 @@ import pytest - from langflow.base.data.utils import format_directory_path 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 cbb756af6fb..aa7ce3f958f 100644 --- a/src/backend/tests/unit/utils/test_truncate_long_strings.py +++ b/src/backend/tests/unit/utils/test_truncate_long_strings.py @@ -1,7 +1,6 @@ import math import pytest - 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 d572b15bcc7..eafc3f10b14 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,5 +1,4 @@ import pytest - from langflow.utils.constants import MAX_TEXT_LENGTH from langflow.utils.util_strings import truncate_long_strings From 4e14f445f78fb46799e4977eb4c6fc53f1119a1a Mon Sep 17 00:00:00 2001 From: Cristhian Zanforlin Lousa Date: Thu, 24 Oct 2024 17:44:06 -0300 Subject: [PATCH 09/12] Update src/backend/base/langflow/api/v1/schemas.py Co-authored-by: Gabriel Luiz Freitas Almeida --- src/backend/base/langflow/api/v1/schemas.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/base/langflow/api/v1/schemas.py b/src/backend/base/langflow/api/v1/schemas.py index 93f9d57dd0d..9fcf1f7760a 100644 --- a/src/backend/base/langflow/api/v1/schemas.py +++ b/src/backend/base/langflow/api/v1/schemas.py @@ -350,7 +350,7 @@ class FlowDataRequest(BaseModel): class ConfigResponse(BaseModel): - feature_flags: dict + feature_flags: FeatureFlags frontend_timeout: int auto_saving: bool auto_saving_interval: int From daf03364236deef21869d49ed9906ad808e64c62 Mon Sep 17 00:00:00 2001 From: Cristhian Zanforlin Lousa Date: Thu, 24 Oct 2024 17:44:14 -0300 Subject: [PATCH 10/12] Update src/backend/base/langflow/api/v1/endpoints.py Co-authored-by: Gabriel Luiz Freitas Almeida --- src/backend/base/langflow/api/v1/endpoints.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/base/langflow/api/v1/endpoints.py b/src/backend/base/langflow/api/v1/endpoints.py index 1b48c3d9f8d..0c4a213e077 100644 --- a/src/backend/base/langflow/api/v1/endpoints.py +++ b/src/backend/base/langflow/api/v1/endpoints.py @@ -631,7 +631,7 @@ def get_config(): settings_service: SettingsService = get_settings_service() - return {"feature_flags": FEATURE_FLAGS.model_dump(), **settings_service.settings.model_dump()} + return {"feature_flags": FEATURE_FLAGS, **settings_service.settings.model_dump()} except Exception as exc: raise HTTPException(status_code=500, detail=str(exc)) from exc From 7e9c42e72e71f03b4214269172cefea64e7a00a2 Mon Sep 17 00:00:00 2001 From: cristhianzl Date: Thu, 24 Oct 2024 17:45:56 -0300 Subject: [PATCH 11/12] formata --- src/backend/base/langflow/api/v1/schemas.py | 1 + src/backend/tests/conftest.py | 10 +++++----- .../backward_compatibility/test_starter_projects.py | 2 +- .../components/astra/test_astra_component.py | 2 +- .../components/helpers/test_parse_json_data.py | 2 +- .../integration/components/inputs/test_chat_input.py | 2 +- .../integration/components/inputs/test_text_input.py | 2 +- .../components/output_parsers/test_output_parser.py | 2 +- .../integration/components/outputs/test_chat_output.py | 2 +- .../integration/components/outputs/test_text_output.py | 2 +- .../integration/components/prompts/test_prompt.py | 2 +- .../tests/integration/flows/test_basic_prompting.py | 2 +- src/backend/tests/integration/test_misc.py | 1 + src/backend/tests/integration/utils.py | 1 + .../tests/unit/base/tools/test_component_toolkit.py | 1 + .../helpers/test_structured_output_component.py | 5 +++-- .../components/models/test_chatollama_component.py | 1 + .../prototypes/test_create_data_component.py | 1 + .../prototypes/test_update_data_component.py | 1 + .../unit/custom/custom_component/test_component.py | 1 + src/backend/tests/unit/events/test_event_manager.py | 1 + src/backend/tests/unit/graph/edge/test_edge_base.py | 1 + .../tests/unit/graph/graph/state/test_state_model.py | 3 ++- src/backend/tests/unit/graph/graph/test_base.py | 1 + src/backend/tests/unit/graph/graph/test_cycles.py | 1 + .../tests/unit/graph/graph/test_graph_state_model.py | 1 + .../unit/graph/graph/test_runnable_vertices_manager.py | 1 + src/backend/tests/unit/graph/graph/test_utils.py | 1 + src/backend/tests/unit/graph/test_graph.py | 1 + .../tests/unit/helpers/test_base_model_from_schema.py | 3 ++- .../starter_projects/test_memory_chatbot.py | 1 + .../starter_projects/test_vector_store_rag.py | 1 + src/backend/tests/unit/inputs/test_inputs.py | 3 ++- src/backend/tests/unit/io/test_io_schema.py | 1 + src/backend/tests/unit/io/test_table_schema.py | 1 + src/backend/tests/unit/schema/test_schema_message.py | 1 + .../tests/unit/services/variable/test_service.py | 3 ++- src/backend/tests/unit/test_api_key.py | 1 + src/backend/tests/unit/test_chat_endpoint.py | 3 ++- src/backend/tests/unit/test_cli.py | 1 + src/backend/tests/unit/test_custom_component.py | 1 + .../tests/unit/test_custom_component_with_client.py | 1 + src/backend/tests/unit/test_data_class.py | 1 + src/backend/tests/unit/test_data_components.py | 1 + src/backend/tests/unit/test_database.py | 1 + src/backend/tests/unit/test_endpoints.py | 1 + src/backend/tests/unit/test_files.py | 3 ++- src/backend/tests/unit/test_frontend_nodes.py | 1 + src/backend/tests/unit/test_initial_setup.py | 3 ++- src/backend/tests/unit/test_kubernetes_secrets.py | 1 + src/backend/tests/unit/test_logger.py | 1 + src/backend/tests/unit/test_login.py | 3 ++- src/backend/tests/unit/test_messages.py | 1 + src/backend/tests/unit/test_messages_endpoints.py | 1 + src/backend/tests/unit/test_process.py | 1 + src/backend/tests/unit/test_schema.py | 3 ++- src/backend/tests/unit/test_telemetry.py | 1 + src/backend/tests/unit/test_template.py | 3 ++- src/backend/tests/unit/test_user.py | 3 ++- src/backend/tests/unit/test_validate_code.py | 3 ++- .../tests/unit/utils/test_connection_string_parser.py | 1 + .../tests/unit/utils/test_format_directory_path.py | 1 + src/backend/tests/unit/utils/test_rewrite_file_path.py | 1 + .../tests/unit/utils/test_truncate_long_strings.py | 1 + .../utils/test_truncate_long_strings_on_objects.py | 1 + 65 files changed, 83 insertions(+), 29 deletions(-) diff --git a/src/backend/base/langflow/api/v1/schemas.py b/src/backend/base/langflow/api/v1/schemas.py index 9fcf1f7760a..78e9dc5851b 100644 --- a/src/backend/base/langflow/api/v1/schemas.py +++ b/src/backend/base/langflow/api/v1/schemas.py @@ -15,6 +15,7 @@ from langflow.services.database.models.base import orjson_dumps from langflow.services.database.models.flow import FlowCreate, FlowRead from langflow.services.database.models.user import UserRead +from langflow.services.settings.feature_flags import FeatureFlags from langflow.services.tracing.schema import Log from langflow.utils.util_strings import truncate_long_strings diff --git a/src/backend/tests/conftest.py b/src/backend/tests/conftest.py index 3405630bf79..f2db307fe47 100644 --- a/src/backend/tests/conftest.py +++ b/src/backend/tests/conftest.py @@ -15,6 +15,11 @@ from dotenv import load_dotenv from fastapi.testclient import TestClient from httpx import ASGITransport, AsyncClient +from loguru import logger +from sqlmodel import Session, SQLModel, create_engine, select +from sqlmodel.pool import StaticPool +from typer.testing import CliRunner + from langflow.components.inputs import ChatInput from langflow.graph import Graph from langflow.initial_setup.setup import STARTER_FOLDER_NAME @@ -27,11 +32,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 -from loguru import logger -from sqlmodel import Session, SQLModel, create_engine, select -from sqlmodel.pool import StaticPool -from typer.testing import CliRunner - from tests.api_keys import get_openai_api_key if TYPE_CHECKING: 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 d2319c56d70..043adc44510 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/astra/test_astra_component.py b/src/backend/tests/integration/components/astra/test_astra_component.py index fed8d186613..9c23f150d92 100644 --- a/src/backend/tests/integration/components/astra/test_astra_component.py +++ b/src/backend/tests/integration/components/astra/test_astra_component.py @@ -3,10 +3,10 @@ import pytest from astrapy.db import AstraDB from langchain_core.documents import Document + from langflow.components.embeddings import OpenAIEmbeddingsComponent from langflow.components.vectorstores import AstraVectorStoreComponent 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 16e01b90212..8a3ae873b4d 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,8 +1,8 @@ import pytest + from langflow.components.helpers import ParseJSONDataComponent from langflow.components.inputs import ChatInput from langflow.schema import Data - 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/inputs/test_chat_input.py b/src/backend/tests/integration/components/inputs/test_chat_input.py index dd7840eefaf..5dfba9466b4 100644 --- a/src/backend/tests/integration/components/inputs/test_chat_input.py +++ b/src/backend/tests/integration/components/inputs/test_chat_input.py @@ -1,8 +1,8 @@ import pytest + from langflow.components.inputs import ChatInput from langflow.memory import get_messages from langflow.schema.message import Message - from tests.integration.utils import run_single_component 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 c4169c98704..c5a61ce7718 100644 --- a/src/backend/tests/integration/components/inputs/test_text_input.py +++ b/src/backend/tests/integration/components/inputs/test_text_input.py @@ -1,7 +1,7 @@ import pytest + from langflow.components.inputs import TextInputComponent from langflow.schema.message import Message - from tests.integration.utils import run_single_component 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 83fb487e3e1..4db33cae95f 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.models import OpenAIModelComponent from langflow.components.output_parsers import OutputParserComponent from langflow.components.prompts 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 27b4e42171e..325116744d6 100644 --- a/src/backend/tests/integration/components/outputs/test_chat_output.py +++ b/src/backend/tests/integration/components/outputs/test_chat_output.py @@ -1,8 +1,8 @@ import pytest + from langflow.components.outputs import ChatOutput from langflow.memory import get_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 22076462e90..392c185f463 100644 --- a/src/backend/tests/integration/components/outputs/test_text_output.py +++ b/src/backend/tests/integration/components/outputs/test_text_output.py @@ -1,7 +1,7 @@ import pytest + from langflow.components.outputs 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 1f52fd3b707..ee092a2d04f 100644 --- a/src/backend/tests/integration/components/prompts/test_prompt.py +++ b/src/backend/tests/integration/components/prompts/test_prompt.py @@ -1,7 +1,7 @@ import pytest + from langflow.components.prompts import PromptComponent from langflow.schema.message import Message - from tests.integration.utils import run_single_component diff --git a/src/backend/tests/integration/flows/test_basic_prompting.py b/src/backend/tests/integration/flows/test_basic_prompting.py index 46dac6dec67..0d492ad768b 100644 --- a/src/backend/tests/integration/flows/test_basic_prompting.py +++ b/src/backend/tests/integration/flows/test_basic_prompting.py @@ -1,10 +1,10 @@ import pytest + from langflow.components.inputs import ChatInput from langflow.components.outputs import ChatOutput from langflow.components.prompts import PromptComponent from langflow.graph import Graph from langflow.schema.message import Message - from tests.integration.utils import run_flow diff --git a/src/backend/tests/integration/test_misc.py b/src/backend/tests/integration/test_misc.py index 5d10fe1fdf5..af9c8b08ce1 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 fastapi.testclient import TestClient + from langflow.graph.schema import RunOutputs from langflow.initial_setup.setup import load_starter_projects from langflow.load import run_flow_from_json diff --git a/src/backend/tests/integration/utils.py b/src/backend/tests/integration/utils.py index 4620f41147c..c2611cb5734 100644 --- a/src/backend/tests/integration/utils.py +++ b/src/backend/tests/integration/utils.py @@ -5,6 +5,7 @@ import requests from astrapy.admin import parse_api_endpoint + from langflow.api.v1.schemas import InputValueRequest from langflow.custom import Component from langflow.field_typing import Embeddings 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 67c81dae474..e84de568ae7 100644 --- a/src/backend/tests/unit/base/tools/test_component_toolkit.py +++ b/src/backend/tests/unit/base/tools/test_component_toolkit.py @@ -1,6 +1,7 @@ import os import pytest + from langflow.base.tools.component_tool import ComponentToolkit from langflow.components.agents import ToolCallingAgentComponent from langflow.components.inputs import ChatInput diff --git a/src/backend/tests/unit/components/helpers/test_structured_output_component.py b/src/backend/tests/unit/components/helpers/test_structured_output_component.py index bce79b4b5fe..a205ee4914a 100644 --- a/src/backend/tests/unit/components/helpers/test_structured_output_component.py +++ b/src/backend/tests/unit/components/helpers/test_structured_output_component.py @@ -2,11 +2,12 @@ import pytest from langchain_core.language_models import BaseLanguageModel -from langflow.components.helpers.structured_output import StructuredOutputComponent -from langflow.schema.data import Data from pydantic import BaseModel from typing_extensions import override +from langflow.components.helpers.structured_output import StructuredOutputComponent +from langflow.schema.data import Data + class TestStructuredOutputComponent: # Ensure that the structured output is successfully generated with the correct BaseModel instance returned by diff --git a/src/backend/tests/unit/components/models/test_chatollama_component.py b/src/backend/tests/unit/components/models/test_chatollama_component.py index 95d81383a79..dd81799387c 100644 --- a/src/backend/tests/unit/components/models/test_chatollama_component.py +++ b/src/backend/tests/unit/components/models/test_chatollama_component.py @@ -3,6 +3,7 @@ import pytest from langchain_community.chat_models import ChatOllama + from langflow.components.models import ChatOllamaComponent 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 716ea9a4e3f..d47aec5b5c0 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,4 +1,5 @@ import pytest + from langflow.components.prototypes 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 0eef004e957..7d6ae6151a6 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,4 +1,5 @@ import pytest + from langflow.components.prototypes import UpdateDataComponent from langflow.schema import Data 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 4c03f827e9e..f49760d8108 100644 --- a/src/backend/tests/unit/custom/custom_component/test_component.py +++ b/src/backend/tests/unit/custom/custom_component/test_component.py @@ -1,4 +1,5 @@ import pytest + from langflow.components.agents import CrewAIAgentComponent, ToolCallingAgentComponent from langflow.components.helpers import SequentialTaskComponent from langflow.components.inputs import ChatInput diff --git a/src/backend/tests/unit/events/test_event_manager.py b/src/backend/tests/unit/events/test_event_manager.py index b02e29d2c31..62a24ad8616 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 19037447aad..f3674e01749 100644 --- a/src/backend/tests/unit/graph/edge/test_edge_base.py +++ b/src/backend/tests/unit/graph/edge/test_edge_base.py @@ -1,4 +1,5 @@ import pytest + from langflow.components.inputs import ChatInput from langflow.components.models import OpenAIModelComponent from langflow.components.outputs import ChatOutput 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 abe7140de26..f39f38088e9 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,11 +1,12 @@ import pytest +from pydantic import Field + from langflow.components.inputs import ChatInput from langflow.components.outputs import 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 a434d97e540..c0ac7d27636 100644 --- a/src/backend/tests/unit/graph/graph/test_base.py +++ b/src/backend/tests/unit/graph/graph/test_base.py @@ -2,6 +2,7 @@ from collections import deque import pytest + from langflow.components.agents import ToolCallingAgentComponent from langflow.components.inputs import ChatInput from langflow.components.outputs import ChatOutput, TextOutputComponent diff --git a/src/backend/tests/unit/graph/graph/test_cycles.py b/src/backend/tests/unit/graph/graph/test_cycles.py index 223d7d4c3de..e7f7ef20967 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.inputs import ChatInput from langflow.components.models import OpenAIModelComponent from langflow.components.outputs import ChatOutput, TextOutputComponent 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 0fbe00adce6..1921efb5a9c 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 import MemoryComponent from langflow.components.inputs import ChatInput from langflow.components.models 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 188d19b915c..19c5beef85f 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 982f73118af..5d0755ef0c7 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 af9f009cc5c..41a2aad5f27 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/helpers/test_base_model_from_schema.py b/src/backend/tests/unit/helpers/test_base_model_from_schema.py index d07a4908e0a..654cc595a6d 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/initial_setup/starter_projects/test_memory_chatbot.py b/src/backend/tests/unit/initial_setup/starter_projects/test_memory_chatbot.py index 024433335e4..d1542c056fe 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 import MemoryComponent from langflow.components.inputs import ChatInput from langflow.components.models 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 36e462c106c..980d2e15415 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.embeddings import OpenAIEmbeddingsComponent from langflow.components.helpers import ParseDataComponent, SplitTextComponent diff --git a/src/backend/tests/unit/inputs/test_inputs.py b/src/backend/tests/unit/inputs/test_inputs.py index 8d4386bcb73..4716a2931cc 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, @@ -22,7 +24,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/io/test_io_schema.py b/src/backend/tests/unit/io/test_io_schema.py index 0c7497a1b94..2978dc99da9 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.inputs import ChatInput if TYPE_CHECKING: diff --git a/src/backend/tests/unit/io/test_table_schema.py b/src/backend/tests/unit/io/test_table_schema.py index 42373194309..4e08949db1e 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_schema_message.py b/src/backend/tests/unit/schema/test_schema_message.py index 6ea7da610bc..cc96f67f36b 100644 --- a/src/backend/tests/unit/schema/test_schema_message.py +++ b/src/backend/tests/unit/schema/test_schema_message.py @@ -1,5 +1,6 @@ import pytest from langchain_core.prompts.chat import ChatPromptTemplate + from langflow.schema.message import Message diff --git a/src/backend/tests/unit/services/variable/test_service.py b/src/backend/tests/unit/services/variable/test_service.py index 081c7147f29..a399352450c 100644 --- a/src/backend/tests/unit/services/variable/test_service.py +++ b/src/backend/tests/unit/services/variable/test_service.py @@ -3,12 +3,13 @@ from uuid import uuid4 import pytest +from sqlmodel import Session, SQLModel, create_engine + 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, GENERIC_TYPE from langflow.services.variable.service import DatabaseVariableService -from sqlmodel import Session, SQLModel, create_engine @pytest.fixture diff --git a/src/backend/tests/unit/test_api_key.py b/src/backend/tests/unit/test_api_key.py index d3358f87348..0177bdbe0ed 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_chat_endpoint.py b/src/backend/tests/unit/test_chat_endpoint.py index 9d267f26681..47cce5741c8 100644 --- a/src/backend/tests/unit/test_chat_endpoint.py +++ b/src/backend/tests/unit/test_chat_endpoint.py @@ -1,9 +1,10 @@ import json from uuid import UUID +from orjson import orjson + from langflow.memory import get_messages from langflow.services.database.models.flow import FlowCreate, FlowUpdate -from orjson import orjson async def test_build_flow(client, json_memory_chatbot_no_llm, logged_in_headers): diff --git a/src/backend/tests/unit/test_cli.py b/src/backend/tests/unit/test_cli.py index 796935adb57..37c41c78e8f 100644 --- a/src/backend/tests/unit/test_cli.py +++ b/src/backend/tests/unit/test_cli.py @@ -1,4 +1,5 @@ import pytest + from langflow.__main__ import app from langflow.services import deps diff --git a/src/backend/tests/unit/test_custom_component.py b/src/backend/tests/unit/test_custom_component.py index 3985c5e0eef..2a1d9b5e961 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 cc81f89bc67..4d0eb64fceb 100644 --- a/src/backend/tests/unit/test_custom_component_with_client.py +++ b/src/backend/tests/unit/test_custom_component_with_client.py @@ -1,6 +1,7 @@ from pathlib import Path import pytest + from langflow.custom import Component from langflow.custom.custom_component.custom_component import CustomComponent from langflow.custom.utils import build_custom_component_template diff --git a/src/backend/tests/unit/test_data_class.py b/src/backend/tests/unit/test_data_class.py index 83ee12bd02a..dadc790e5c2 100644 --- a/src/backend/tests/unit/test_data_class.py +++ b/src/backend/tests/unit/test_data_class.py @@ -1,5 +1,6 @@ import pytest from langchain_core.documents import Document + from langflow.schema import Data diff --git a/src/backend/tests/unit/test_data_components.py b/src/backend/tests/unit/test_data_components.py index 05d9fa974fd..7a8fe148d80 100644 --- a/src/backend/tests/unit/test_data_components.py +++ b/src/backend/tests/unit/test_data_components.py @@ -6,6 +6,7 @@ import pytest import respx from httpx import Response + from langflow.components import data diff --git a/src/backend/tests/unit/test_database.py b/src/backend/tests/unit/test_database.py index 7055971ab73..17bfa4c5a8e 100644 --- a/src/backend/tests/unit/test_database.py +++ b/src/backend/tests/unit/test_database.py @@ -5,6 +5,7 @@ import orjson import pytest from fastapi.testclient import TestClient + 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_flows_from_directory, load_starter_projects diff --git a/src/backend/tests/unit/test_endpoints.py b/src/backend/tests/unit/test_endpoints.py index bd207212e07..222b4ba32c8 100644 --- a/src/backend/tests/unit/test_endpoints.py +++ b/src/backend/tests/unit/test_endpoints.py @@ -4,6 +4,7 @@ import pytest from fastapi import status from httpx import AsyncClient + from langflow.custom.directory_reader.directory_reader import DirectoryReader from langflow.services.deps import get_settings_service diff --git a/src/backend/tests/unit/test_files.py b/src/backend/tests/unit/test_files.py index 84eb7451165..172e3772c7f 100644 --- a/src/backend/tests/unit/test_files.py +++ b/src/backend/tests/unit/test_files.py @@ -8,9 +8,10 @@ import pytest from asgi_lifespan import LifespanManager from httpx import ASGITransport, AsyncClient +from sqlmodel import Session + from langflow.services.deps import get_storage_service from langflow.services.storage.service import StorageService -from sqlmodel import Session @pytest.fixture diff --git a/src/backend/tests/unit/test_frontend_nodes.py b/src/backend/tests/unit/test_frontend_nodes.py index 0a4123f1007..97a3db98476 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_initial_setup.py b/src/backend/tests/unit/test_initial_setup.py index 5236c1b0ba0..c03f3853ed2 100644 --- a/src/backend/tests/unit/test_initial_setup.py +++ b/src/backend/tests/unit/test_initial_setup.py @@ -2,6 +2,8 @@ from pathlib import Path import pytest +from sqlmodel import select + from langflow.custom.directory_reader.utils import build_custom_component_list_from_path from langflow.initial_setup.setup import ( STARTER_FOLDER_NAME, @@ -12,7 +14,6 @@ from langflow.interface.types import aget_all_types_dict from langflow.services.database.models.folder.model import Folder from langflow.services.deps import session_scope -from sqlmodel import select 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 9da44cdef82..7598cad2c78 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_logger.py b/src/backend/tests/unit/test_logger.py index ab49ff948f0..13c94760050 100644 --- a/src/backend/tests/unit/test_logger.py +++ b/src/backend/tests/unit/test_logger.py @@ -3,6 +3,7 @@ from unittest.mock import patch import pytest + from langflow.logging.logger import SizedLogBuffer diff --git a/src/backend/tests/unit/test_login.py b/src/backend/tests/unit/test_login.py index 16864f3ca48..b8e945ae109 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 fd8970710ac..963ffca6700 100644 --- a/src/backend/tests/unit/test_messages.py +++ b/src/backend/tests/unit/test_messages.py @@ -1,4 +1,5 @@ import pytest + from langflow.memory import add_messages, add_messagetables, delete_messages, get_messages, store_message from langflow.schema.message import Message diff --git a/src/backend/tests/unit/test_messages_endpoints.py b/src/backend/tests/unit/test_messages_endpoints.py index 87f404c7fba..82cc6e773de 100644 --- a/src/backend/tests/unit/test_messages_endpoints.py +++ b/src/backend/tests/unit/test_messages_endpoints.py @@ -2,6 +2,7 @@ import pytest from httpx import AsyncClient + from langflow.memory import add_messagetables # Assuming you have these imports available diff --git a/src/backend/tests/unit/test_process.py b/src/backend/tests/unit/test_process.py index d909b63e045..6a94026f719 100644 --- a/src/backend/tests/unit/test_process.py +++ b/src/backend/tests/unit/test_process.py @@ -1,4 +1,5 @@ import pytest + from langflow.processing.process import process_tweaks from langflow.services.deps import get_session_service diff --git a/src/backend/tests/unit/test_schema.py b/src/backend/tests/unit/test_schema.py index cce9d8bcd3d..66910e72f7a 100644 --- a/src/backend/tests/unit/test_schema.py +++ b/src/backend/tests/unit/test_schema.py @@ -3,11 +3,12 @@ from typing import Union import pytest +from pydantic import ValidationError + 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 ValidationError class TestInput: diff --git a/src/backend/tests/unit/test_telemetry.py b/src/backend/tests/unit/test_telemetry.py index 618493c6466..0025602b667 100644 --- a/src/backend/tests/unit/test_telemetry.py +++ b/src/backend/tests/unit/test_telemetry.py @@ -2,6 +2,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 6b212717801..30dd0bb8ce7 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 41fdaeabe45..45d105d8f4b 100644 --- a/src/backend/tests/unit/test_user.py +++ b/src/backend/tests/unit/test_user.py @@ -2,12 +2,13 @@ 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 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 93b567cd9f7..09e0d5ee74f 100644 --- a/src/backend/tests/unit/test_validate_code.py +++ b/src/backend/tests/unit/test_validate_code.py @@ -2,9 +2,10 @@ from unittest import mock import pytest -from langflow.utils.validate import create_function, execute_function, extract_function_name, validate_code from requests.exceptions import MissingSchema +from langflow.utils.validate import create_function, execute_function, extract_function_name, validate_code + def test_create_function(): code = """ 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 7492b4162c6..d6d9d1d1f29 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 16ff40080b8..d2e8624c89b 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_rewrite_file_path.py b/src/backend/tests/unit/utils/test_rewrite_file_path.py index bb30280e2b8..8c84e32ae21 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_truncate_long_strings.py b/src/backend/tests/unit/utils/test_truncate_long_strings.py index aa7ce3f958f..cbb756af6fb 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.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 eafc3f10b14..d572b15bcc7 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.utils.constants import MAX_TEXT_LENGTH from langflow.utils.util_strings import truncate_long_strings From 615732c53fcfff3f74cb014ecee3a7790911691b Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Thu, 24 Oct 2024 20:46:38 +0000 Subject: [PATCH 12/12] [autofix.ci] apply automated fixes --- src/backend/tests/conftest.py | 10 +++++----- .../backward_compatibility/test_starter_projects.py | 2 +- .../components/astra/test_astra_component.py | 2 +- .../components/helpers/test_parse_json_data.py | 2 +- .../integration/components/inputs/test_chat_input.py | 2 +- .../integration/components/inputs/test_text_input.py | 2 +- .../components/output_parsers/test_output_parser.py | 2 +- .../integration/components/outputs/test_chat_output.py | 2 +- .../integration/components/outputs/test_text_output.py | 2 +- .../integration/components/prompts/test_prompt.py | 2 +- .../tests/integration/flows/test_basic_prompting.py | 2 +- src/backend/tests/integration/test_misc.py | 1 - src/backend/tests/integration/utils.py | 1 - .../tests/unit/base/tools/test_component_toolkit.py | 1 - .../helpers/test_structured_output_component.py | 5 ++--- .../components/models/test_chatollama_component.py | 1 - .../prototypes/test_create_data_component.py | 1 - .../prototypes/test_update_data_component.py | 1 - .../unit/custom/custom_component/test_component.py | 1 - src/backend/tests/unit/events/test_event_manager.py | 1 - src/backend/tests/unit/graph/edge/test_edge_base.py | 1 - .../tests/unit/graph/graph/state/test_state_model.py | 3 +-- src/backend/tests/unit/graph/graph/test_base.py | 1 - src/backend/tests/unit/graph/graph/test_cycles.py | 1 - .../tests/unit/graph/graph/test_graph_state_model.py | 1 - .../unit/graph/graph/test_runnable_vertices_manager.py | 1 - src/backend/tests/unit/graph/graph/test_utils.py | 1 - src/backend/tests/unit/graph/test_graph.py | 1 - .../tests/unit/helpers/test_base_model_from_schema.py | 3 +-- .../starter_projects/test_memory_chatbot.py | 1 - .../starter_projects/test_vector_store_rag.py | 1 - src/backend/tests/unit/inputs/test_inputs.py | 3 +-- src/backend/tests/unit/io/test_io_schema.py | 1 - src/backend/tests/unit/io/test_table_schema.py | 1 - src/backend/tests/unit/schema/test_schema_message.py | 1 - .../tests/unit/services/variable/test_service.py | 3 +-- src/backend/tests/unit/test_api_key.py | 1 - src/backend/tests/unit/test_chat_endpoint.py | 3 +-- src/backend/tests/unit/test_cli.py | 1 - src/backend/tests/unit/test_custom_component.py | 1 - .../tests/unit/test_custom_component_with_client.py | 1 - src/backend/tests/unit/test_data_class.py | 1 - src/backend/tests/unit/test_data_components.py | 1 - src/backend/tests/unit/test_database.py | 1 - src/backend/tests/unit/test_endpoints.py | 1 - src/backend/tests/unit/test_files.py | 3 +-- src/backend/tests/unit/test_frontend_nodes.py | 1 - src/backend/tests/unit/test_initial_setup.py | 3 +-- src/backend/tests/unit/test_kubernetes_secrets.py | 1 - src/backend/tests/unit/test_logger.py | 1 - src/backend/tests/unit/test_login.py | 3 +-- src/backend/tests/unit/test_messages.py | 1 - src/backend/tests/unit/test_messages_endpoints.py | 1 - src/backend/tests/unit/test_process.py | 1 - src/backend/tests/unit/test_schema.py | 3 +-- src/backend/tests/unit/test_telemetry.py | 1 - src/backend/tests/unit/test_template.py | 3 +-- src/backend/tests/unit/test_user.py | 3 +-- src/backend/tests/unit/test_validate_code.py | 3 +-- .../tests/unit/utils/test_connection_string_parser.py | 1 - .../tests/unit/utils/test_format_directory_path.py | 1 - src/backend/tests/unit/utils/test_rewrite_file_path.py | 1 - .../tests/unit/utils/test_truncate_long_strings.py | 1 - .../utils/test_truncate_long_strings_on_objects.py | 1 - 64 files changed, 29 insertions(+), 82 deletions(-) diff --git a/src/backend/tests/conftest.py b/src/backend/tests/conftest.py index f2db307fe47..3405630bf79 100644 --- a/src/backend/tests/conftest.py +++ b/src/backend/tests/conftest.py @@ -15,11 +15,6 @@ from dotenv import load_dotenv from fastapi.testclient import TestClient from httpx import ASGITransport, AsyncClient -from loguru import logger -from sqlmodel import Session, SQLModel, create_engine, select -from sqlmodel.pool import StaticPool -from typer.testing import CliRunner - from langflow.components.inputs import ChatInput from langflow.graph import Graph from langflow.initial_setup.setup import STARTER_FOLDER_NAME @@ -32,6 +27,11 @@ 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 +from loguru import logger +from sqlmodel import Session, SQLModel, create_engine, select +from sqlmodel.pool import StaticPool +from typer.testing import CliRunner + from tests.api_keys import get_openai_api_key if TYPE_CHECKING: 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 043adc44510..d2319c56d70 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 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/astra/test_astra_component.py b/src/backend/tests/integration/components/astra/test_astra_component.py index 9c23f150d92..fed8d186613 100644 --- a/src/backend/tests/integration/components/astra/test_astra_component.py +++ b/src/backend/tests/integration/components/astra/test_astra_component.py @@ -3,10 +3,10 @@ import pytest from astrapy.db import AstraDB from langchain_core.documents import Document - from langflow.components.embeddings import OpenAIEmbeddingsComponent from langflow.components.vectorstores import AstraVectorStoreComponent 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 8a3ae873b4d..16e01b90212 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,8 +1,8 @@ import pytest - from langflow.components.helpers import ParseJSONDataComponent from langflow.components.inputs import ChatInput from langflow.schema import Data + 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/inputs/test_chat_input.py b/src/backend/tests/integration/components/inputs/test_chat_input.py index 5dfba9466b4..dd7840eefaf 100644 --- a/src/backend/tests/integration/components/inputs/test_chat_input.py +++ b/src/backend/tests/integration/components/inputs/test_chat_input.py @@ -1,8 +1,8 @@ import pytest - from langflow.components.inputs import ChatInput from langflow.memory import get_messages from langflow.schema.message import Message + from tests.integration.utils import run_single_component 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 c5a61ce7718..c4169c98704 100644 --- a/src/backend/tests/integration/components/inputs/test_text_input.py +++ b/src/backend/tests/integration/components/inputs/test_text_input.py @@ -1,7 +1,7 @@ import pytest - from langflow.components.inputs import TextInputComponent from langflow.schema.message import Message + from tests.integration.utils import run_single_component 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 4db33cae95f..83fb487e3e1 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.models import OpenAIModelComponent from langflow.components.output_parsers import OutputParserComponent from langflow.components.prompts 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 325116744d6..27b4e42171e 100644 --- a/src/backend/tests/integration/components/outputs/test_chat_output.py +++ b/src/backend/tests/integration/components/outputs/test_chat_output.py @@ -1,8 +1,8 @@ import pytest - from langflow.components.outputs import ChatOutput from langflow.memory import get_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 392c185f463..22076462e90 100644 --- a/src/backend/tests/integration/components/outputs/test_text_output.py +++ b/src/backend/tests/integration/components/outputs/test_text_output.py @@ -1,7 +1,7 @@ import pytest - from langflow.components.outputs 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 ee092a2d04f..1f52fd3b707 100644 --- a/src/backend/tests/integration/components/prompts/test_prompt.py +++ b/src/backend/tests/integration/components/prompts/test_prompt.py @@ -1,7 +1,7 @@ import pytest - from langflow.components.prompts import PromptComponent from langflow.schema.message import Message + from tests.integration.utils import run_single_component diff --git a/src/backend/tests/integration/flows/test_basic_prompting.py b/src/backend/tests/integration/flows/test_basic_prompting.py index 0d492ad768b..46dac6dec67 100644 --- a/src/backend/tests/integration/flows/test_basic_prompting.py +++ b/src/backend/tests/integration/flows/test_basic_prompting.py @@ -1,10 +1,10 @@ import pytest - from langflow.components.inputs import ChatInput from langflow.components.outputs import ChatOutput from langflow.components.prompts import PromptComponent from langflow.graph import Graph from langflow.schema.message import Message + from tests.integration.utils import run_flow diff --git a/src/backend/tests/integration/test_misc.py b/src/backend/tests/integration/test_misc.py index af9c8b08ce1..5d10fe1fdf5 100644 --- a/src/backend/tests/integration/test_misc.py +++ b/src/backend/tests/integration/test_misc.py @@ -3,7 +3,6 @@ import pytest from fastapi import status from fastapi.testclient import TestClient - from langflow.graph.schema import RunOutputs from langflow.initial_setup.setup import load_starter_projects from langflow.load import run_flow_from_json diff --git a/src/backend/tests/integration/utils.py b/src/backend/tests/integration/utils.py index c2611cb5734..4620f41147c 100644 --- a/src/backend/tests/integration/utils.py +++ b/src/backend/tests/integration/utils.py @@ -5,7 +5,6 @@ import requests from astrapy.admin import parse_api_endpoint - from langflow.api.v1.schemas import InputValueRequest from langflow.custom import Component from langflow.field_typing import Embeddings 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 e84de568ae7..67c81dae474 100644 --- a/src/backend/tests/unit/base/tools/test_component_toolkit.py +++ b/src/backend/tests/unit/base/tools/test_component_toolkit.py @@ -1,7 +1,6 @@ import os import pytest - from langflow.base.tools.component_tool import ComponentToolkit from langflow.components.agents import ToolCallingAgentComponent from langflow.components.inputs import ChatInput diff --git a/src/backend/tests/unit/components/helpers/test_structured_output_component.py b/src/backend/tests/unit/components/helpers/test_structured_output_component.py index a205ee4914a..bce79b4b5fe 100644 --- a/src/backend/tests/unit/components/helpers/test_structured_output_component.py +++ b/src/backend/tests/unit/components/helpers/test_structured_output_component.py @@ -2,11 +2,10 @@ import pytest from langchain_core.language_models import BaseLanguageModel -from pydantic import BaseModel -from typing_extensions import override - from langflow.components.helpers.structured_output import StructuredOutputComponent from langflow.schema.data import Data +from pydantic import BaseModel +from typing_extensions import override class TestStructuredOutputComponent: diff --git a/src/backend/tests/unit/components/models/test_chatollama_component.py b/src/backend/tests/unit/components/models/test_chatollama_component.py index dd81799387c..95d81383a79 100644 --- a/src/backend/tests/unit/components/models/test_chatollama_component.py +++ b/src/backend/tests/unit/components/models/test_chatollama_component.py @@ -3,7 +3,6 @@ import pytest from langchain_community.chat_models import ChatOllama - from langflow.components.models import ChatOllamaComponent 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 d47aec5b5c0..716ea9a4e3f 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,5 +1,4 @@ import pytest - from langflow.components.prototypes 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 7d6ae6151a6..0eef004e957 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,5 +1,4 @@ import pytest - from langflow.components.prototypes import UpdateDataComponent from langflow.schema import Data 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 f49760d8108..4c03f827e9e 100644 --- a/src/backend/tests/unit/custom/custom_component/test_component.py +++ b/src/backend/tests/unit/custom/custom_component/test_component.py @@ -1,5 +1,4 @@ import pytest - from langflow.components.agents import CrewAIAgentComponent, ToolCallingAgentComponent from langflow.components.helpers import SequentialTaskComponent from langflow.components.inputs import ChatInput diff --git a/src/backend/tests/unit/events/test_event_manager.py b/src/backend/tests/unit/events/test_event_manager.py index 62a24ad8616..b02e29d2c31 100644 --- a/src/backend/tests/unit/events/test_event_manager.py +++ b/src/backend/tests/unit/events/test_event_manager.py @@ -4,7 +4,6 @@ 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 f3674e01749..19037447aad 100644 --- a/src/backend/tests/unit/graph/edge/test_edge_base.py +++ b/src/backend/tests/unit/graph/edge/test_edge_base.py @@ -1,5 +1,4 @@ import pytest - from langflow.components.inputs import ChatInput from langflow.components.models import OpenAIModelComponent from langflow.components.outputs import ChatOutput 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 f39f38088e9..abe7140de26 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,12 +1,11 @@ import pytest -from pydantic import Field - from langflow.components.inputs import ChatInput from langflow.components.outputs import 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 c0ac7d27636..a434d97e540 100644 --- a/src/backend/tests/unit/graph/graph/test_base.py +++ b/src/backend/tests/unit/graph/graph/test_base.py @@ -2,7 +2,6 @@ from collections import deque import pytest - from langflow.components.agents import ToolCallingAgentComponent from langflow.components.inputs import ChatInput from langflow.components.outputs import ChatOutput, TextOutputComponent diff --git a/src/backend/tests/unit/graph/graph/test_cycles.py b/src/backend/tests/unit/graph/graph/test_cycles.py index e7f7ef20967..223d7d4c3de 100644 --- a/src/backend/tests/unit/graph/graph/test_cycles.py +++ b/src/backend/tests/unit/graph/graph/test_cycles.py @@ -1,7 +1,6 @@ import os import pytest - from langflow.components.inputs import ChatInput from langflow.components.models import OpenAIModelComponent from langflow.components.outputs import ChatOutput, TextOutputComponent 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 1921efb5a9c..0fbe00adce6 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,7 +1,6 @@ from typing import TYPE_CHECKING import pytest - from langflow.components.helpers import MemoryComponent from langflow.components.inputs import ChatInput from langflow.components.models 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 19c5beef85f..188d19b915c 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,7 +2,6 @@ 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 5d0755ef0c7..982f73118af 100644 --- a/src/backend/tests/unit/graph/graph/test_utils.py +++ b/src/backend/tests/unit/graph/graph/test_utils.py @@ -1,7 +1,6 @@ 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 41a2aad5f27..af9f009cc5c 100644 --- a/src/backend/tests/unit/graph/test_graph.py +++ b/src/backend/tests/unit/graph/test_graph.py @@ -2,7 +2,6 @@ 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/helpers/test_base_model_from_schema.py b/src/backend/tests/unit/helpers/test_base_model_from_schema.py index 654cc595a6d..d07a4908e0a 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,11 +3,10 @@ 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/initial_setup/starter_projects/test_memory_chatbot.py b/src/backend/tests/unit/initial_setup/starter_projects/test_memory_chatbot.py index d1542c056fe..024433335e4 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,7 +3,6 @@ from typing import TYPE_CHECKING import pytest - from langflow.components.helpers import MemoryComponent from langflow.components.inputs import ChatInput from langflow.components.models 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 980d2e15415..36e462c106c 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,7 +3,6 @@ from textwrap import dedent import pytest - from langflow.components.data import FileComponent from langflow.components.embeddings import OpenAIEmbeddingsComponent from langflow.components.helpers import ParseDataComponent, SplitTextComponent diff --git a/src/backend/tests/unit/inputs/test_inputs.py b/src/backend/tests/unit/inputs/test_inputs.py index 4716a2931cc..8d4386bcb73 100644 --- a/src/backend/tests/unit/inputs/test_inputs.py +++ b/src/backend/tests/unit/inputs/test_inputs.py @@ -1,6 +1,4 @@ import pytest -from pydantic import ValidationError - from langflow.inputs.inputs import ( BoolInput, CodeInput, @@ -24,6 +22,7 @@ ) 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/io/test_io_schema.py b/src/backend/tests/unit/io/test_io_schema.py index 2978dc99da9..0c7497a1b94 100644 --- a/src/backend/tests/unit/io/test_io_schema.py +++ b/src/backend/tests/unit/io/test_io_schema.py @@ -1,7 +1,6 @@ from typing import TYPE_CHECKING, Literal import pytest - from langflow.components.inputs import ChatInput if TYPE_CHECKING: diff --git a/src/backend/tests/unit/io/test_table_schema.py b/src/backend/tests/unit/io/test_table_schema.py index 4e08949db1e..42373194309 100644 --- a/src/backend/tests/unit/io/test_table_schema.py +++ b/src/backend/tests/unit/io/test_table_schema.py @@ -1,7 +1,6 @@ # Generated by qodo Gen import pytest - from langflow.schema.table import Column, FormatterType diff --git a/src/backend/tests/unit/schema/test_schema_message.py b/src/backend/tests/unit/schema/test_schema_message.py index cc96f67f36b..6ea7da610bc 100644 --- a/src/backend/tests/unit/schema/test_schema_message.py +++ b/src/backend/tests/unit/schema/test_schema_message.py @@ -1,6 +1,5 @@ import pytest from langchain_core.prompts.chat import ChatPromptTemplate - from langflow.schema.message import Message diff --git a/src/backend/tests/unit/services/variable/test_service.py b/src/backend/tests/unit/services/variable/test_service.py index a399352450c..081c7147f29 100644 --- a/src/backend/tests/unit/services/variable/test_service.py +++ b/src/backend/tests/unit/services/variable/test_service.py @@ -3,13 +3,12 @@ from uuid import uuid4 import pytest -from sqlmodel import Session, SQLModel, create_engine - 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, GENERIC_TYPE from langflow.services.variable.service import DatabaseVariableService +from sqlmodel import Session, SQLModel, create_engine @pytest.fixture diff --git a/src/backend/tests/unit/test_api_key.py b/src/backend/tests/unit/test_api_key.py index 0177bdbe0ed..d3358f87348 100644 --- a/src/backend/tests/unit/test_api_key.py +++ b/src/backend/tests/unit/test_api_key.py @@ -1,6 +1,5 @@ import pytest from httpx import AsyncClient - from langflow.services.database.models.api_key import ApiKeyCreate diff --git a/src/backend/tests/unit/test_chat_endpoint.py b/src/backend/tests/unit/test_chat_endpoint.py index 47cce5741c8..9d267f26681 100644 --- a/src/backend/tests/unit/test_chat_endpoint.py +++ b/src/backend/tests/unit/test_chat_endpoint.py @@ -1,10 +1,9 @@ import json from uuid import UUID -from orjson import orjson - from langflow.memory import get_messages from langflow.services.database.models.flow import FlowCreate, FlowUpdate +from orjson import orjson async def test_build_flow(client, json_memory_chatbot_no_llm, logged_in_headers): diff --git a/src/backend/tests/unit/test_cli.py b/src/backend/tests/unit/test_cli.py index 37c41c78e8f..796935adb57 100644 --- a/src/backend/tests/unit/test_cli.py +++ b/src/backend/tests/unit/test_cli.py @@ -1,5 +1,4 @@ import pytest - from langflow.__main__ import app from langflow.services import deps diff --git a/src/backend/tests/unit/test_custom_component.py b/src/backend/tests/unit/test_custom_component.py index 2a1d9b5e961..3985c5e0eef 100644 --- a/src/backend/tests/unit/test_custom_component.py +++ b/src/backend/tests/unit/test_custom_component.py @@ -5,7 +5,6 @@ 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 4d0eb64fceb..cc81f89bc67 100644 --- a/src/backend/tests/unit/test_custom_component_with_client.py +++ b/src/backend/tests/unit/test_custom_component_with_client.py @@ -1,7 +1,6 @@ from pathlib import Path import pytest - from langflow.custom import Component from langflow.custom.custom_component.custom_component import CustomComponent from langflow.custom.utils import build_custom_component_template diff --git a/src/backend/tests/unit/test_data_class.py b/src/backend/tests/unit/test_data_class.py index dadc790e5c2..83ee12bd02a 100644 --- a/src/backend/tests/unit/test_data_class.py +++ b/src/backend/tests/unit/test_data_class.py @@ -1,6 +1,5 @@ import pytest from langchain_core.documents import Document - from langflow.schema import Data diff --git a/src/backend/tests/unit/test_data_components.py b/src/backend/tests/unit/test_data_components.py index 7a8fe148d80..05d9fa974fd 100644 --- a/src/backend/tests/unit/test_data_components.py +++ b/src/backend/tests/unit/test_data_components.py @@ -6,7 +6,6 @@ import pytest import respx from httpx import Response - from langflow.components import data diff --git a/src/backend/tests/unit/test_database.py b/src/backend/tests/unit/test_database.py index 17bfa4c5a8e..7055971ab73 100644 --- a/src/backend/tests/unit/test_database.py +++ b/src/backend/tests/unit/test_database.py @@ -5,7 +5,6 @@ import orjson import pytest from fastapi.testclient import TestClient - 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_flows_from_directory, load_starter_projects diff --git a/src/backend/tests/unit/test_endpoints.py b/src/backend/tests/unit/test_endpoints.py index 222b4ba32c8..bd207212e07 100644 --- a/src/backend/tests/unit/test_endpoints.py +++ b/src/backend/tests/unit/test_endpoints.py @@ -4,7 +4,6 @@ import pytest from fastapi import status from httpx import AsyncClient - from langflow.custom.directory_reader.directory_reader import DirectoryReader from langflow.services.deps import get_settings_service diff --git a/src/backend/tests/unit/test_files.py b/src/backend/tests/unit/test_files.py index 172e3772c7f..84eb7451165 100644 --- a/src/backend/tests/unit/test_files.py +++ b/src/backend/tests/unit/test_files.py @@ -8,10 +8,9 @@ import pytest from asgi_lifespan import LifespanManager from httpx import ASGITransport, AsyncClient -from sqlmodel import Session - from langflow.services.deps import get_storage_service from langflow.services.storage.service import StorageService +from sqlmodel import Session @pytest.fixture diff --git a/src/backend/tests/unit/test_frontend_nodes.py b/src/backend/tests/unit/test_frontend_nodes.py index 97a3db98476..0a4123f1007 100644 --- a/src/backend/tests/unit/test_frontend_nodes.py +++ b/src/backend/tests/unit/test_frontend_nodes.py @@ -1,5 +1,4 @@ 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_initial_setup.py b/src/backend/tests/unit/test_initial_setup.py index c03f3853ed2..5236c1b0ba0 100644 --- a/src/backend/tests/unit/test_initial_setup.py +++ b/src/backend/tests/unit/test_initial_setup.py @@ -2,8 +2,6 @@ from pathlib import Path import pytest -from sqlmodel import select - from langflow.custom.directory_reader.utils import build_custom_component_list_from_path from langflow.initial_setup.setup import ( STARTER_FOLDER_NAME, @@ -14,6 +12,7 @@ from langflow.interface.types import aget_all_types_dict from langflow.services.database.models.folder.model import Folder from langflow.services.deps import session_scope +from sqlmodel import select 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 7598cad2c78..9da44cdef82 100644 --- a/src/backend/tests/unit/test_kubernetes_secrets.py +++ b/src/backend/tests/unit/test_kubernetes_secrets.py @@ -4,7 +4,6 @@ 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_logger.py b/src/backend/tests/unit/test_logger.py index 13c94760050..ab49ff948f0 100644 --- a/src/backend/tests/unit/test_logger.py +++ b/src/backend/tests/unit/test_logger.py @@ -3,7 +3,6 @@ from unittest.mock import patch import pytest - from langflow.logging.logger import SizedLogBuffer diff --git a/src/backend/tests/unit/test_login.py b/src/backend/tests/unit/test_login.py index b8e945ae109..16864f3ca48 100644 --- a/src/backend/tests/unit/test_login.py +++ b/src/backend/tests/unit/test_login.py @@ -1,9 +1,8 @@ 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 963ffca6700..fd8970710ac 100644 --- a/src/backend/tests/unit/test_messages.py +++ b/src/backend/tests/unit/test_messages.py @@ -1,5 +1,4 @@ import pytest - from langflow.memory import add_messages, add_messagetables, delete_messages, get_messages, store_message from langflow.schema.message import Message diff --git a/src/backend/tests/unit/test_messages_endpoints.py b/src/backend/tests/unit/test_messages_endpoints.py index 82cc6e773de..87f404c7fba 100644 --- a/src/backend/tests/unit/test_messages_endpoints.py +++ b/src/backend/tests/unit/test_messages_endpoints.py @@ -2,7 +2,6 @@ import pytest from httpx import AsyncClient - from langflow.memory import add_messagetables # Assuming you have these imports available diff --git a/src/backend/tests/unit/test_process.py b/src/backend/tests/unit/test_process.py index 6a94026f719..d909b63e045 100644 --- a/src/backend/tests/unit/test_process.py +++ b/src/backend/tests/unit/test_process.py @@ -1,5 +1,4 @@ import pytest - from langflow.processing.process import process_tweaks from langflow.services.deps import get_session_service diff --git a/src/backend/tests/unit/test_schema.py b/src/backend/tests/unit/test_schema.py index 66910e72f7a..cce9d8bcd3d 100644 --- a/src/backend/tests/unit/test_schema.py +++ b/src/backend/tests/unit/test_schema.py @@ -3,12 +3,11 @@ from typing import Union import pytest -from pydantic import ValidationError - 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 ValidationError class TestInput: diff --git a/src/backend/tests/unit/test_telemetry.py b/src/backend/tests/unit/test_telemetry.py index 0025602b667..618493c6466 100644 --- a/src/backend/tests/unit/test_telemetry.py +++ b/src/backend/tests/unit/test_telemetry.py @@ -2,7 +2,6 @@ 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 30dd0bb8ce7..6b212717801 100644 --- a/src/backend/tests/unit/test_template.py +++ b/src/backend/tests/unit/test_template.py @@ -1,9 +1,8 @@ import importlib import pytest -from pydantic import BaseModel - from langflow.utils.util import build_template_from_function, get_base_classes, get_default_factory +from pydantic import BaseModel # Dummy classes for testing purposes diff --git a/src/backend/tests/unit/test_user.py b/src/backend/tests/unit/test_user.py index 45d105d8f4b..41fdaeabe45 100644 --- a/src/backend/tests/unit/test_user.py +++ b/src/backend/tests/unit/test_user.py @@ -2,13 +2,12 @@ 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 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 09e0d5ee74f..93b567cd9f7 100644 --- a/src/backend/tests/unit/test_validate_code.py +++ b/src/backend/tests/unit/test_validate_code.py @@ -2,9 +2,8 @@ from unittest import mock import pytest -from requests.exceptions import MissingSchema - from langflow.utils.validate import create_function, execute_function, 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 d6d9d1d1f29..7492b4162c6 100644 --- a/src/backend/tests/unit/utils/test_connection_string_parser.py +++ b/src/backend/tests/unit/utils/test_connection_string_parser.py @@ -1,5 +1,4 @@ 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 d2e8624c89b..16ff40080b8 100644 --- a/src/backend/tests/unit/utils/test_format_directory_path.py +++ b/src/backend/tests/unit/utils/test_format_directory_path.py @@ -1,5 +1,4 @@ import pytest - from langflow.base.data.utils import format_directory_path 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 8c84e32ae21..bb30280e2b8 100644 --- a/src/backend/tests/unit/utils/test_rewrite_file_path.py +++ b/src/backend/tests/unit/utils/test_rewrite_file_path.py @@ -1,5 +1,4 @@ import pytest - from langflow.base.data.utils import format_directory_path 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 cbb756af6fb..aa7ce3f958f 100644 --- a/src/backend/tests/unit/utils/test_truncate_long_strings.py +++ b/src/backend/tests/unit/utils/test_truncate_long_strings.py @@ -1,7 +1,6 @@ import math import pytest - 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 d572b15bcc7..eafc3f10b14 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,5 +1,4 @@ import pytest - from langflow.utils.constants import MAX_TEXT_LENGTH from langflow.utils.util_strings import truncate_long_strings