🔧 chore(pyproject.toml): comment out langfuse dependency to temporarily disable it

🔧 chore(schemas.py): remove merge conflict markers from the file
🔧 chore(custom_component.py): remove merge conflict markers from the file
🔧 chore(flow.py): remove merge conflict markers from the file
🔧 chore(langfuse.py): add exception handling for ImportError when importing Langfuse
🔧 chore(auth.py): add type hinting to pwd_context variable
🔧 chore(base.py): remove merge conflict markers from the file
🔧 chore(settings.py): remove merge conflict markers from the file
🔧 chore(conftest.py): remove merge conflict markers from the file
🔧 chore(test_cli.py): remove merge conflict markers from the file
This commit is contained in:
Gabriel Luiz Freitas Almeida 2023-09-27 16:08:58 -03:00
commit 8c8b863b18
11 changed files with 790 additions and 499 deletions

1190
poetry.lock generated

File diff suppressed because it is too large Load diff

View file

@ -90,7 +90,7 @@ pydantic-settings = "^2.0.3"
zep-python = { version = "^1.1.0a0", allow-prereleases = true } zep-python = { version = "^1.1.0a0", allow-prereleases = true }
pywin32 = { version = "^306", markers = "sys_platform == 'win32'" } pywin32 = { version = "^306", markers = "sys_platform == 'win32'" }
loguru = "^0.7.1" loguru = "^0.7.1"
langfuse = "^1.0.13" # langfuse = "^1.0.13"
pillow = "^10.0.0" pillow = "^10.0.0"
metal-sdk = "^2.0.2" metal-sdk = "^2.0.2"
markupsafe = "^2.1.3" markupsafe = "^2.1.3"

View file

@ -4,15 +4,10 @@ from typing import Any, Dict, List, Optional, Union
from uuid import UUID from uuid import UUID
from langflow.services.database.models.api_key.api_key import ApiKeyRead from langflow.services.database.models.api_key.api_key import ApiKeyRead
from langflow.services.database.models.flow import FlowCreate, FlowRead from langflow.services.database.models.flow import FlowCreate, FlowRead
<<<<<<< HEAD
from pydantic import BaseModel, Field, field_validator
import json
=======
from langflow.services.database.models.user import UserRead from langflow.services.database.models.user import UserRead
from langflow.services.database.models.base import orjson_dumps from langflow.services.database.models.base import orjson_dumps
from pydantic import BaseModel, Field, validator from pydantic import BaseModel, Field, field_validator
>>>>>>> origin/dev
class BuildStatus(Enum): class BuildStatus(Enum):

View file

@ -1,9 +1,5 @@
<<<<<<< HEAD from typing import Any, Callable, ClassVar, List, Optional, Union, Dict
from typing import Any, Callable, ClassVar, Dict, List, Optional
=======
from typing import Any, Callable, List, Optional, Union
from uuid import UUID from uuid import UUID
>>>>>>> origin/dev
from fastapi import HTTPException from fastapi import HTTPException
from langflow.interface.custom.constants import CUSTOM_COMPONENT_SUPPORTED_TYPES from langflow.interface.custom.constants import CUSTOM_COMPONENT_SUPPORTED_TYPES
from langflow.interface.custom.component import Component from langflow.interface.custom.component import Component
@ -25,16 +21,9 @@ class CustomComponent(Component, extra=Extra.allow):
code_class_base_inheritance: ClassVar[Dict] = "CustomComponent" code_class_base_inheritance: ClassVar[Dict] = "CustomComponent"
function_entrypoint_name: ClassVar[Dict] = "build" function_entrypoint_name: ClassVar[Dict] = "build"
function: Optional[Callable] = None function: Optional[Callable] = None
<<<<<<< HEAD return_type_valid_list: List[str] = list(CUSTOM_COMPONENT_SUPPORTED_TYPES.keys())
return_type_valid_list: ClassVar[Dict] = list(
CUSTOM_COMPONENT_SUPPORTED_TYPES.keys()
)
repr_value: Optional[str] = ""
=======
return_type_valid_list = list(CUSTOM_COMPONENT_SUPPORTED_TYPES.keys())
repr_value: Optional[Any] = "" repr_value: Optional[Any] = ""
user_id: Optional[Union[UUID, str]] = None user_id: Optional[Union[UUID, str]] = None
>>>>>>> origin/dev
def __init__(self, **data): def __init__(self, **data):
super().__init__(**data) super().__init__(**data)

