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 fastapi import HTTPException
from loguru import logger from loguru import logger
from sqlalchemy import delete from sqlalchemy import delete
from sqlmodel import Session
from langflow.graph.graph.base import Graph 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.flow import Flow
from langflow.services.database.models.transactions.model import TransactionTable from langflow.services.database.models.transactions.model import TransactionTable
from langflow.services.database.models.vertex_builds.model import VertexBuildTable 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 from langflow.services.store.utils import get_lf_version_from_pypi
if TYPE_CHECKING: 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"] API_WORDS = ["api", "key", "token"]

View file

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

View file

@ -1,10 +1,8 @@
from __future__ import annotations from __future__ import annotations
import re import re
from collections.abc import Callable
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
from langchain_core.tools import BaseTool
from langchain_core.tools.structured import StructuredTool from langchain_core.tools.structured import StructuredTool
from loguru import logger 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 from langflow.io.schema import create_input_schema
if TYPE_CHECKING: if TYPE_CHECKING:
from collections.abc import Callable
from langchain_core.tools import BaseTool
from langflow.custom.custom_component.component import Component from langflow.custom.custom_component.component import Component
from langflow.inputs.inputs import InputTypes from langflow.inputs.inputs import InputTypes
from langflow.io import Output from langflow.io import Output

View file

@ -1,18 +1,21 @@
from __future__ import annotations 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 langchain_core.tools import BaseTool, ToolException
from loguru import logger 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.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.helpers.flow import build_schema_from_inputs, get_arg_names, get_flow_inputs, run_flow
from langflow.utils.async_helpers import run_until_complete 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): class FlowTool(BaseTool):
name: str name: str

View file

@ -1,8 +1,7 @@
from abc import abstractmethod from abc import abstractmethod
from functools import wraps 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 loguru import logger
from langflow.custom import Component from langflow.custom import Component
@ -11,6 +10,9 @@ from langflow.helpers.data import docs_to_data
from langflow.io import Output from langflow.io import Output
from langflow.schema import Data from langflow.schema import Data
if TYPE_CHECKING:
from langchain_core.documents import Document
def check_cached_vector_store(f): 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.chains import create_sql_query_chain
from langchain_core.prompts import PromptTemplate from langchain_core.prompts import PromptTemplate
from langchain_core.runnables import Runnable
from langflow.base.chains.model import LCChainComponent from langflow.base.chains.model import LCChainComponent
from langflow.field_typing import Message from langflow.field_typing import Message
from langflow.inputs import HandleInput, IntInput, MultilineInput from langflow.inputs import HandleInput, IntInput, MultilineInput
from langflow.template import Output from langflow.template import Output
if TYPE_CHECKING:
from langchain_core.runnables import Runnable
class SQLGeneratorComponent(LCChainComponent): class SQLGeneratorComponent(LCChainComponent):
display_name = "Natural Language to SQL" 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 loguru import logger
from langflow.base.flow_processing.utils import build_data_from_result_data from langflow.base.flow_processing.utils import build_data_from_result_data
from langflow.custom import CustomComponent from langflow.custom import CustomComponent
from langflow.graph.graph.base import Graph from langflow.graph.graph.base import Graph
from langflow.graph.schema import RunOutputs
from langflow.graph.vertex.base import Vertex from langflow.graph.vertex.base import Vertex
from langflow.helpers.flow import get_flow_inputs from langflow.helpers.flow import get_flow_inputs
from langflow.schema import Data from langflow.schema import Data
from langflow.schema.dotdict import dotdict from langflow.schema.dotdict import dotdict
from langflow.template.field.base import Input from langflow.template.field.base import Input
if TYPE_CHECKING:
from langflow.graph.schema import RunOutputs
class SubFlowComponent(CustomComponent): class SubFlowComponent(CustomComponent):
display_name = "Sub Flow" display_name = "Sub Flow"

View file

