🐛 fix(__main__.py): import correct function for get_db_manager and get_settings_manager in langflow/__main__.py

🐛 fix(api_key.py): import correct function for get_session in langflow/api/v1/api_key.py
🐛 fix(chat.py): import correct function for get_chat_manager and get_session in langflow/api/v1/chat.py
🐛 fix(components.py): import correct function for get_session in langflow/api/v1/components.py
🐛 fix(endpoints.py): import correct function for get_session and get_settings_manager in langflow/api/v1/endpoints.py
🐛 fix(flows.py): import correct function for get_session and get_settings_manager in langflow/api/v1/flows.py
🐛 fix(login.py): import correct function for get_session and get_settings_manager in langflow/api/v1/login.py
🐛 fix(users.py): import correct function for get_session in langflow/api/v1/users.py
🐛 fix(base.py): import correct function for get_settings_manager in langflow/interface/agents/base.py
🐛 fix(base.py): import correct function for get_settings_manager in langflow/interface/base.py
🐛 fix(base.py): import correct function for get_settings_manager in langflow/interface/chains/base.py
🐛 fix(custom_component.py): import correct function for get_db_manager in langflow/interface/custom/custom_component.py
🐛 fix(base.py): import correct function for get_settings_manager in langflow/interface/document_loaders/base.py
🐛 fix(base.py): import correct function for get_settings_manager in langflow/interface/embeddings/base.py
🐛 fix(base.py): import correct function for get_settings_manager in langflow/interface/llms/base.py
🐛 fix(base.py): import correct function for get_settings_manager in langflow/interface/memories/base.py
🐛 fix(base.py): import correct function for get_settings_manager in langflow/interface/output_parsers/base.py
🐛 fix(base.py): import correct function for get_settings_manager in langflow/interface/prompts/base.py
🐛 fix(base.py): import correct function for get_settings_manager in langflow/interface/retrievers/base.py

🐛 fix(base.py): update import statement for get_settings_manager function to reflect new module location
🐛 fix(base.py): update import statement for get_settings_manager function to reflect new module location
🐛 fix(base.py): update import statement for get_settings_manager function to reflect new module location
🐛 fix(base.py): update import statement for get_settings_manager function to reflect new module location
🐛 fix(base.py): update import statement for get_settings_manager function to reflect new module location
🐛 fix(base.py): update import statement for get_settings_manager function to reflect new module location
🐛 fix(base.py): update import statement for get_settings_manager function to reflect new module location
🐛 fix(base.py): update import statement for get_settings_manager function to reflect new module location
🐛 fix(base.py): update import statement for get_settings_manager function to reflect new module location
🐛 fix(base.py): update import statement for get_settings_manager function to reflect new module location
🐛 fix(base.py): update import statement for get_settings_manager function to reflect new module location
🐛 fix(base.py): update import statement for get_settings_manager function to reflect new module location
🐛 fix(base.py): update import statement for get_settings_manager function to reflect new module location
🐛 fix(base.py): update import statement for get_settings_manager function to reflect new module location
🐛 fix(base.py): update import statement for get_settings_manager function to reflect new module location
🐛 fix(base.py): update import statement for get_settings_manager function to reflect new module location
🐛 fix(base.py): update import statement for get_settings_manager function to reflect new module location
🐛 fix(base.py): update import statement for get_settings_manager function to reflect new module location
🐛 fix(base.py): update import statement for get_settings_manager function to reflect new module location
🐛 fix(base.py): update import statement for get_settings_manager function to reflect new module location
🐛 fix(base.py): update import statement for get_settings_manager function to reflect new module location
🐛 fix(base.py): update import statement for get_settings_manager function to reflect new module location
🐛 fix(base.py): update import statement for get_settings_manager function to reflect new module location
🐛 fix(base.py): update import statement for get_settings_manager function to reflect

🔧 fix(test_user.py): update import statement for get_settings_manager to reflect new module structure
🔧 fix(test_user.py): update variable names for superuser and superuser password to match new naming convention
🔧 fix(test_user.py): update variable names for superuser and superuser password to match new naming convention
🔧 fix(test_vectorstore_template.py): update import statement for get_settings_manager to reflect new module structure
This commit is contained in:
Gabriel Luiz Freitas Almeida 2023-09-18 15:42:39 -03:00
commit 0c3d59a804
39 changed files with 91 additions and 55 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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"])

View file

@ -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,

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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:

View file

@ -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

View file

@ -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

View file

@ -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,

View file

@ -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)

View file

@ -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

View file

@ -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)

View file

@ -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

View file

@ -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")

View file

@ -0,0 +1,2 @@
DEFAULT_SUPERUSER = "langflow"
DEFAULT_SUPERUSER_PASSWORD = "langflow"

View file

@ -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

View file

@ -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

View file

@ -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):

View file

@ -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):

View file

@ -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

View file

@ -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