View file

@ -1,12 +1,6 @@
# Path: src/backend/langflow/database/models/flow.py # Path: src/backend/langflow/database/models/flow.py
from langflow.services.database.models.base import SQLModelSerializable from langflow.services.database.models.base import SQLModelSerializable
<<<<<<< HEAD:src/backend/langflow/services/database/models/flow.py
from sqlmodel import Field, JSON, Column
from uuid import UUID, uuid4
from typing import Dict, Optional
from pydantic import field_validator
=======
from pydantic import validator from pydantic import validator
from sqlmodel import Field, JSON, Column, Relationship from sqlmodel import Field, JSON, Column, Relationship
from uuid import UUID, uuid4 from uuid import UUID, uuid4
@ -14,7 +8,6 @@ from typing import Dict, Optional, TYPE_CHECKING
if TYPE_CHECKING: if TYPE_CHECKING:
from langflow.services.database.models.user import User from langflow.services.database.models.user import User
>>>>>>> origin/dev:src/backend/langflow/services/database/models/flow/flow.py
class FlowBase(SQLModelSerializable): class FlowBase(SQLModelSerializable):
@ -22,15 +15,8 @@ class FlowBase(SQLModelSerializable):
description: Optional[str] = Field(index=True, default="") description: Optional[str] = Field(index=True, default="")
data: Optional[Dict] = Field(default=None) data: Optional[Dict] = Field(default=None)
<<<<<<< HEAD:src/backend/langflow/services/database/models/flow.py
@field_validator("data")
@classmethod
def validate_json(cls, v):
# dict_keys(['description', 'name', 'id', 'data'])
=======
@validator("data") @validator("data")
def validate_json(v): def validate_json(v):
>>>>>>> origin/dev:src/backend/langflow/services/database/models/flow/flow.py
if not v: if not v:
return v return v
if not isinstance(v, dict): if not isinstance(v, dict):

View file

@ -17,6 +17,7 @@ class LangfuseInstance:
@classmethod @classmethod
def create(cls): def create(cls):
try:
logger.debug("Creating Langfuse instance") logger.debug("Creating Langfuse instance")
from langfuse import Langfuse # type: ignore from langfuse import Langfuse # type: ignore
@ -35,6 +36,9 @@ class LangfuseInstance:
else: else:
logger.debug("No Langfuse credentials found") logger.debug("No Langfuse credentials found")
cls._instance = None cls._instance = None
except ImportError:
logger.debug("Langfuse not installed")
cls._instance = None
@classmethod @classmethod
def update(cls): def update(cls):

View file

@ -7,7 +7,8 @@ from langflow.services.settings.constants import (
) )
from langflow.services.settings.utils import read_secret_from_file, write_secret_to_file from langflow.services.settings.utils import read_secret_from_file, write_secret_to_file
from pydantic import BaseSettings, Field, validator from pydantic import Field, validator
from pydantic_settings import BaseSettings
from passlib.context import CryptContext from passlib.context import CryptContext
from loguru import logger from loguru import logger
@ -39,7 +40,7 @@ class AuthSettings(BaseSettings):
SUPERUSER: str = DEFAULT_SUPERUSER SUPERUSER: str = DEFAULT_SUPERUSER
SUPERUSER_PASSWORD: str = DEFAULT_SUPERUSER_PASSWORD SUPERUSER_PASSWORD: str = DEFAULT_SUPERUSER_PASSWORD
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto") pwd_context: CryptContext = CryptContext(schemes=["bcrypt"], deprecated="auto")
class Config: class Config:
validate_assignment = True validate_assignment = True