@ -1,7 +1,11 @@
from typing import TYPE_CHECKING
from langflow.custom import Component from langflow.custom import Component
from langflow.field_typing import Embeddings
from langflow.io import HandleInput, MessageInput, Output from langflow.io import HandleInput, MessageInput, Output
from langflow.schema import Data from langflow.schema import Data
if TYPE_CHECKING:
from langflow.field_typing import Embeddings
from langflow.schema.message import Message from langflow.schema.message import Message

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.base.flow_processing.utils import build_data_from_run_outputs
from langflow.custom import Component from langflow.custom import Component
from langflow.graph.schema import RunOutputs
from langflow.io import DropdownInput, MessageTextInput, NestedDictInput, Output from langflow.io import DropdownInput, MessageTextInput, NestedDictInput, Output
from langflow.schema import Data, dotdict from langflow.schema import Data, dotdict
if TYPE_CHECKING:
from langflow.graph.schema import RunOutputs
class RunFlowComponent(Component): class RunFlowComponent(Component):
display_name = "Run Flow" display_name = "Run Flow"

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -13,11 +13,9 @@ from typing import TYPE_CHECKING, Any
import pandas as pd import pandas as pd
from loguru import logger from loguru import logger
from langflow.events.event_manager import EventManager
from langflow.exceptions.component import ComponentBuildException from langflow.exceptions.component import ComponentBuildException
from langflow.graph.schema import INPUT_COMPONENTS, OUTPUT_COMPONENTS, InterfaceComponentTypes, ResultData from langflow.graph.schema import INPUT_COMPONENTS, OUTPUT_COMPONENTS, InterfaceComponentTypes, ResultData
from langflow.graph.utils import UnbuiltObject, UnbuiltResult, log_transaction from langflow.graph.utils import UnbuiltObject, UnbuiltResult, log_transaction
from langflow.graph.vertex.schema import NodeData
from langflow.interface import initialize from langflow.interface import initialize
from langflow.interface.listing import lazy_load_dict from langflow.interface.listing import lazy_load_dict
from langflow.schema.artifact import ArtifactType 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.message import Message
from langflow.schema.schema import INPUT_FIELD_NAME, OutputValue, build_output_logs from langflow.schema.schema import INPUT_FIELD_NAME, OutputValue, build_output_logs
from langflow.services.deps import get_storage_service 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.constants import DIRECT_TYPES
from langflow.utils.schemas import ChatOutputResponse from langflow.utils.schemas import ChatOutputResponse
from langflow.utils.util import sync_to_async, unescape_string from langflow.utils.util import sync_to_async, unescape_string
if TYPE_CHECKING: if TYPE_CHECKING:
from langflow.custom import Component from langflow.custom import Component
from langflow.events.event_manager import EventManager
from langflow.graph.edge.base import CycleEdge, Edge from langflow.graph.edge.base import CycleEdge, Edge
from langflow.graph.graph.base import Graph 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): 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.utils import UnbuiltObject, log_transaction, log_vertex_build, rewrite_file_path, serialize_field
from langflow.graph.vertex.base import Vertex from langflow.graph.vertex.base import Vertex
from langflow.graph.vertex.exceptions import NoComponentInstance 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 import Data
from langflow.schema.artifact import ArtifactType from langflow.schema.artifact import ArtifactType
from langflow.schema.message import Message from langflow.schema.message import Message
@ -26,6 +24,8 @@ from langflow.utils.util import unescape_string
if TYPE_CHECKING: if TYPE_CHECKING:
from langflow.graph.edge.base import CycleEdge from langflow.graph.edge.base import CycleEdge
from langflow.graph.vertex.schema import NodeData
from langflow.inputs.inputs import InputTypes
class CustomComponentVertex(Vertex): class CustomComponentVertex(Vertex):

View file

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

View file

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

View file

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

View file

@ -2,12 +2,12 @@ from __future__ import annotations
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
from langchain_core.callbacks import BaseCallbackHandler
from loguru import logger from loguru import logger
from langflow.services.deps import get_plugins_service from langflow.services.deps import get_plugins_service
if TYPE_CHECKING: if TYPE_CHECKING:
from langchain_core.callbacks import BaseCallbackHandler
from langfuse.callback import CallbackHandler # type: ignore 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 loguru import logger
from pydantic import BaseModel 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.graph.vertex.base import Vertex
from langflow.schema.graph import InputValue, Tweaks from langflow.schema.graph import InputValue, Tweaks
from langflow.schema.schema import INPUT_FIELD_NAME from langflow.schema.schema import INPUT_FIELD_NAME
@ -14,6 +12,8 @@ from langflow.services.deps import get_settings_service
if TYPE_CHECKING: if TYPE_CHECKING:
from langflow.api.v1.schemas import InputValueRequest from langflow.api.v1.schemas import InputValueRequest
from langflow.graph.graph.base import Graph
from langflow.graph.schema import RunOutputs
class Result(BaseModel): class Result(BaseModel):

View file

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

