Add ruff rules for TYPE_CHECKING (TCH) (#3999)

This commit is contained in:
Christophe Bornet 2024-10-04 16:00:09 +02:00 committed by GitHub
commit e2d907f3c5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
45 changed files with 153 additions and 108 deletions

View file

@ -6,18 +6,18 @@ from typing import TYPE_CHECKING, Any
from fastapi import HTTPException
from loguru import logger
from sqlalchemy import delete
from sqlmodel import Session
from langflow.graph.graph.base import Graph
from langflow.services.chat.service import ChatService
from langflow.services.database.models.flow import Flow
from langflow.services.database.models.transactions.model import TransactionTable
from langflow.services.database.models.vertex_builds.model import VertexBuildTable
from langflow.services.store.schema import StoreComponentCreate
from langflow.services.store.utils import get_lf_version_from_pypi
if TYPE_CHECKING:
from langflow.services.database.models.flow.model import Flow
from sqlmodel import Session
from langflow.services.chat.service import ChatService
from langflow.services.store.schema import StoreComponentCreate
API_WORDS = ["api", "key", "token"]

View file

@ -1,9 +1,8 @@
from abc import abstractmethod
from typing import cast
from typing import TYPE_CHECKING, cast
from langchain.agents import AgentExecutor, BaseMultiActionAgent, BaseSingleActionAgent
from langchain.agents.agent import RunnableAgent
from langchain_core.messages import BaseMessage
from langchain_core.runnables import Runnable
from langflow.base.agents.callback import AgentAsyncHandler
@ -17,6 +16,9 @@ from langflow.schema.message import Message
from langflow.template import Output
from langflow.utils.constants import MESSAGE_SENDER_AI
if TYPE_CHECKING:
from langchain_core.messages import BaseMessage
class LCAgentComponent(Component):
trace_type = "agent"

View file

@ -1,10 +1,8 @@
from __future__ import annotations
import re
from collections.abc import Callable
from typing import TYPE_CHECKING
from langchain_core.tools import BaseTool
from langchain_core.tools.structured import StructuredTool
from loguru import logger
@ -12,6 +10,10 @@ from langflow.base.tools.constants import TOOL_OUTPUT_NAME
from langflow.io.schema import create_input_schema
if TYPE_CHECKING:
from collections.abc import Callable
from langchain_core.tools import BaseTool
from langflow.custom.custom_component.component import Component
from langflow.inputs.inputs import InputTypes
from langflow.io import Output

View file

@ -1,18 +1,21 @@
from __future__ import annotations
from typing import Any
from typing import TYPE_CHECKING, Any
from langchain_core.runnables import RunnableConfig
from langchain_core.tools import BaseTool, ToolException
from loguru import logger
from pydantic.v1 import BaseModel
from langflow.base.flow_processing.utils import build_data_from_result_data, format_flow_output_data
from langflow.graph.graph.base import Graph
from langflow.graph.vertex.base import Vertex
from langflow.helpers.flow import build_schema_from_inputs, get_arg_names, get_flow_inputs, run_flow
from langflow.utils.async_helpers import run_until_complete
if TYPE_CHECKING:
from langchain_core.runnables import RunnableConfig
from pydantic.v1 import BaseModel
from langflow.graph.graph.base import Graph
from langflow.graph.vertex.base import Vertex
class FlowTool(BaseTool):
name: str

View file

@ -1,8 +1,7 @@
from abc import abstractmethod
from functools import wraps
from typing import cast
from typing import TYPE_CHECKING, cast
from langchain_core.documents import Document
from loguru import logger
from langflow.custom import Component
@ -11,6 +10,9 @@ from langflow.helpers.data import docs_to_data
from langflow.io import Output
from langflow.schema import Data
if TYPE_CHECKING:
from langchain_core.documents import Document
def check_cached_vector_store(f):
"""

View file

@ -1,12 +1,16 @@
from typing import TYPE_CHECKING
from langchain.chains import create_sql_query_chain
from langchain_core.prompts import PromptTemplate
from langchain_core.runnables import Runnable
from langflow.base.chains.model import LCChainComponent
from langflow.field_typing import Message
from langflow.inputs import HandleInput, IntInput, MultilineInput
from langflow.template import Output
if TYPE_CHECKING:
from langchain_core.runnables import Runnable
class SQLGeneratorComponent(LCChainComponent):
display_name = "Natural Language to SQL"

View file

@ -1,17 +1,19 @@
from typing import Any
from typing import TYPE_CHECKING, Any
from loguru import logger
from langflow.base.flow_processing.utils import build_data_from_result_data
from langflow.custom import CustomComponent
from langflow.graph.graph.base import Graph
from langflow.graph.schema import RunOutputs
from langflow.graph.vertex.base import Vertex
from langflow.helpers.flow import get_flow_inputs
from langflow.schema import Data
from langflow.schema.dotdict import dotdict
from langflow.template.field.base import Input
if TYPE_CHECKING:
from langflow.graph.schema import RunOutputs
class SubFlowComponent(CustomComponent):
display_name = "Sub Flow"

View file

@ -1,8 +1,12 @@
from typing import TYPE_CHECKING
from langflow.custom import Component
from langflow.field_typing import Embeddings
from langflow.io import HandleInput, MessageInput, Output
from langflow.schema import Data
from langflow.schema.message import Message
if TYPE_CHECKING:
from langflow.field_typing import Embeddings
from langflow.schema.message import Message
class TextEmbedderComponent(Component):

View file

@ -1,11 +1,13 @@
from typing import Any
from typing import TYPE_CHECKING, Any
from langflow.base.flow_processing.utils import build_data_from_run_outputs
from langflow.custom import Component
from langflow.graph.schema import RunOutputs
from langflow.io import DropdownInput, MessageTextInput, NestedDictInput, Output
from langflow.schema import Data, dotdict
if TYPE_CHECKING:
from langflow.graph.schema import RunOutputs
class RunFlowComponent(Component):
display_name = "Run Flow"

View file

@ -1,8 +1,7 @@
from copy import deepcopy
from typing import TYPE_CHECKING
from chromadb.config import Settings
from langchain_chroma.vectorstores import Chroma
from langchain_chroma import Chroma
from loguru import logger
from langflow.base.vectorstores.model import LCVectorStoreComponent, check_cached_vector_store
@ -10,9 +9,6 @@ from langflow.base.vectorstores.utils import chroma_collection_to_data
from langflow.io import BoolInput, DataInput, DropdownInput, HandleInput, IntInput, MultilineInput, StrInput
from langflow.schema import Data
if TYPE_CHECKING:
from langchain_chroma import Chroma
class ChromaVectorStoreComponent(LCVectorStoreComponent):
"""

View file

@ -1,6 +1,6 @@
import json
import traceback
from typing import TYPE_CHECKING, Any
from typing import Any
from langchain_community.vectorstores import OpenSearchVectorSearch
from loguru import logger
@ -19,9 +19,6 @@ from langflow.io import (
)
from langflow.schema import Data
if TYPE_CHECKING:
from langchain_community.vectorstores import OpenSearchVectorSearch
class OpenSearchVectorStoreComponent(LCVectorStoreComponent):
"""

View file

@ -2,11 +2,9 @@ from __future__ import annotations
import ast
import inspect
from collections.abc import Callable
from copy import deepcopy
from textwrap import dedent
from typing import TYPE_CHECKING, Any, ClassVar, get_type_hints
from uuid import UUID
import nanoid # type: ignore
import yaml
@ -14,13 +12,11 @@ from pydantic import BaseModel
from langflow.base.tools.constants import TOOL_OUTPUT_NAME
from langflow.custom.tree_visitor import RequiredInputsVisitor
from langflow.events.event_manager import EventManager
from langflow.field_typing import Tool
from langflow.field_typing import Tool # noqa: TCH001 Needed by add_toolkit_output
from langflow.graph.state.model import create_state_model
from langflow.helpers.custom import format_type
from langflow.schema.artifact import get_artifact_type, post_process_raw
from langflow.schema.data import Data
from langflow.schema.log import LoggableType
from langflow.schema.message import Message
from langflow.services.settings.feature_flags import FEATURE_FLAGS
from langflow.services.tracing.schema import Log
@ -32,9 +28,14 @@ from langflow.utils.util import find_closest_match
from .custom_component import CustomComponent
if TYPE_CHECKING:
from collections.abc import Callable
from uuid import UUID
from langflow.events.event_manager import EventManager
from langflow.graph.edge.schema import EdgeData
from langflow.graph.vertex.base import Vertex
from langflow.inputs.inputs import InputTypes
from langflow.schema.log import LoggableType
_ComponentToolkit = None

View file

@ -12,11 +12,8 @@ from pydantic import BaseModel
from langflow.custom.custom_component.base_component import BaseComponent
from langflow.helpers.flow import list_flows, load_flow, run_flow
from langflow.schema import Data
from langflow.schema.dotdict import dotdict
from langflow.schema.schema import OutputValue
from langflow.services.deps import get_storage_service, get_variable_service, session_scope
from langflow.services.storage.service import StorageService
from langflow.services.tracing.schema import Log
from langflow.template.utils import update_frontend_node_with_template_values
from langflow.type_extraction.type_extraction import post_process_type
from langflow.utils import validate
@ -26,7 +23,10 @@ if TYPE_CHECKING:
from langflow.graph.graph.base import Graph
from langflow.graph.vertex.base import Vertex
from langflow.schema.dotdict import dotdict
from langflow.schema.schema import OutputValue
from langflow.services.storage.service import StorageService
from langflow.services.tracing.schema import Log
from langflow.services.tracing.service import TracingService

View file

@ -15,10 +15,8 @@ from typing import TYPE_CHECKING, Any, cast
import nest_asyncio
from loguru import logger
from langflow.events.event_manager import EventManager
from langflow.exceptions.component import ComponentBuildException
from langflow.graph.edge.base import CycleEdge, Edge
from langflow.graph.edge.schema import EdgeData
from langflow.graph.graph.constants import Finish, lazy_load_vertex_dict
from langflow.graph.graph.runnable_vertices_manager import RunnableVerticesManager
from langflow.graph.graph.schema import GraphData, GraphDump, StartConfigDict, VertexBuildResult
@ -38,17 +36,19 @@ from langflow.graph.vertex.base import Vertex, VertexStates
from langflow.graph.vertex.schema import NodeData, NodeTypeEnum
from langflow.graph.vertex.types import ComponentVertex, InterfaceVertex, StateVertex
from langflow.logging.logger import LogConfig, configure
from langflow.schema import Data
from langflow.schema.schema import INPUT_FIELD_NAME, InputType
from langflow.services.cache.utils import CacheMiss
from langflow.services.chat.schema import GetCache, SetCache
from langflow.services.deps import get_chat_service, get_tracing_service
from langflow.utils.async_helpers import run_until_complete
if TYPE_CHECKING:
from langflow.api.v1.schemas import InputValueRequest
from langflow.custom.custom_component.component import Component
from langflow.events.event_manager import EventManager
from langflow.graph.edge.schema import EdgeData
from langflow.graph.schema import ResultData
from langflow.schema import Data
from langflow.services.chat.schema import GetCache, SetCache
from langflow.services.tracing.service import TracingService

View file

@ -6,11 +6,11 @@ from typing_extensions import NotRequired, TypedDict
from langflow.graph.edge.schema import EdgeData
from langflow.graph.vertex.schema import NodeData
from langflow.schema.log import LoggableType
if TYPE_CHECKING:
from langflow.graph.schema import ResultData
from langflow.graph.vertex.base import Vertex
from langflow.schema.log import LoggableType
class ViewPort(TypedDict):

View file

@ -1,6 +1,5 @@
from __future__ import annotations
from collections.abc import Callable
from typing import TYPE_CHECKING
from loguru import logger
@ -8,6 +7,8 @@ from loguru import logger
from langflow.services.deps import get_settings_service, get_state_service
if TYPE_CHECKING:
from collections.abc import Callable
from langflow.services.state.service import StateService

View file

@ -13,11 +13,9 @@ from typing import TYPE_CHECKING, Any
import pandas as pd
from loguru import logger
from langflow.events.event_manager import EventManager
from langflow.exceptions.component import ComponentBuildException
from langflow.graph.schema import INPUT_COMPONENTS, OUTPUT_COMPONENTS, InterfaceComponentTypes, ResultData
from langflow.graph.utils import UnbuiltObject, UnbuiltResult, log_transaction
from langflow.graph.vertex.schema import NodeData
from langflow.interface import initialize
from langflow.interface.listing import lazy_load_dict
from langflow.schema.artifact import ArtifactType
@ -25,15 +23,17 @@ from langflow.schema.data import Data
from langflow.schema.message import Message
from langflow.schema.schema import INPUT_FIELD_NAME, OutputValue, build_output_logs
from langflow.services.deps import get_storage_service
from langflow.services.tracing.schema import Log
from langflow.utils.constants import DIRECT_TYPES
from langflow.utils.schemas import ChatOutputResponse
from langflow.utils.util import sync_to_async, unescape_string
if TYPE_CHECKING:
from langflow.custom import Component
from langflow.events.event_manager import EventManager
from langflow.graph.edge.base import CycleEdge, Edge
from langflow.graph.graph.base import Graph
from langflow.graph.vertex.schema import NodeData
from langflow.services.tracing.schema import Log
class VertexStates(str, Enum):

View file

@ -14,8 +14,6 @@ from langflow.graph.schema import CHAT_COMPONENTS, RECORDS_COMPONENTS, Interface
from langflow.graph.utils import UnbuiltObject, log_transaction, log_vertex_build, rewrite_file_path, serialize_field
from langflow.graph.vertex.base import Vertex
from langflow.graph.vertex.exceptions import NoComponentInstance
from langflow.graph.vertex.schema import NodeData
from langflow.inputs.inputs import InputTypes
from langflow.schema import Data
from langflow.schema.artifact import ArtifactType
from langflow.schema.message import Message
@ -26,6 +24,8 @@ from langflow.utils.util import unescape_string
if TYPE_CHECKING:
from langflow.graph.edge.base import CycleEdge
from langflow.graph.vertex.schema import NodeData
from langflow.inputs.inputs import InputTypes
class CustomComponentVertex(Vertex):

View file

@ -1,6 +1,5 @@
from __future__ import annotations
from collections.abc import Awaitable, Callable
from typing import TYPE_CHECKING, Any, cast
from uuid import UUID
@ -8,16 +7,18 @@ from fastapi import HTTPException
from pydantic.v1 import BaseModel, Field, create_model
from sqlmodel import select
from langflow.graph.schema import RunOutputs
from langflow.schema import Data
from langflow.schema.schema import INPUT_FIELD_NAME
from langflow.services.database.models.flow import Flow
from langflow.services.database.models.flow.model import FlowRead
from langflow.services.deps import get_settings_service, session_scope
if TYPE_CHECKING:
from collections.abc import Awaitable, Callable
from langflow.graph.graph.base import Graph
from langflow.graph.schema import RunOutputs
from langflow.graph.vertex.base import Vertex
from langflow.schema import Data
INPUT_TYPE_MAP = {
"ChatInput": {"type_hint": "Optional[str]", "default": '""'},

View file

@ -10,13 +10,13 @@ from loguru import logger
from pydantic import PydanticDeprecatedSince20
from langflow.custom.eval import eval_custom_component_code
from langflow.events.event_manager import EventManager
from langflow.schema import Data
from langflow.schema.artifact import get_artifact_type, post_process_raw
from langflow.services.deps import get_tracing_service
if TYPE_CHECKING:
from langflow.custom import Component, CustomComponent
from langflow.events.event_manager import EventManager
from langflow.graph.vertex.base import Vertex

View file

@ -1,6 +1,5 @@
from __future__ import annotations
import asyncio
import json
from typing import TYPE_CHECKING
@ -9,6 +8,8 @@ from loguru import logger
from langflow.custom.utils import abuild_custom_components, build_custom_components
if TYPE_CHECKING:
import asyncio
from langflow.services.cache.base import CacheService
from langflow.services.settings.service import SettingsService

View file

@ -2,12 +2,12 @@ from __future__ import annotations
from typing import TYPE_CHECKING
from langchain_core.callbacks import BaseCallbackHandler
from loguru import logger
from langflow.services.deps import get_plugins_service
if TYPE_CHECKING:
from langchain_core.callbacks import BaseCallbackHandler
from langfuse.callback import CallbackHandler # type: ignore

View file

@ -5,8 +5,6 @@ from typing import TYPE_CHECKING, Any, cast
from loguru import logger
from pydantic import BaseModel
from langflow.graph.graph.base import Graph
from langflow.graph.schema import RunOutputs
from langflow.graph.vertex.base import Vertex
from langflow.schema.graph import InputValue, Tweaks
from langflow.schema.schema import INPUT_FIELD_NAME
@ -14,6 +12,8 @@ from langflow.services.deps import get_settings_service
if TYPE_CHECKING:
from langflow.api.v1.schemas import InputValueRequest
from langflow.graph.graph.base import Graph
from langflow.graph.schema import RunOutputs
class Result(BaseModel):

View file

@ -1,15 +1,17 @@
import copy
import json
from typing import cast
from typing import TYPE_CHECKING, cast
from langchain_core.documents import Document
from langchain_core.messages import AIMessage, BaseMessage, HumanMessage
from langchain_core.prompt_values import ImagePromptValue
from langchain_core.prompts.image import ImagePromptTemplate
from pydantic import BaseModel, model_serializer, model_validator
from langflow.utils.constants import MESSAGE_SENDER_AI, MESSAGE_SENDER_USER
if TYPE_CHECKING:
from langchain_core.prompt_values import ImagePromptValue
class Data(BaseModel):
"""

View file

@ -2,13 +2,12 @@ import asyncio
import json
from collections.abc import AsyncIterator, Iterator
from datetime import datetime, timezone
from typing import Annotated, Any
from typing import TYPE_CHECKING, Annotated, Any
from uuid import UUID
from fastapi.encoders import jsonable_encoder
from langchain_core.load import load
from langchain_core.messages import AIMessage, BaseMessage, HumanMessage, SystemMessage
from langchain_core.prompt_values import ImagePromptValue
from langchain_core.prompts import BaseChatPromptTemplate, ChatPromptTemplate, PromptTemplate
from langchain_core.prompts.image import ImagePromptTemplate
from loguru import logger
@ -24,6 +23,9 @@ from langflow.utils.constants import (
MESSAGE_SENDER_USER,
)
if TYPE_CHECKING:
from langchain_core.prompt_values import ImagePromptValue
def _timestamp_to_str(timestamp: datetime | str) -> str:
if isinstance(timestamp, str):

View file

@ -1,13 +1,16 @@
import datetime
import secrets
import threading
from typing import TYPE_CHECKING
from uuid import UUID
from sqlmodel import Session, select
from sqlmodel.sql.expression import SelectOfScalar
from langflow.services.database.models.api_key import ApiKey, ApiKeyCreate, ApiKeyRead, UnmaskedApiKeyRead
if TYPE_CHECKING:
from sqlmodel.sql.expression import SelectOfScalar
def get_api_keys(session: Session, user_id: UUID) -> list[ApiKeyRead]:
query: SelectOfScalar = select(ApiKey).where(ApiKey.user_id == user_id)

View file

@ -14,13 +14,13 @@ from sqlalchemy import Text, UniqueConstraint
from sqlmodel import JSON, Column, Field, Relationship, SQLModel
from langflow.schema import Data
from langflow.services.database.models.vertex_builds.model import VertexBuildTable
if TYPE_CHECKING:
from langflow.services.database.models import TransactionTable
from langflow.services.database.models.folder import Folder
from langflow.services.database.models.message import MessageTable
from langflow.services.database.models.user import User
from langflow.services.database.models.vertex_builds.model import VertexBuildTable
class FlowBase(SQLModel):

View file

@ -1,14 +1,11 @@
from typing import TYPE_CHECKING, Optional
from typing import Optional
from uuid import UUID, uuid4
from sqlalchemy import Text, UniqueConstraint
from sqlmodel import Column, Field, Relationship, SQLModel
from langflow.services.database.models.flow.model import FlowRead
if TYPE_CHECKING:
from langflow.services.database.models.flow.model import Flow
from langflow.services.database.models.user.model import User
from langflow.services.database.models.flow.model import Flow, FlowRead
from langflow.services.database.models.user.model import User
class FolderBase(SQLModel):
@ -26,8 +23,8 @@ class Folder(FolderBase, table=True): # type: ignore
)
children: list["Folder"] = Relationship(back_populates="parent")
user_id: UUID | None = Field(default=None, foreign_key="user.id")
user: "User" = Relationship(back_populates="folders")
flows: list["Flow"] = Relationship(
user: User = Relationship(back_populates="folders")
flows: list[Flow] = Relationship(
back_populates="folder", sa_relationship_kwargs={"cascade": "all, delete, delete-orphan"}
)
@ -47,7 +44,7 @@ class FolderRead(FolderBase):
class FolderReadWithFlows(FolderBase):
id: UUID
parent_id: UUID | None = Field()
flows: list["FlowRead"] = Field(default=[])
flows: list[FlowRead] = Field(default=[])
class FolderUpdate(SQLModel):

View file

@ -1,4 +1,3 @@
from typing import TYPE_CHECKING
from uuid import UUID
from sqlmodel import Session, and_, select, update
@ -8,9 +7,6 @@ from langflow.services.database.models.flow.model import Flow
from .constants import DEFAULT_FOLDER_DESCRIPTION, DEFAULT_FOLDER_NAME
from .model import Folder
if TYPE_CHECKING:
pass
def create_default_folder_if_it_doesnt_exist(session: Session, user_id: UUID):
folder = session.exec(select(Folder).where(Folder.user_id == user_id)).first()

View file

@ -26,8 +26,6 @@ from langflow.services.deps import get_settings_service
from langflow.services.utils import teardown_superuser
if TYPE_CHECKING:
from sqlalchemy.engine import Engine
from langflow.services.settings.service import SettingsService

View file

@ -1,6 +1,5 @@
from __future__ import annotations
from collections.abc import Generator
from contextlib import contextmanager
from typing import TYPE_CHECKING
@ -9,6 +8,8 @@ from loguru import logger
from langflow.services.schema import ServiceType
if TYPE_CHECKING:
from collections.abc import Generator
from sqlmodel import Session
from langflow.services.cache.service import CacheService

View file

@ -77,7 +77,7 @@ def import_all_services_into_a_dict():
for name, obj in inspect.getmembers(module, inspect.isclass):
if issubclass(obj, Service) and obj is not Service:
services[name] = obj
break
# break
except Exception as exc:
logger.exception(exc)
msg = "Could not initialize services. Please check your settings."

View file

@ -1,9 +1,12 @@
from collections.abc import Coroutine
from typing import TYPE_CHECKING
from langflow.services.base import Service
from langflow.services.cache.base import CacheService
from langflow.services.session.utils import compute_dict_hash, session_id_generator
if TYPE_CHECKING:
from langflow.services.cache.base import CacheService
class SessionService(Service):
name = "session_service"

View file

@ -1,11 +1,14 @@
from collections.abc import Callable
from typing import Any
from typing import TYPE_CHECKING, Any
from celery.result import AsyncResult # type: ignore
from langflow.services.task.backends.base import TaskBackend
from langflow.worker import celery_app
if TYPE_CHECKING:
from celery import Task
class CeleryBackend(TaskBackend):
name = "celery"
@ -15,7 +18,6 @@ class CeleryBackend(TaskBackend):
def launch_task(self, task_func: Callable[..., Any], *args: Any, **kwargs: Any) -> tuple[str, AsyncResult]:
# I need to type the delay method to make it easier
from celery import Task # type: ignore
if not hasattr(task_func, "delay"):
msg = f"Task function {task_func} does not have a delay method"

View file

@ -7,11 +7,11 @@ from loguru import logger
from langflow.services.base import Service
from langflow.services.task.backends.anyio import AnyIOBackend
from langflow.services.task.backends.base import TaskBackend
from langflow.services.task.utils import get_celery_worker_status
if TYPE_CHECKING:
from langflow.services.settings.service import SettingsService
from langflow.services.task.backends.base import TaskBackend
def check_celery_availability():

View file

@ -1,7 +1,8 @@
import contextlib
from typing import TYPE_CHECKING
if TYPE_CHECKING:
import contextlib
with contextlib.suppress(ImportError):
from celery import Celery # type: ignore

View file

@ -9,7 +9,6 @@ from typing import TYPE_CHECKING
import httpx
from loguru import logger
from pydantic import BaseModel
from langflow.services.base import Service
from langflow.services.telemetry.opentelemetry import OpenTelemetry
@ -23,6 +22,8 @@ from langflow.services.telemetry.schema import (
from langflow.utils.version import get_version_info
if TYPE_CHECKING:
from pydantic import BaseModel
from langflow.services.settings.service import SettingsService

View file

@ -1,16 +1,16 @@
from __future__ import annotations
from abc import ABC, abstractmethod
from collections.abc import Sequence
from typing import TYPE_CHECKING, Any
from uuid import UUID
from langflow.services.tracing.schema import Log
if TYPE_CHECKING:
from collections.abc import Sequence
from uuid import UUID
from langchain.callbacks.base import BaseCallbackHandler
from langflow.graph.vertex.base import Vertex
from langflow.services.tracing.schema import Log
class BaseTracer(ABC):

View file

@ -1,21 +1,22 @@
from __future__ import annotations
import os
from collections.abc import Sequence
from datetime import datetime, timezone
from typing import TYPE_CHECKING, Any
from uuid import UUID
from loguru import logger
from langflow.services.tracing.base import BaseTracer
from langflow.services.tracing.schema import Log
if TYPE_CHECKING:
from collections.abc import Sequence
from uuid import UUID
from langchain.callbacks.base import BaseCallbackHandler
from langfuse.client import StatefulSpanClient
from langflow.graph.vertex.base import Vertex
from langflow.services.tracing.schema import Log
class LangFuseTracer(BaseTracer):

View file

@ -3,21 +3,22 @@ from __future__ import annotations
import os
import traceback
import types
from collections.abc import Sequence
from datetime import datetime, timezone
from typing import TYPE_CHECKING, Any
from uuid import UUID
from loguru import logger
from langflow.schema.data import Data
from langflow.services.tracing.base import BaseTracer
from langflow.services.tracing.schema import Log
if TYPE_CHECKING:
from collections.abc import Sequence
from uuid import UUID
from langchain.callbacks.base import BaseCallbackHandler
from langflow.graph.vertex.base import Vertex
from langflow.services.tracing.schema import Log
class LangSmithTracer(BaseTracer):

View file

@ -1,21 +1,22 @@
from __future__ import annotations
from collections.abc import Sequence
from typing import TYPE_CHECKING, Any, cast
from uuid import UUID
import nanoid # type: ignore
from loguru import logger
from langflow.schema.data import Data
from langflow.services.tracing.base import BaseTracer
from langflow.services.tracing.schema import Log
if TYPE_CHECKING:
from collections.abc import Sequence
from uuid import UUID
from langchain.callbacks.base import BaseCallbackHandler
from langwatch.tracer import ContextSpan
from langflow.graph.vertex.base import Vertex
from langflow.services.tracing.schema import Log
class LangWatchTracer(BaseTracer):

View file

@ -5,20 +5,21 @@ import os
from collections import defaultdict
from contextlib import asynccontextmanager
from typing import TYPE_CHECKING, Any
from uuid import UUID
from loguru import logger
from langflow.services.base import Service
from langflow.services.tracing.base import BaseTracer
from langflow.services.tracing.schema import Log
if TYPE_CHECKING:
from uuid import UUID
from langchain.callbacks.base import BaseCallbackHandler
from langflow.custom.custom_component.component import Component
from langflow.graph.vertex.base import Vertex
from langflow.services.settings.service import SettingsService
from langflow.services.tracing.base import BaseTracer
from langflow.services.tracing.schema import Log
def _get_langsmith_tracer():

View file

@ -1,19 +1,24 @@
from __future__ import annotations
import os
from uuid import UUID
from typing import TYPE_CHECKING
from loguru import logger
from sqlmodel import Session
from langflow.services.auth import utils as auth_utils
from langflow.services.base import Service
from langflow.services.database.models.variable.model import Variable, VariableCreate
from langflow.services.settings.service import SettingsService
from langflow.services.variable.base import VariableService
from langflow.services.variable.constants import CREDENTIAL_TYPE, GENERIC_TYPE
from langflow.services.variable.kubernetes_secrets import KubernetesSecretManager, encode_user_id
if TYPE_CHECKING:
from uuid import UUID
from sqlmodel import Session
from langflow.services.settings.service import SettingsService
class KubernetesSecretService(VariableService, Service):
def __init__(self, settings_service: SettingsService):

View file

@ -1,10 +1,8 @@
from __future__ import annotations
import os
from collections.abc import Sequence
from datetime import datetime, timezone
from typing import TYPE_CHECKING
from uuid import UUID
from fastapi import Depends
from loguru import logger
@ -18,6 +16,9 @@ from langflow.services.variable.base import VariableService
from langflow.services.variable.constants import CREDENTIAL_TYPE, GENERIC_TYPE
if TYPE_CHECKING:
from collections.abc import Sequence
from uuid import UUID
from langflow.services.settings.service import SettingsService

View file

@ -156,6 +156,11 @@ flake8-bugbear.extend-immutable-calls = [
"fastapi.Query",
"typer.Option",
]
flake8-type-checking.runtime-evaluated-base-classes = [
"pydantic.BaseModel",
"typing.TypedDict", # Needed by fastapi
"typing_extensions.TypedDict", # Needed by fastapi
]
select = [
"A",
"ASYNC",
@ -188,6 +193,7 @@ select = [
"SIM",
"SLOT",
"T10",
"TCH",
"TID",
"UP",
"W",
@ -198,6 +204,11 @@ ignore = [
"ISC001", # Messes with the formatter
]
[tool.ruff.lint.per-file-ignores]
"langflow/api/v1/*" = [
"TCH", # FastAPI needs to evaluate types at runtime
]
[tool.uv]
dev-dependencies = [
"asgi-lifespan>=2.1.0",