View file

@ -7,14 +7,9 @@ from typing import Optional, List
from pathlib import Path from pathlib import Path
import yaml import yaml
<<<<<<< HEAD
from pydantic_settings import SettingsConfigDict, BaseSettings
from pydantic import field_validator, validator from pydantic import field_validator, validator
from langflow.utils.logger import logger from pydantic_settings import BaseSettings, SettingsConfigDict
=======
from pydantic import BaseSettings, root_validator, validator
from loguru import logger from loguru import logger
>>>>>>> origin/dev
# BASE_COMPONENTS_PATH = str(Path(__file__).parent / "components") # BASE_COMPONENTS_PATH = str(Path(__file__).parent / "components")
BASE_COMPONENTS_PATH = str(Path(__file__).parent.parent.parent / "components") BASE_COMPONENTS_PATH = str(Path(__file__).parent.parent.parent / "components")

View file

@ -5,7 +5,8 @@ from typing import Optional, List
from pathlib import Path from pathlib import Path
import yaml import yaml
from pydantic import BaseSettings, root_validator, validator from pydantic import root_validator, validator
from pydantic_settings import BaseSettings
from langflow.utils.logger import logger from langflow.utils.logger import logger
BASE_COMPONENTS_PATH = str(Path(__file__).parent / "components") BASE_COMPONENTS_PATH = str(Path(__file__).parent / "components")

View file

@ -165,12 +165,6 @@ def json_flow_with_prompt_and_history():
return f.read() return f.read()
<<<<<<< HEAD
@pytest.fixture(name="client", scope="function", autouse=True)
def client_fixture(session: Session):
def get_session_override():
return session
=======
@pytest.fixture @pytest.fixture
def json_vector_store(): def json_vector_store():
with open(pytest.VECTOR_STORE_PATH, "r") as f: with open(pytest.VECTOR_STORE_PATH, "r") as f:
@ -184,7 +178,6 @@ def client_fixture(session: Session, monkeypatch):
db_path = Path(db_dir) / "test.db" db_path = Path(db_dir) / "test.db"
monkeypatch.setenv("LANGFLOW_DATABASE_URL", f"sqlite:///{db_path}") monkeypatch.setenv("LANGFLOW_DATABASE_URL", f"sqlite:///{db_path}")
monkeypatch.setenv("LANGFLOW_AUTO_LOGIN", "false") monkeypatch.setenv("LANGFLOW_AUTO_LOGIN", "false")
>>>>>>> origin/dev
from langflow.main import create_app from langflow.main import create_app

View file

@ -26,10 +26,6 @@ def test_components_path(runner, client, default_settings):
["run", "--components-path", str(temp_dir), *default_settings], ["run", "--components-path", str(temp_dir), *default_settings],
) )
assert result.exit_code == 0, result.stdout assert result.exit_code == 0, result.stdout
<<<<<<< HEAD
settings_manager = utils.get_settings_manager()
assert str(temp_dir) in settings_manager.settings.COMPONENTS_PATH
=======
settings_service = getters.get_settings_service() settings_service = getters.get_settings_service()
assert str(temp_dir) in settings_service.settings.COMPONENTS_PATH assert str(temp_dir) in settings_service.settings.COMPONENTS_PATH
@ -38,4 +34,3 @@ def test_superuser(runner, client, session):
result = runner.invoke(app, ["superuser"], input="admin\nadmin\n") result = runner.invoke(app, ["superuser"], input="admin\nadmin\n")
assert result.exit_code == 0, result.stdout assert result.exit_code == 0, result.stdout
assert "Superuser created successfully." in result.stdout assert "Superuser created successfully." in result.stdout
>>>>>>> origin/dev