View file

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

View file

@ -1,13 +1,16 @@
import datetime import datetime
import secrets import secrets
import threading import threading
from typing import TYPE_CHECKING
from uuid import UUID from uuid import UUID
from sqlmodel import Session, select from sqlmodel import Session, select
from sqlmodel.sql.expression import SelectOfScalar
from langflow.services.database.models.api_key import ApiKey, ApiKeyCreate, ApiKeyRead, UnmaskedApiKeyRead 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]: def get_api_keys(session: Session, user_id: UUID) -> list[ApiKeyRead]:
query: SelectOfScalar = select(ApiKey).where(ApiKey.user_id == user_id) 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 sqlmodel import JSON, Column, Field, Relationship, SQLModel
from langflow.schema import Data from langflow.schema import Data
from langflow.services.database.models.vertex_builds.model import VertexBuildTable
if TYPE_CHECKING: if TYPE_CHECKING:
from langflow.services.database.models import TransactionTable from langflow.services.database.models import TransactionTable
from langflow.services.database.models.folder import Folder from langflow.services.database.models.folder import Folder
from langflow.services.database.models.message import MessageTable from langflow.services.database.models.message import MessageTable
from langflow.services.database.models.user import User from langflow.services.database.models.user import User
from langflow.services.database.models.vertex_builds.model import VertexBuildTable
class FlowBase(SQLModel): class FlowBase(SQLModel):

View file

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

View file

@ -1,4 +1,3 @@
from typing import TYPE_CHECKING
from uuid import UUID from uuid import UUID
from sqlmodel import Session, and_, select, update 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 .constants import DEFAULT_FOLDER_DESCRIPTION, DEFAULT_FOLDER_NAME
from .model import Folder from .model import Folder
if TYPE_CHECKING:
pass
def create_default_folder_if_it_doesnt_exist(session: Session, user_id: UUID): 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() 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 from langflow.services.utils import teardown_superuser
if TYPE_CHECKING: if TYPE_CHECKING:
from sqlalchemy.engine import Engine
from langflow.services.settings.service import SettingsService from langflow.services.settings.service import SettingsService

View file

@ -1,6 +1,5 @@
from __future__ import annotations from __future__ import annotations
from collections.abc import Generator
from contextlib import contextmanager from contextlib import contextmanager
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
@ -9,6 +8,8 @@ from loguru import logger
from langflow.services.schema import ServiceType from langflow.services.schema import ServiceType
if TYPE_CHECKING: if TYPE_CHECKING:
from collections.abc import Generator
from sqlmodel import Session from sqlmodel import Session
from langflow.services.cache.service import CacheService 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): for name, obj in inspect.getmembers(module, inspect.isclass):
if issubclass(obj, Service) and obj is not Service: if issubclass(obj, Service) and obj is not Service:
services[name] = obj services[name] = obj
break # break
except Exception as exc: except Exception as exc:
logger.exception(exc) logger.exception(exc)
msg = "Could not initialize services. Please check your settings." msg = "Could not initialize services. Please check your settings."

View file

@ -1,9 +1,12 @@
from collections.abc import Coroutine from collections.abc import Coroutine
from typing import TYPE_CHECKING
from langflow.services.base import Service 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 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): class SessionService(Service):
name = "session_service" name = "session_service"

View file

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

View file

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

View file

@ -9,7 +9,6 @@ from typing import TYPE_CHECKING
import httpx import httpx
from loguru import logger from loguru import logger
from pydantic import BaseModel
from langflow.services.base import Service from langflow.services.base import Service
from langflow.services.telemetry.opentelemetry import OpenTelemetry 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 from langflow.utils.version import get_version_info
if TYPE_CHECKING: if TYPE_CHECKING:
from pydantic import BaseModel
from langflow.services.settings.service import SettingsService from langflow.services.settings.service import SettingsService

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,10 +1,8 @@
from __future__ import annotations from __future__ import annotations
import os import os
from collections.abc import Sequence
from datetime import datetime, timezone from datetime import datetime, timezone
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
from uuid import UUID
from fastapi import Depends from fastapi import Depends
from loguru import logger 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 from langflow.services.variable.constants import CREDENTIAL_TYPE, GENERIC_TYPE
if TYPE_CHECKING: if TYPE_CHECKING:
from collections.abc import Sequence
from uuid import UUID
from langflow.services.settings.service import SettingsService from langflow.services.settings.service import SettingsService

View file

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