diff --git a/src/backend/langflow/__main__.py b/src/backend/langflow/__main__.py index a08ae9fb0..10050a98e 100644 --- a/src/backend/langflow/__main__.py +++ b/src/backend/langflow/__main__.py @@ -3,7 +3,7 @@ import time import httpx from langflow.services.database.utils import session_getter from langflow.services.manager import initialize_services, initialize_settings_manager -from langflow.services.utils import get_db_manager, get_settings_manager +from langflow.services.getters import get_db_manager, get_settings_manager from multiprocess import Process, cpu_count # type: ignore import platform @@ -360,8 +360,8 @@ def superuser( # Verify that the superuser was created from langflow.services.database.models.user.user import User - user = session.query(User).filter(User.username == username).first() - if user is None: + user: User = session.query(User).filter(User.username == username).first() + if user is None or not user.is_superuser: typer.echo("Superuser creation failed.") return diff --git a/src/backend/langflow/api/v1/api_key.py b/src/backend/langflow/api/v1/api_key.py index 280f240e8..7f5916d06 100644 --- a/src/backend/langflow/api/v1/api_key.py +++ b/src/backend/langflow/api/v1/api_key.py @@ -14,7 +14,7 @@ from langflow.services.database.models.api_key.crud import ( delete_api_key, ) from langflow.services.database.models.user.user import User -from langflow.services.utils import get_session +from langflow.services.getters import get_session from sqlmodel import Session diff --git a/src/backend/langflow/api/v1/chat.py b/src/backend/langflow/api/v1/chat.py index 690cad60b..adc6b3d61 100644 --- a/src/backend/langflow/api/v1/chat.py +++ b/src/backend/langflow/api/v1/chat.py @@ -14,7 +14,7 @@ from langflow.api.v1.schemas import BuildStatus, BuiltResponse, InitResponse, St from langflow.graph.graph.base import Graph from langflow.services.auth.utils import get_current_active_user, get_current_user from loguru import logger -from langflow.services.utils import get_chat_manager, get_session +from langflow.services.getters import get_chat_manager, get_session from cachetools import LRUCache from sqlmodel import Session from langflow.services.chat.manager import ChatManager diff --git a/src/backend/langflow/api/v1/components.py b/src/backend/langflow/api/v1/components.py index 4071461fb..d2b39dfd2 100644 --- a/src/backend/langflow/api/v1/components.py +++ b/src/backend/langflow/api/v1/components.py @@ -2,7 +2,7 @@ from datetime import timezone from typing import List from uuid import UUID from langflow.services.database.models.component import Component, ComponentModel -from langflow.services.utils import get_session +from langflow.services.getters import get_session from sqlmodel import Session, select from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.exc import IntegrityError diff --git a/src/backend/langflow/api/v1/endpoints.py b/src/backend/langflow/api/v1/endpoints.py index d1f898105..870f91d28 100644 --- a/src/backend/langflow/api/v1/endpoints.py +++ b/src/backend/langflow/api/v1/endpoints.py @@ -6,7 +6,7 @@ from langflow.services.cache.utils import save_uploaded_file from langflow.services.database.models.flow import Flow from langflow.processing.process import process_graph_cached, process_tweaks from langflow.services.database.models.user.user import User -from langflow.services.utils import get_settings_manager +from langflow.services.getters import get_settings_manager from loguru import logger from fastapi import APIRouter, Depends, HTTPException, UploadFile, Body, status import sqlalchemy as sa @@ -27,7 +27,7 @@ from langflow.interface.types import ( build_langchain_custom_component_list_from_path, ) -from langflow.services.utils import get_session +from langflow.services.getters import get_session from sqlmodel import Session # build router diff --git a/src/backend/langflow/api/v1/flows.py b/src/backend/langflow/api/v1/flows.py index be65048d4..c323dae53 100644 --- a/src/backend/langflow/api/v1/flows.py +++ b/src/backend/langflow/api/v1/flows.py @@ -12,8 +12,8 @@ from langflow.services.database.models.flow import ( FlowUpdate, ) from langflow.services.database.models.user.user import User -from langflow.services.utils import get_session -from langflow.services.utils import get_settings_manager +from langflow.services.getters import get_session +from langflow.services.getters import get_settings_manager import orjson from sqlmodel import Session from fastapi import APIRouter, Depends, HTTPException diff --git a/src/backend/langflow/api/v1/login.py b/src/backend/langflow/api/v1/login.py index 4241b8d47..9ff059bf9 100644 --- a/src/backend/langflow/api/v1/login.py +++ b/src/backend/langflow/api/v1/login.py @@ -2,7 +2,7 @@ from sqlmodel import Session from fastapi import APIRouter, Depends, HTTPException, status from fastapi.security import OAuth2PasswordRequestForm -from langflow.services.utils import get_session +from langflow.services.getters import get_session from langflow.api.v1.schemas import Token from langflow.services.auth.utils import ( authenticate_user, @@ -12,7 +12,7 @@ from langflow.services.auth.utils import ( get_current_active_user, ) -from langflow.services.utils import get_settings_manager +from langflow.services.getters import get_settings_manager router = APIRouter(tags=["Login"]) diff --git a/src/backend/langflow/api/v1/users.py b/src/backend/langflow/api/v1/users.py index e68512e43..e1e24d197 100644 --- a/src/backend/langflow/api/v1/users.py +++ b/src/backend/langflow/api/v1/users.py @@ -13,7 +13,7 @@ from sqlalchemy.exc import IntegrityError from sqlmodel import Session, select from fastapi import APIRouter, Depends, HTTPException -from langflow.services.utils import get_session +from langflow.services.getters import get_session from langflow.services.auth.utils import ( get_current_active_superuser, get_current_active_user, diff --git a/src/backend/langflow/interface/agents/base.py b/src/backend/langflow/interface/agents/base.py index 574264e47..f48015b2c 100644 --- a/src/backend/langflow/interface/agents/base.py +++ b/src/backend/langflow/interface/agents/base.py @@ -5,7 +5,7 @@ from langchain.agents import types from langflow.custom.customs import get_custom_nodes from langflow.interface.agents.custom import CUSTOM_AGENTS from langflow.interface.base import LangChainTypeCreator -from langflow.services.utils import get_settings_manager +from langflow.services.getters import get_settings_manager from langflow.template.frontend_node.agents import AgentFrontendNode from loguru import logger diff --git a/src/backend/langflow/interface/base.py b/src/backend/langflow/interface/base.py index b006a3174..4bb657b3c 100644 --- a/src/backend/langflow/interface/base.py +++ b/src/backend/langflow/interface/base.py @@ -2,7 +2,7 @@ from abc import ABC, abstractmethod from typing import Any, Dict, List, Optional, Type, Union from langchain.chains.base import Chain from langchain.agents import AgentExecutor -from langflow.services.utils import get_settings_manager +from langflow.services.getters import get_settings_manager from pydantic import BaseModel from langflow.template.field.base import TemplateField diff --git a/src/backend/langflow/interface/chains/base.py b/src/backend/langflow/interface/chains/base.py index 755ac82dd..99b0a693f 100644 --- a/src/backend/langflow/interface/chains/base.py +++ b/src/backend/langflow/interface/chains/base.py @@ -3,7 +3,7 @@ from typing import Any, Dict, List, Optional, Type from langflow.custom.customs import get_custom_nodes from langflow.interface.base import LangChainTypeCreator from langflow.interface.importing.utils import import_class -from langflow.services.utils import get_settings_manager +from langflow.services.getters import get_settings_manager from langflow.template.frontend_node.chains import ChainFrontendNode from loguru import logger diff --git a/src/backend/langflow/interface/custom/custom_component.py b/src/backend/langflow/interface/custom/custom_component.py index 1357daf68..9de09507a 100644 --- a/src/backend/langflow/interface/custom/custom_component.py +++ b/src/backend/langflow/interface/custom/custom_component.py @@ -4,7 +4,7 @@ from fastapi import HTTPException from langflow.interface.custom.constants import CUSTOM_COMPONENT_SUPPORTED_TYPES from langflow.interface.custom.component import Component from langflow.interface.custom.directory_reader import DirectoryReader -from langflow.services.utils import get_db_manager +from langflow.services.getters import get_db_manager from langflow.interface.custom.utils import extract_inner_type from langflow.utils import validate diff --git a/src/backend/langflow/interface/document_loaders/base.py b/src/backend/langflow/interface/document_loaders/base.py index a2c147e16..05311444b 100644 --- a/src/backend/langflow/interface/document_loaders/base.py +++ b/src/backend/langflow/interface/document_loaders/base.py @@ -1,7 +1,7 @@ from typing import Dict, List, Optional, Type from langflow.interface.base import LangChainTypeCreator -from langflow.services.utils import get_settings_manager +from langflow.services.getters import get_settings_manager from langflow.template.frontend_node.documentloaders import DocumentLoaderFrontNode from langflow.interface.custom_lists import documentloaders_type_to_cls_dict diff --git a/src/backend/langflow/interface/embeddings/base.py b/src/backend/langflow/interface/embeddings/base.py index 1063d10d1..0145d9859 100644 --- a/src/backend/langflow/interface/embeddings/base.py +++ b/src/backend/langflow/interface/embeddings/base.py @@ -2,7 +2,7 @@ from typing import Dict, List, Optional, Type from langflow.interface.base import LangChainTypeCreator from langflow.interface.custom_lists import embedding_type_to_cls_dict -from langflow.services.utils import get_settings_manager +from langflow.services.getters import get_settings_manager from langflow.template.frontend_node.base import FrontendNode from langflow.template.frontend_node.embeddings import EmbeddingFrontendNode diff --git a/src/backend/langflow/interface/llms/base.py b/src/backend/langflow/interface/llms/base.py index 87e4937cf..17a2ae0ee 100644 --- a/src/backend/langflow/interface/llms/base.py +++ b/src/backend/langflow/interface/llms/base.py @@ -2,7 +2,7 @@ from typing import Dict, List, Optional, Type from langflow.interface.base import LangChainTypeCreator from langflow.interface.custom_lists import llm_type_to_cls_dict -from langflow.services.utils import get_settings_manager +from langflow.services.getters import get_settings_manager from langflow.template.frontend_node.llms import LLMFrontendNode from loguru import logger diff --git a/src/backend/langflow/interface/memories/base.py b/src/backend/langflow/interface/memories/base.py index 61c6cc430..6c826d0ac 100644 --- a/src/backend/langflow/interface/memories/base.py +++ b/src/backend/langflow/interface/memories/base.py @@ -2,7 +2,7 @@ from typing import Dict, List, Optional, Type from langflow.interface.base import LangChainTypeCreator from langflow.interface.custom_lists import memory_type_to_cls_dict -from langflow.services.utils import get_settings_manager +from langflow.services.getters import get_settings_manager from langflow.template.frontend_node.base import FrontendNode from langflow.template.frontend_node.memories import MemoryFrontendNode diff --git a/src/backend/langflow/interface/output_parsers/base.py b/src/backend/langflow/interface/output_parsers/base.py index b6eb36a0e..48bcd1896 100644 --- a/src/backend/langflow/interface/output_parsers/base.py +++ b/src/backend/langflow/interface/output_parsers/base.py @@ -4,7 +4,7 @@ from langchain import output_parsers from langflow.interface.base import LangChainTypeCreator from langflow.interface.importing.utils import import_class -from langflow.services.utils import get_settings_manager +from langflow.services.getters import get_settings_manager from langflow.template.frontend_node.output_parsers import OutputParserFrontendNode from loguru import logger diff --git a/src/backend/langflow/interface/prompts/base.py b/src/backend/langflow/interface/prompts/base.py index 70818429e..d74e0c1e8 100644 --- a/src/backend/langflow/interface/prompts/base.py +++ b/src/backend/langflow/interface/prompts/base.py @@ -5,7 +5,7 @@ from langchain import prompts from langflow.custom.customs import get_custom_nodes from langflow.interface.base import LangChainTypeCreator from langflow.interface.importing.utils import import_class -from langflow.services.utils import get_settings_manager +from langflow.services.getters import get_settings_manager from langflow.template.frontend_node.prompts import PromptFrontendNode from loguru import logger diff --git a/src/backend/langflow/interface/retrievers/base.py b/src/backend/langflow/interface/retrievers/base.py index 92e3f2f61..415a7fda8 100644 --- a/src/backend/langflow/interface/retrievers/base.py +++ b/src/backend/langflow/interface/retrievers/base.py @@ -4,7 +4,7 @@ from langchain import retrievers from langflow.interface.base import LangChainTypeCreator from langflow.interface.importing.utils import import_class -from langflow.services.utils import get_settings_manager +from langflow.services.getters import get_settings_manager from langflow.template.frontend_node.retrievers import RetrieverFrontendNode from loguru import logger diff --git a/src/backend/langflow/interface/text_splitters/base.py b/src/backend/langflow/interface/text_splitters/base.py index 8b21303ce..fba4e32cc 100644 --- a/src/backend/langflow/interface/text_splitters/base.py +++ b/src/backend/langflow/interface/text_splitters/base.py @@ -1,7 +1,7 @@ from typing import Dict, List, Optional, Type from langflow.interface.base import LangChainTypeCreator -from langflow.services.utils import get_settings_manager +from langflow.services.getters import get_settings_manager from langflow.template.frontend_node.textsplitters import TextSplittersFrontendNode from langflow.interface.custom_lists import textsplitter_type_to_cls_dict diff --git a/src/backend/langflow/interface/toolkits/base.py b/src/backend/langflow/interface/toolkits/base.py index fe0003b15..be602cb7c 100644 --- a/src/backend/langflow/interface/toolkits/base.py +++ b/src/backend/langflow/interface/toolkits/base.py @@ -4,7 +4,7 @@ from langchain.agents import agent_toolkits from langflow.interface.base import LangChainTypeCreator from langflow.interface.importing.utils import import_class, import_module -from langflow.services.utils import get_settings_manager +from langflow.services.getters import get_settings_manager from loguru import logger from langflow.utils.util import build_template_from_class diff --git a/src/backend/langflow/interface/tools/base.py b/src/backend/langflow/interface/tools/base.py index 1dbc9a6ed..999f93703 100644 --- a/src/backend/langflow/interface/tools/base.py +++ b/src/backend/langflow/interface/tools/base.py @@ -15,7 +15,7 @@ from langflow.interface.tools.constants import ( OTHER_TOOLS, ) from langflow.interface.tools.util import get_tool_params -from langflow.services.utils import get_settings_manager +from langflow.services.getters import get_settings_manager from langflow.template.field.base import TemplateField from langflow.template.template.base import Template diff --git a/src/backend/langflow/interface/utilities/base.py b/src/backend/langflow/interface/utilities/base.py index 9009983b0..3cec49be9 100644 --- a/src/backend/langflow/interface/utilities/base.py +++ b/src/backend/langflow/interface/utilities/base.py @@ -5,7 +5,7 @@ from langchain import SQLDatabase, utilities from langflow.custom.customs import get_custom_nodes from langflow.interface.base import LangChainTypeCreator from langflow.interface.importing.utils import import_class -from langflow.services.utils import get_settings_manager +from langflow.services.getters import get_settings_manager from langflow.template.frontend_node.utilities import UtilitiesFrontendNode from loguru import logger diff --git a/src/backend/langflow/interface/utils.py b/src/backend/langflow/interface/utils.py index 75e854e16..537681b9f 100644 --- a/src/backend/langflow/interface/utils.py +++ b/src/backend/langflow/interface/utils.py @@ -10,7 +10,7 @@ from langchain.base_language import BaseLanguageModel from PIL.Image import Image from loguru import logger from langflow.services.chat.config import ChatConfig -from langflow.services.utils import get_settings_manager +from langflow.services.getters import get_settings_manager def load_file_into_dict(file_path: str) -> dict: diff --git a/src/backend/langflow/interface/vector_store/base.py b/src/backend/langflow/interface/vector_store/base.py index f7aca8c9c..06b8668f3 100644 --- a/src/backend/langflow/interface/vector_store/base.py +++ b/src/backend/langflow/interface/vector_store/base.py @@ -4,7 +4,7 @@ from langchain import vectorstores from langflow.interface.base import LangChainTypeCreator from langflow.interface.importing.utils import import_class -from langflow.services.utils import get_settings_manager +from langflow.services.getters import get_settings_manager from langflow.template.frontend_node.vectorstores import VectorStoreFrontendNode from loguru import logger diff --git a/src/backend/langflow/main.py b/src/backend/langflow/main.py index c869ec138..f5ecc6b9e 100644 --- a/src/backend/langflow/main.py +++ b/src/backend/langflow/main.py @@ -40,9 +40,11 @@ def create_app(): app.on_event("startup")(initialize_services) app.on_event("startup")(initialize_database) + app.on_event("startup")(setup_superuser) app.on_event("startup")(setup_llm_caching) - app.on_event("shutdown")(teardown_services) app.on_event("startup")(LangfuseInstance.update) + + app.on_event("shutdown")(teardown_services) app.on_event("shutdown")(LangfuseInstance.teardown) return app diff --git a/src/backend/langflow/services/auth/utils.py b/src/backend/langflow/services/auth/utils.py index 485968a38..801874c7d 100644 --- a/src/backend/langflow/services/auth/utils.py +++ b/src/backend/langflow/services/auth/utils.py @@ -12,7 +12,7 @@ from langflow.services.database.models.user.crud import ( get_user_by_username, update_user_last_login_at, ) -from langflow.services.utils import get_session, get_settings_manager +from langflow.services.getters import get_session, get_settings_manager from sqlmodel import Session oauth2_login = OAuth2PasswordBearer(tokenUrl="api/v1/login") @@ -37,15 +37,13 @@ async def api_key_security( result: Optional[Union[ApiKey, User]] = None if settings_manager.auth_settings.AUTO_LOGIN: # Get the first user - if not settings_manager.auth_settings.FIRST_SUPERUSER: + if not settings_manager.auth_settings.SUPERUSER: raise HTTPException( status_code=status.HTTP_400_BAD_REQUEST, detail="Missing first superuser credentials", ) - result = get_user_by_username( - db, settings_manager.auth_settings.FIRST_SUPERUSER - ) + result = get_user_by_username(db, settings_manager.auth_settings.SUPERUSER) elif not query_param and not header_param: raise HTTPException( @@ -182,8 +180,8 @@ def create_super_user( def create_user_longterm_token(db: Session = Depends(get_session)) -> dict: settings_manager = get_settings_manager() - username = settings_manager.auth_settings.FIRST_SUPERUSER - password = settings_manager.auth_settings.FIRST_SUPERUSER_PASSWORD + username = settings_manager.auth_settings.SUPERUSER + password = settings_manager.auth_settings.SUPERUSER_PASSWORD if not username or not password: raise HTTPException( status_code=status.HTTP_400_BAD_REQUEST, diff --git a/src/backend/langflow/services/database/manager.py b/src/backend/langflow/services/database/manager.py index 7f8afab6f..fb7bcdf8f 100644 --- a/src/backend/langflow/services/database/manager.py +++ b/src/backend/langflow/services/database/manager.py @@ -3,7 +3,7 @@ from typing import TYPE_CHECKING from langflow.services.base import Service from langflow.services.database.models.user.crud import get_user_by_username from langflow.services.database.utils import Result, TableResults -from langflow.services.utils import get_settings_manager +from langflow.services.getters import get_settings_manager from sqlalchemy import inspect import sqlalchemy as sa from sqlmodel import SQLModel, Session, create_engine @@ -169,7 +169,7 @@ class DatabaseManager(Service): # using the FIRST_SUPERUSER to get the user if settings_manager.auth_settings.AUTO_LOGIN: logger.debug("Removing default superuser") - username = settings_manager.auth_settings.FIRST_SUPERUSER + username = settings_manager.auth_settings.SUPERUSER with Session(self.engine) as session: user = get_user_by_username(session, username) session.delete(user) diff --git a/src/backend/langflow/services/database/models/user/crud.py b/src/backend/langflow/services/database/models/user/crud.py index f7f5958fe..36f03e684 100644 --- a/src/backend/langflow/services/database/models/user/crud.py +++ b/src/backend/langflow/services/database/models/user/crud.py @@ -3,7 +3,7 @@ from typing import Union from uuid import UUID from fastapi import Depends, HTTPException, status from langflow.services.database.models.user.user import User, UserUpdate -from langflow.services.utils import get_session +from langflow.services.getters import get_session from sqlalchemy.exc import IntegrityError from sqlmodel import Session from typing import Optional diff --git a/src/backend/langflow/services/getters.py b/src/backend/langflow/services/getters.py new file mode 100644 index 000000000..8b32aef02 --- /dev/null +++ b/src/backend/langflow/services/getters.py @@ -0,0 +1,26 @@ +from langflow.services import ServiceType, service_manager +from typing import TYPE_CHECKING, Generator + + +if TYPE_CHECKING: + from langflow.services.database.manager import DatabaseManager + from langflow.services.settings.manager import SettingsManager + from langflow.services.chat.manager import ChatManager + from sqlmodel import Session + + +def get_settings_manager() -> "SettingsManager": + return service_manager.get(ServiceType.SETTINGS_MANAGER) + + +def get_db_manager() -> "DatabaseManager": + return service_manager.get(ServiceType.DATABASE_MANAGER) + + +def get_session() -> Generator["Session", None, None]: + db_manager = service_manager.get(ServiceType.DATABASE_MANAGER) + yield from db_manager.get_session() + + +def get_chat_manager() -> "ChatManager": + return service_manager.get(ServiceType.CHAT_MANAGER) diff --git a/src/backend/langflow/services/plugins/langfuse.py b/src/backend/langflow/services/plugins/langfuse.py index 7460f20ad..7cdc9cff5 100644 --- a/src/backend/langflow/services/plugins/langfuse.py +++ b/src/backend/langflow/services/plugins/langfuse.py @@ -1,4 +1,4 @@ -from langflow.services.utils import get_settings_manager +from langflow.services.getters import get_settings_manager from langflow.utils.logger import logger ### Temporary implementation diff --git a/src/backend/langflow/services/settings/auth.py b/src/backend/langflow/services/settings/auth.py index d1f8197f0..a42025b47 100644 --- a/src/backend/langflow/services/settings/auth.py +++ b/src/backend/langflow/services/settings/auth.py @@ -1,6 +1,10 @@ from pathlib import Path from typing import Optional import secrets +from langflow.services.settings.constants import ( + DEFAULT_SUPERUSER, + DEFAULT_SUPERUSER_PASSWORD, +) from langflow.services.settings.utils import read_secret_from_file, write_secret_to_file from pydantic import BaseSettings, Field, validator @@ -31,8 +35,8 @@ class AuthSettings(BaseSettings): # If AUTO_LOGIN = True # > The application does not request login and logs in automatically as a super user. AUTO_LOGIN: bool = False - FIRST_SUPERUSER: str = "langflow" - FIRST_SUPERUSER_PASSWORD: str = "langflow" + SUPERUSER: str = DEFAULT_SUPERUSER + SUPERUSER_PASSWORD: str = DEFAULT_SUPERUSER_PASSWORD pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto") @@ -41,6 +45,10 @@ class AuthSettings(BaseSettings): extra = "ignore" env_prefix = "LANGFLOW_" + def reset_credentials(self): + self.SUPERUSER = DEFAULT_SUPERUSER + self.SUPERUSER_PASSWORD = DEFAULT_SUPERUSER_PASSWORD + @validator("SECRET_KEY", pre=True) def get_secret_key(cls, value, values): config_dir = values.get("CONFIG_DIR") diff --git a/src/backend/langflow/services/settings/constants.py b/src/backend/langflow/services/settings/constants.py new file mode 100644 index 000000000..6cf7d4823 --- /dev/null +++ b/src/backend/langflow/services/settings/constants.py @@ -0,0 +1,2 @@ +DEFAULT_SUPERUSER = "langflow" +DEFAULT_SUPERUSER_PASSWORD = "langflow" diff --git a/tests/test_cli.py b/tests/test_cli.py index 4ed00893e..2884dc800 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -3,7 +3,7 @@ from tempfile import tempdir from langflow.__main__ import app import pytest -from langflow.services import utils +from langflow.services import getters @pytest.fixture(scope="module") @@ -26,7 +26,7 @@ def test_components_path(runner, client, default_settings): ["run", "--components-path", str(temp_dir), *default_settings], ) assert result.exit_code == 0, result.stdout - settings_manager = utils.get_settings_manager() + settings_manager = getters.get_settings_manager() assert str(temp_dir) in settings_manager.settings.COMPONENTS_PATH diff --git a/tests/test_endpoints.py b/tests/test_endpoints.py index cbb1eb08c..2b706ba31 100644 --- a/tests/test_endpoints.py +++ b/tests/test_endpoints.py @@ -1,7 +1,7 @@ import uuid from langflow.services.auth.utils import get_password_hash from langflow.services.database.models.api_key.api_key import ApiKey -from langflow.services.utils import get_settings_manager +from langflow.services.getters import get_settings_manager import pytest from fastapi.testclient import TestClient from langflow.interface.tools.constants import CUSTOM_TOOLS diff --git a/tests/test_llms_template.py b/tests/test_llms_template.py index 14e151479..1771ce811 100644 --- a/tests/test_llms_template.py +++ b/tests/test_llms_template.py @@ -1,5 +1,5 @@ from fastapi.testclient import TestClient -from langflow.services.utils import get_settings_manager +from langflow.services.getters import get_settings_manager def test_llms_settings(client: TestClient, logged_in_headers): diff --git a/tests/test_prompts_template.py b/tests/test_prompts_template.py index 676448f73..b539fb75a 100644 --- a/tests/test_prompts_template.py +++ b/tests/test_prompts_template.py @@ -1,5 +1,5 @@ from fastapi.testclient import TestClient -from langflow.services.utils import get_settings_manager +from langflow.services.getters import get_settings_manager def test_prompts_settings(client: TestClient, logged_in_headers): diff --git a/tests/test_user.py b/tests/test_user.py index 54a713ef1..f28eb101c 100644 --- a/tests/test_user.py +++ b/tests/test_user.py @@ -2,7 +2,7 @@ from datetime import datetime from langflow.services.auth.utils import create_super_user, get_password_hash from langflow.services.database.models.user.user import User -from langflow.services.utils import get_settings_manager +from langflow.services.getters import get_settings_manager import pytest from langflow.services.database.models.user import UserUpdate @@ -13,8 +13,8 @@ def super_user(client, session): auth_settings = settings_manager.auth_settings return create_super_user( db=session, - username=auth_settings.FIRST_SUPERUSER, - password=auth_settings.FIRST_SUPERUSER_PASSWORD, + username=auth_settings.SUPERUSER, + password=auth_settings.SUPERUSER_PASSWORD, ) @@ -23,8 +23,8 @@ def super_user_headers(client, super_user): settings_manager = get_settings_manager() auth_settings = settings_manager.auth_settings login_data = { - "username": auth_settings.FIRST_SUPERUSER, - "password": auth_settings.FIRST_SUPERUSER_PASSWORD, + "username": auth_settings.SUPERUSER, + "password": auth_settings.SUPERUSER_PASSWORD, } response = client.post("/api/v1/login", data=login_data) assert response.status_code == 200 diff --git a/tests/test_vectorstore_template.py b/tests/test_vectorstore_template.py index 87394b890..5bd629906 100644 --- a/tests/test_vectorstore_template.py +++ b/tests/test_vectorstore_template.py @@ -1,5 +1,5 @@ from fastapi.testclient import TestClient -from langflow.services.utils import get_settings_manager +from langflow.services.getters import get_settings_manager # check that all agents are in settings.agents