ref: Add ruff rules for pygrep-hooks (PGH) (#4042)

Add ruff rules for pygrep-hooks (PGH)
This commit is contained in:
Christophe Bornet 2024-10-08 23:06:20 +02:00 • committed by GitHub
commit d4818a37ee
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
109 changed files with 220 additions and 222 deletions

View file

@ -10,8 +10,8 @@ import click
import httpx import httpx
import typer import typer
from dotenv import load_dotenv from dotenv import load_dotenv
from multiprocess import cpu_count # type: ignore from multiprocess import cpu_count
from multiprocess.context import Process # type: ignore from multiprocess.context import Process
from packaging import version as pkg_version from packaging import version as pkg_version
from rich import box from rich import box
from rich import print as rprint from rich import print as rprint
@ -530,7 +530,7 @@ def api_key(
def api_key_banner(unmasked_api_key): def api_key_banner(unmasked_api_key):
is_mac = platform.system() == "Darwin" is_mac = platform.system() == "Darwin"
import pyperclip # type: ignore import pyperclip
pyperclip.copy(unmasked_api_key.api_key) pyperclip.copy(unmasked_api_key.api_key)
panel = Panel( panel = Panel(

View file

@ -6,7 +6,7 @@ from alembic import context
from loguru import logger from loguru import logger
from sqlalchemy import engine_from_config, pool from sqlalchemy import engine_from_config, pool
from langflow.services.database.models import * # noqa from langflow.services.database.models import *
from langflow.services.database.service import SQLModel from langflow.services.database.service import SQLModel
# this is the Alembic Config object, which provides # this is the Alembic Config object, which provides

View file

@ -259,9 +259,9 @@ def parse_value(value: Any, input_type: str) -> Any:
async def cascade_delete_flow(session: Session, flow: Flow): async def cascade_delete_flow(session: Session, flow: Flow):
try: try:
session.exec(delete(TransactionTable).where(TransactionTable.flow_id == flow.id)) # type: ignore session.exec(delete(TransactionTable).where(TransactionTable.flow_id == flow.id))
session.exec(delete(VertexBuildTable).where(VertexBuildTable.flow_id == flow.id)) # type: ignore session.exec(delete(VertexBuildTable).where(VertexBuildTable.flow_id == flow.id))
session.exec(delete(Flow).where(Flow.id == flow.id)) # type: ignore session.exec(delete(Flow).where(Flow.id == flow.id))
except Exception as e: except Exception as e:
msg = f"Unable to cascade delete flow: ${flow.id}" msg = f"Unable to cascade delete flow: ${flow.id}"
raise RuntimeError(msg, e) from e raise RuntimeError(msg, e) from e

View file

@ -12,7 +12,7 @@ class Code(BaseModel):
class FrontendNodeRequest(FrontendNode): class FrontendNodeRequest(FrontendNode):
template: dict # type: ignore template: dict # type: ignore[assignment]
@model_serializer(mode="wrap") @model_serializer(mode="wrap")
def serialize_model(self, handler): def serialize_model(self, handler):

View file

@ -133,7 +133,7 @@ async def simple_run_flow(
if input_request.output_type == "debug" if input_request.output_type == "debug"
or ( or (
vertex.is_output vertex.is_output
and (input_request.output_type == "any" or input_request.output_type in vertex.id.lower()) # type: ignore and (input_request.output_type == "any" or input_request.output_type in vertex.id.lower()) # type: ignore[operator]
) )
] ]
task_result, session_id = await run_graph_internal( task_result, session_id = await run_graph_internal(
@ -346,7 +346,7 @@ async def webhook_run_flow(
) )
logger.debug("Starting background task") logger.debug("Starting background task")
background_tasks.add_task( # type: ignore background_tasks.add_task(
simple_run_flow_task, simple_run_flow_task,
flow=flow, flow=flow,
input_request=input_request, input_request=input_request,
@ -659,7 +659,7 @@ def get_config():
try: try:
from langflow.services.deps import get_settings_service from langflow.services.deps import get_settings_service
settings_service: SettingsService = get_settings_service() # type: ignore settings_service: SettingsService = get_settings_service()
return settings_service.settings.model_dump() return settings_service.settings.model_dump()
except Exception as exc: except Exception as exc:
logger.exception(exc) logger.exception(exc)

View file

@ -128,10 +128,10 @@ async def download_profile_picture(
try: try:
extension = file_name.split(".")[-1] extension = file_name.split(".")[-1]
config_dir = get_storage_service().settings_service.settings.config_dir config_dir = get_storage_service().settings_service.settings.config_dir
config_path = Path(config_dir) # type: ignore config_path = Path(config_dir) # type: ignore[arg-type]
folder_path = config_path / "profile_pictures" / folder_name folder_path = config_path / "profile_pictures" / folder_name
content_type = build_content_type_from_extension(extension) content_type = build_content_type_from_extension(extension)
file_content = await storage_service.get_file(flow_id=folder_path, file_name=file_name) # type: ignore file_content = await storage_service.get_file(flow_id=folder_path, file_name=file_name) # type: ignore[arg-type]
return StreamingResponse(BytesIO(file_content), media_type=content_type) return StreamingResponse(BytesIO(file_content), media_type=content_type)
except Exception as e: except Exception as e:
@ -142,13 +142,13 @@ async def download_profile_picture(
async def list_profile_pictures(storage_service: Annotated[StorageService, Depends(get_storage_service)]): async def list_profile_pictures(storage_service: Annotated[StorageService, Depends(get_storage_service)]):
try: try:
config_dir = get_storage_service().settings_service.settings.config_dir config_dir = get_storage_service().settings_service.settings.config_dir
config_path = Path(config_dir) # type: ignore config_path = Path(config_dir) # type: ignore[arg-type]
people_path = config_path / "profile_pictures/People" people_path = config_path / "profile_pictures/People"
space_path = config_path / "profile_pictures/Space" space_path = config_path / "profile_pictures/Space"
people = await storage_service.list_files(flow_id=people_path) # type: ignore people = await storage_service.list_files(flow_id=people_path) # type: ignore[arg-type]
space = await storage_service.list_files(flow_id=space_path) # type: ignore space = await storage_service.list_files(flow_id=space_path) # type: ignore[arg-type]
files = [f"People/{i}" for i in people] files = [f"People/{i}" for i in people]
files += [f"Space/{i}" for i in space] files += [f"Space/{i}" for i in space]

View file

@ -52,7 +52,7 @@ def create_flow(
# based on the highest number found # based on the highest number found
if session.exec(select(Flow).where(Flow.name == flow.name).where(Flow.user_id == current_user.id)).first(): if session.exec(select(Flow).where(Flow.name == flow.name).where(Flow.user_id == current_user.id)).first():
flows = session.exec( flows = session.exec(
select(Flow).where(Flow.name.like(f"{flow.name} (%")).where(Flow.user_id == current_user.id) # type: ignore select(Flow).where(Flow.name.like(f"{flow.name} (%")).where(Flow.user_id == current_user.id) # type: ignore[attr-defined]
).all() ).all()
if flows: if flows:
extract_number = re.compile(r"\((\d+)\)$") extract_number = re.compile(r"\((\d+)\)$")
@ -74,14 +74,14 @@ def create_flow(
): ):
flows = session.exec( flows = session.exec(
select(Flow) select(Flow)
.where(Flow.endpoint_name.like(f"{flow.endpoint_name}-%")) # type: ignore .where(Flow.endpoint_name.like(f"{flow.endpoint_name}-%")) # type: ignore[union-attr]
.where(Flow.user_id == current_user.id) .where(Flow.user_id == current_user.id)
).all() ).all()
if flows: if flows:
# The endpoitn name is like "my-endpoint","my-endpoint-1", "my-endpoint-2" # The endpoitn name is like "my-endpoint","my-endpoint-1", "my-endpoint-2"
# so we need to get the highest number and add 1 # so we need to get the highest number and add 1
# we need to get the last part of the endpoint name # we need to get the last part of the endpoint name
numbers = [int(flow.endpoint_name.split("-")[-1]) for flow in flows] # type: ignore numbers = [int(flow.endpoint_name.split("-")[-1]) for flow in flows]
flow.endpoint_name = f"{flow.endpoint_name}-{max(numbers) + 1}" flow.endpoint_name = f"{flow.endpoint_name}-{max(numbers) + 1}"
else: else:
flow.endpoint_name = f"{flow.endpoint_name}-1" flow.endpoint_name = f"{flow.endpoint_name}-1"
@ -148,16 +148,16 @@ def read_flows(
auth_settings = settings_service.auth_settings auth_settings = settings_service.auth_settings
if auth_settings.AUTO_LOGIN: if auth_settings.AUTO_LOGIN:
stmt = select(Flow).where( stmt = select(Flow).where(
(Flow.user_id == None) | (Flow.user_id == current_user.id) # noqa (Flow.user_id == None) | (Flow.user_id == current_user.id) # noqa: E711
) )
if components_only: if components_only:
stmt = stmt.where(Flow.is_component == True) # noqa stmt = stmt.where(Flow.is_component == True) # noqa: E712
flows = session.exec(stmt).all() flows = session.exec(stmt).all()
else: else:
flows = current_user.flows flows = current_user.flows
flows = validate_is_component(flows) # type: ignore flows = validate_is_component(flows)
if components_only: if components_only:
flows = [flow for flow in flows if flow.is_component] flows = [flow for flow in flows if flow.is_component]
flow_ids = [flow.id for flow in flows] flow_ids = [flow.id for flow in flows]
@ -169,7 +169,7 @@ def read_flows(
example_flows = folder.flows if folder else [] example_flows = folder.flows if folder else []
for example_flow in example_flows: for example_flow in example_flows:
if example_flow.id not in flow_ids: if example_flow.id not in flow_ids:
flows.append(example_flow) # type: ignore flows.append(example_flow)
except Exception as e: except Exception as e:
logger.exception(e) logger.exception(e)
@ -196,7 +196,7 @@ def read_flow(
# If auto login is enable user_id can be current_user.id or None # If auto login is enable user_id can be current_user.id or None
# so write an OR # so write an OR
stmt = stmt.where( stmt = stmt.where(
(Flow.user_id == current_user.id) | (Flow.user_id == None) # noqa (Flow.user_id == current_user.id) | (Flow.user_id == None) # noqa: E711
) )
if user_flow := session.exec(stmt).first(): if user_flow := session.exec(stmt).first():
return user_flow return user_flow
@ -369,7 +369,7 @@ async def download_multiple_file(
db: Annotated[Session, Depends(get_session)], db: Annotated[Session, Depends(get_session)],
): ):
"""Download all flows as a zip file.""" """Download all flows as a zip file."""
flows = db.exec(select(Flow).where(and_(Flow.user_id == user.id, Flow.id.in_(flow_ids)))).all() # type: ignore flows = db.exec(select(Flow).where(and_(Flow.user_id == user.id, Flow.id.in_(flow_ids)))).all() # type: ignore[attr-defined]
if not flows: if not flows:
raise HTTPException(status_code=404, detail="No flows found.") raise HTTPException(status_code=404, detail="No flows found.")

View file

@ -44,7 +44,7 @@ def create_folder(
).first(): ).first():
folder_results = session.exec( folder_results = session.exec(
select(Folder).where( select(Folder).where(
Folder.name.like(f"{new_folder.name}%"), # type: ignore Folder.name.like(f"{new_folder.name}%"), # type: ignore[attr-defined]
Folder.user_id == current_user.id, Folder.user_id == current_user.id,
) )
) )
@ -62,14 +62,14 @@ def create_folder(
if folder.components_list: if folder.components_list:
update_statement_components = ( update_statement_components = (
update(Flow).where(Flow.id.in_(folder.components_list)).values(folder_id=new_folder.id) # type: ignore update(Flow).where(Flow.id.in_(folder.components_list)).values(folder_id=new_folder.id) # type: ignore[attr-defined]
) )
session.exec(update_statement_components) # type: ignore session.exec(update_statement_components)
session.commit() session.commit()
if folder.flows_list: if folder.flows_list:
update_statement_flows = update(Flow).where(Flow.id.in_(folder.flows_list)).values(folder_id=new_folder.id) # type: ignore update_statement_flows = update(Flow).where(Flow.id.in_(folder.flows_list)).values(folder_id=new_folder.id) # type: ignore[attr-defined]
session.exec(update_statement_flows) # type: ignore session.exec(update_statement_flows)
session.commit() session.commit()
return new_folder return new_folder
@ -86,7 +86,7 @@ def read_folders(
try: try:
folders = session.exec( folders = session.exec(
select(Folder).where( select(Folder).where(
or_(Folder.user_id == current_user.id, Folder.user_id == None) # type: ignore # noqa: E711 or_(Folder.user_id == current_user.id, Folder.user_id == None) # noqa: E711
) )
).all() ).all()
return sorted(folders, key=lambda x: x.name != DEFAULT_FOLDER_NAME) return sorted(folders, key=lambda x: x.name != DEFAULT_FOLDER_NAME)
@ -152,16 +152,16 @@ def update_folder(
my_collection_folder = session.exec(select(Folder).where(Folder.name == DEFAULT_FOLDER_NAME)).first() my_collection_folder = session.exec(select(Folder).where(Folder.name == DEFAULT_FOLDER_NAME)).first()
if my_collection_folder: if my_collection_folder:
update_statement_my_collection = ( update_statement_my_collection = (
update(Flow).where(Flow.id.in_(excluded_flows)).values(folder_id=my_collection_folder.id) # type: ignore update(Flow).where(Flow.id.in_(excluded_flows)).values(folder_id=my_collection_folder.id) # type: ignore[attr-defined]
) )
session.exec(update_statement_my_collection) # type: ignore session.exec(update_statement_my_collection)
session.commit() session.commit()
if concat_folder_components: if concat_folder_components:
update_statement_components = ( update_statement_components = (
update(Flow).where(Flow.id.in_(concat_folder_components)).values(folder_id=existing_folder.id) # type: ignore update(Flow).where(Flow.id.in_(concat_folder_components)).values(folder_id=existing_folder.id) # type: ignore[attr-defined]
) )
session.exec(update_statement_components) # type: ignore session.exec(update_statement_components)
session.commit() session.commit()
return existing_folder return existing_folder

View file

@ -79,7 +79,7 @@ async def delete_messages(
current_user: Annotated[User, Depends(get_current_active_user)], current_user: Annotated[User, Depends(get_current_active_user)],
): ):
try: try:
session.exec(delete(MessageTable).where(MessageTable.id.in_(message_ids))) # type: ignore session.exec(delete(MessageTable).where(MessageTable.id.in_(message_ids))) # type: ignore[attr-defined]
session.commit() session.commit()
except Exception as e: except Exception as e:
raise HTTPException(status_code=500, detail=str(e)) from e raise HTTPException(status_code=500, detail=str(e)) from e
@ -147,7 +147,7 @@ async def delete_messages_session(
session: Annotated[Session, Depends(get_session)], session: Annotated[Session, Depends(get_session)],
): ):
try: try:
session.exec( # type: ignore session.exec(
delete(MessageTable) delete(MessageTable)
.where(col(MessageTable.session_id) == session_id) .where(col(MessageTable.session_id) == session_id)
.execution_options(synchronize_session="fetch") .execution_options(synchronize_session="fetch")

View file

@ -71,11 +71,11 @@ def read_all_users(
query: SelectOfScalar = select(User).offset(skip).limit(limit) query: SelectOfScalar = select(User).offset(skip).limit(limit)
users = session.exec(query).fetchall() users = session.exec(query).fetchall()
count_query = select(func.count()).select_from(User) # type: ignore count_query = select(func.count()).select_from(User)
total_count = session.exec(count_query).first() total_count = session.exec(count_query).first()
return UsersResponse( return UsersResponse(
total_count=total_count, # type: ignore total_count=total_count,
users=[UserRead(**user.model_dump()) for user in users], users=[UserRead(**user.model_dump()) for user in users],
) )

View file

@ -134,7 +134,7 @@ class LCToolsAgentComponent(LCAgentComponent):
runnable = agent runnable = agent
else: else:
runnable = AgentExecutor.from_agent_and_tools( runnable = AgentExecutor.from_agent_and_tools(
agent=agent, # type: ignore agent=agent,
tools=self.tools, tools=self.tools,
handle_parsing_errors=self.handle_parsing_errors, handle_parsing_errors=self.handle_parsing_errors,
verbose=self.verbose, verbose=self.verbose,

View file

@ -1,8 +1,8 @@
from collections.abc import Callable from collections.abc import Callable
from typing import cast from typing import cast
from crewai import Agent, Crew, Process, Task # type: ignore from crewai import Agent, Crew, Process, Task
from crewai.task import TaskOutput # type: ignore from crewai.task import TaskOutput
from langchain_core.agents import AgentAction, AgentFinish from langchain_core.agents import AgentAction, AgentFinish
from langflow.custom import Component from langflow.custom import Component

View file

@ -1,4 +1,4 @@
from crewai import Task # type: ignore from crewai import Task
class SequentialTask(Task): class SequentialTask(Task):

View file

@ -76,7 +76,7 @@ def retrieve_file_paths(
def partition_file_to_data(file_path: str, silent_errors: bool) -> Data | None: def partition_file_to_data(file_path: str, silent_errors: bool) -> Data | None:
# Use the partition function to load the file # Use the partition function to load the file
from unstructured.partition.auto import partition # type: ignore from unstructured.partition.auto import partition
try: try:
elements = partition(file_path) elements = partition(file_path)
@ -108,14 +108,14 @@ def read_text_file(file_path: str) -> str:
def read_docx_file(file_path: str) -> str: def read_docx_file(file_path: str) -> str:
from docx import Document # type: ignore from docx import Document
doc = Document(file_path) doc = Document(file_path)
return "\n\n".join([p.text for p in doc.paragraphs]) return "\n\n".join([p.text for p in doc.paragraphs])
def parse_pdf_to_text(file_path: str) -> str: def parse_pdf_to_text(file_path: str) -> str:
from pypdf import PdfReader # type: ignore from pypdf import PdfReader
with Path(file_path).open("rb") as f: with Path(file_path).open("rb") as f:
reader = PdfReader(f) reader = PdfReader(f)

View file

@ -97,4 +97,4 @@ class ChatComponent(Component):
flow_id=self.graph.flow_id, flow_id=self.graph.flow_id,
) )
self.status = messages self.status = messages
return message_text # type: ignore return message_text # type: ignore[return-value]

View file

@ -133,9 +133,9 @@ class LCModelComponent(Component):
} }
} }
else: else:
status_message = f"Response: {content}" # type: ignore status_message = f"Response: {content}" # type: ignore[assignment]
else: else:
status_message = f"Response: {message.content}" # type: ignore status_message = f"Response: {message.content}" # type: ignore[assignment]
return status_message return status_message
def get_chat_result( def get_chat_result(
@ -175,7 +175,7 @@ class LCModelComponent(Component):
if self.output_parser is not None: if self.output_parser is not None:
runnable = runnable | self.output_parser runnable = runnable | self.output_parser
runnable = runnable.with_config( # type: ignore runnable = runnable.with_config(
{ {
"run_name": self.display_name, "run_name": self.display_name,
"project_name": self.get_project_name(), "project_name": self.get_project_name(),
@ -183,8 +183,8 @@ class LCModelComponent(Component):
} }
) )
if stream: if stream:
return runnable.stream(inputs) # type: ignore return runnable.stream(inputs)
message = runnable.invoke(inputs) # type: ignore message = runnable.invoke(inputs)
result = message.content if hasattr(message, "content") else message result = message.content if hasattr(message, "content") else message
if isinstance(message, AIMessage): if isinstance(message, AIMessage):
status_message = self.build_status_message(message) status_message = self.build_status_message(message)

View file

@ -60,7 +60,7 @@ def _format_tool_name(name: str):
return re.sub(r"[^a-zA-Z0-9_-]", "-", name) return re.sub(r"[^a-zA-Z0-9_-]", "-", name)
class ComponentToolkit: # type: ignore class ComponentToolkit:
def __init__(self, component: Component): def __init__(self, component: Component):
self.component = component self.component = component

View file

@ -1,4 +1,4 @@
from crewai import Agent # type: ignore from crewai import Agent
from langflow.custom import Component from langflow.custom import Component
from langflow.io import BoolInput, DictInput, HandleInput, MultilineInput, Output from langflow.io import BoolInput, DictInput, HandleInput, MultilineInput, Output

View file

@ -1,4 +1,4 @@
from crewai import Crew, Process # type: ignore from crewai import Crew, Process
from langflow.base.agents.crewai.crew import BaseCrewComponent from langflow.base.agents.crewai.crew import BaseCrewComponent
from langflow.io import HandleInput from langflow.io import HandleInput

View file

@ -1,4 +1,4 @@
from crewai import Agent, Crew, Process, Task # type: ignore from crewai import Agent, Crew, Process, Task
from langflow.base.agents.crewai.crew import BaseCrewComponent from langflow.base.agents.crewai.crew import BaseCrewComponent
from langflow.io import HandleInput from langflow.io import HandleInput

View file

@ -1,6 +1,6 @@
from typing import Any from typing import Any
from astra_assistants import patch # type: ignore from astra_assistants import patch
from openai import OpenAI from openai import OpenAI
from openai.lib.streaming import AssistantEventHandler from openai.lib.streaming import AssistantEventHandler

View file

@ -30,7 +30,7 @@ class ConversationChainComponent(LCChainComponent):
result = chain.invoke({"input": self.input_value}, config={"callbacks": self.get_langchain_callbacks()}) result = chain.invoke({"input": self.input_value}, config={"callbacks": self.get_langchain_callbacks()})
if isinstance(result, dict): if isinstance(result, dict):
result = result.get(chain.output_key, "") # type: ignore result = result.get(chain.output_key, "")
elif not isinstance(result, str): elif not isinstance(result, str):
result = result.get("response") result = result.get("response")

View file

@ -92,4 +92,4 @@ class DirectoryComponent(Component):
loaded_data = [parse_text_file_to_data(file_path, silent_errors) for file_path in file_paths] loaded_data = [parse_text_file_to_data(file_path, silent_errors) for file_path in file_paths]
loaded_data = list(filter(None, loaded_data)) loaded_data = list(filter(None, loaded_data))
self.status = loaded_data self.status = loaded_data
return loaded_data # type: ignore return loaded_data # type: ignore[return-value]

View file

@ -120,7 +120,7 @@ class ChatLiteLLMModelComponent(LCModelComponent):
def build_model(self) -> LanguageModel: # type: ignore[type-var] def build_model(self) -> LanguageModel: # type: ignore[type-var]
try: try:
import litellm # type: ignore import litellm
litellm.drop_params = True litellm.drop_params = True
litellm.set_verbose = self.verbose litellm.set_verbose = self.verbose
@ -155,4 +155,4 @@ class ChatLiteLLMModelComponent(LCModelComponent):
) )
output.client.api_key = self.api_key output.client.api_key = self.api_key
return output # type: ignore return output

View file

@ -37,7 +37,7 @@ class AmazonBedrockEmbeddingsComponent(LCModelComponent):
def build_embeddings(self) -> Embeddings: def build_embeddings(self) -> Embeddings:
if self.aws_access_key: if self.aws_access_key:
import boto3 # type: ignore import boto3
session = boto3.Session( session = boto3.Session(
aws_access_key_id=self.aws_access_key, aws_access_key_id=self.aws_access_key,
@ -65,4 +65,4 @@ class AmazonBedrockEmbeddingsComponent(LCModelComponent):
model_id=self.model_id, model_id=self.model_id,
endpoint_url=self.endpoint_url, endpoint_url=self.endpoint_url,
region_name=self.region_name, region_name=self.region_name,
) # type: ignore )

View file

@ -36,7 +36,7 @@ class CohereEmbeddingsComponent(LCModelComponent):
] ]
def build_embeddings(self) -> Embeddings: def build_embeddings(self) -> Embeddings:
return CohereEmbeddings( # type: ignore return CohereEmbeddings(
cohere_api_key=self.cohere_api_key, cohere_api_key=self.cohere_api_key,
model=self.model, model=self.model,
truncate=self.truncate, truncate=self.truncate,

View file

@ -47,7 +47,7 @@ class NVIDIAEmbeddingsComponent(LCEmbeddingsModel):
if field_name == "base_url" and field_value: if field_name == "base_url" and field_value:
try: try:
build_model = self.build_embeddings() build_model = self.build_embeddings()
ids = [model.id for model in build_model.available_models] # type: ignore ids = [model.id for model in build_model.available_models]
build_config["model"]["options"] = ids build_config["model"]["options"] = ids
build_config["model"]["value"] = ids[0] build_config["model"]["value"] = ids[0]
except Exception as e: except Exception as e:
@ -67,7 +67,7 @@ class NVIDIAEmbeddingsComponent(LCEmbeddingsModel):
base_url=self.base_url, base_url=self.base_url,
temperature=self.temperature, temperature=self.temperature,
nvidia_api_key=self.nvidia_api_key, nvidia_api_key=self.nvidia_api_key,
) # type: ignore )
except Exception as e: except Exception as e:
msg = f"Could not connect to NVIDIA API. Error: {e}" msg = f"Could not connect to NVIDIA API. Error: {e}"
raise ValueError(msg) from e raise ValueError(msg) from e

View file

@ -41,7 +41,7 @@ class OllamaEmbeddingsComponent(LCModelComponent):
model=self.model, model=self.model,
base_url=self.base_url, base_url=self.base_url,
temperature=self.temperature, temperature=self.temperature,
) # type: ignore )
except Exception as e: except Exception as e:
msg = "Could not connect to Ollama API." msg = "Could not connect to Ollama API."
raise ValueError(msg) from e raise ValueError(msg) from e

View file

@ -40,7 +40,7 @@ class AIMLEmbeddingsImpl(BaseModel, Embeddings):
logger.exception("Error occurred") logger.exception("Error occurred")
raise raise
return embeddings # type: ignore return embeddings # type: ignore[return-value]
def _embed_text(self, client: httpx.Client, headers: dict, text: str) -> dict: def _embed_text(self, client: httpx.Client, headers: dict, text: str) -> dict:
payload = { payload = {

View file

@ -55,7 +55,7 @@ class FirecrawlCrawlApi(CustomComponent):
idempotency_key: str | None = None, idempotency_key: str | None = None,
) -> Data: ) -> Data:
try: try:
from firecrawl.firecrawl import FirecrawlApp # type: ignore from firecrawl.firecrawl import FirecrawlApp
except ImportError as e: except ImportError as e:
msg = "Could not import firecrawl integration package. Please install it with `pip install firecrawl-py`." msg = "Could not import firecrawl integration package. Please install it with `pip install firecrawl-py`."
raise ImportError(msg) from e raise ImportError(msg) from e

View file

@ -48,7 +48,7 @@ class FirecrawlScrapeApi(CustomComponent):
extractorOptions: Data | None = None, extractorOptions: Data | None = None,
) -> Data: ) -> Data:
try: try:
from firecrawl.firecrawl import FirecrawlApp # type: ignore from firecrawl.firecrawl import FirecrawlApp
except ImportError as e: except ImportError as e:
msg = "Could not import firecrawl integration package. Please install it with `pip install firecrawl-py`." msg = "Could not import firecrawl integration package. Please install it with `pip install firecrawl-py`."
raise ImportError(msg) from e raise ImportError(msg) from e

View file

@ -107,7 +107,7 @@ class AIMLModelComponent(LCModelComponent):
except ImportError: except ImportError:
return None return None
if isinstance(e, BadRequestError): if isinstance(e, BadRequestError):
message = e.json_body.get("error", {}).get("message", "") # type: ignore message = e.json_body.get("error", {}).get("message", "")
if message: if message:
return message return message
return None return None

View file

@ -73,7 +73,7 @@ class AmazonBedrockComponent(LCModelComponent):
msg = "langchain_aws is not installed. Please install it with `pip install langchain_aws`." msg = "langchain_aws is not installed. Please install it with `pip install langchain_aws`."
raise ImportError(msg) from e raise ImportError(msg) from e
if self.aws_access_key: if self.aws_access_key:
import boto3 # type: ignore import boto3
session = boto3.Session( session = boto3.Session(
aws_access_key_id=self.aws_access_key, aws_access_key_id=self.aws_access_key,
@ -96,7 +96,7 @@ class AmazonBedrockComponent(LCModelComponent):
boto3_client = session.client("bedrock-runtime", **client_params) boto3_client = session.client("bedrock-runtime", **client_params)
try: try:
output = ChatBedrock( # type: ignore output = ChatBedrock(
client=boto3_client, client=boto3_client,
model_id=self.model_id, model_id=self.model_id,
region_name=self.region_name, region_name=self.region_name,
@ -107,4 +107,4 @@ class AmazonBedrockComponent(LCModelComponent):
except Exception as e: except Exception as e:
msg = "Could not connect to AmazonBedrock API." msg = "Could not connect to AmazonBedrock API."
raise ValueError(msg) from e raise ValueError(msg) from e
return output # type: ignore return output

View file

@ -69,7 +69,7 @@ class AnthropicModelComponent(LCModelComponent):
output = ChatAnthropic( output = ChatAnthropic(
model=model, model=model,
anthropic_api_key=(SecretStr(anthropic_api_key) if anthropic_api_key else None), anthropic_api_key=(SecretStr(anthropic_api_key) if anthropic_api_key else None),
max_tokens_to_sample=max_tokens, # type: ignore max_tokens_to_sample=max_tokens,
temperature=temperature, temperature=temperature,
anthropic_api_url=anthropic_api_url, anthropic_api_url=anthropic_api_url,
streaming=self.stream, streaming=self.stream,
@ -78,7 +78,7 @@ class AnthropicModelComponent(LCModelComponent):
msg = "Could not connect to Anthropic API." msg = "Could not connect to Anthropic API."
raise ValueError(msg) from e raise ValueError(msg) from e
return output # type: ignore return output
def _get_exception_message(self, exception: Exception) -> str | None: def _get_exception_message(self, exception: Exception) -> str | None:
""" """
@ -95,7 +95,7 @@ class AnthropicModelComponent(LCModelComponent):
except ImportError: except ImportError:
return None return None
if isinstance(exception, BadRequestError): if isinstance(exception, BadRequestError):
message = exception.body.get("error", {}).get("message") # type: ignore message = exception.body.get("error", {}).get("message")
if message: if message:
return message return message
return None return None

View file

@ -82,4 +82,4 @@ class AzureChatOpenAIComponent(LCModelComponent):
msg = f"Could not connect to AzureOpenAI API: {e}" msg = f"Could not connect to AzureOpenAI API: {e}"
raise ValueError(msg) from e raise ValueError(msg) from e
return output # type: ignore return output

View file

@ -86,7 +86,7 @@ class QianfanChatEndpointComponent(LCModelComponent):
endpoint = self.endpoint endpoint = self.endpoint
try: try:
output = QianfanChatEndpoint( # type: ignore output = QianfanChatEndpoint(
model=model, model=model,
qianfan_ak=SecretStr(qianfan_ak) if qianfan_ak else None, qianfan_ak=SecretStr(qianfan_ak) if qianfan_ak else None,
qianfan_sk=SecretStr(qianfan_sk) if qianfan_sk else None, qianfan_sk=SecretStr(qianfan_sk) if qianfan_sk else None,
@ -99,4 +99,4 @@ class QianfanChatEndpointComponent(LCModelComponent):
msg = "Could not connect to Baidu Qianfan API." msg = "Could not connect to Baidu Qianfan API."
raise ValueError(msg) from e raise ValueError(msg) from e
return output # type: ignore return output

View file

@ -73,7 +73,7 @@ class GoogleGenerativeAIComponent(LCModelComponent):
top_p = self.top_p top_p = self.top_p
n = self.n n = self.n
return ChatGoogleGenerativeAI( # type: ignore return ChatGoogleGenerativeAI(
model=model, model=model,
max_output_tokens=max_output_tokens or None, max_output_tokens=max_output_tokens or None,
temperature=temperature, temperature=temperature,

View file

@ -90,7 +90,7 @@ class GroqModel(LCModelComponent):
n = self.n n = self.n
stream = self.stream stream = self.stream
return ChatGroq( # type: ignore return ChatGroq(
model=model_name, model=model_name,
max_tokens=max_tokens or None, max_tokens=max_tokens or None,
temperature=temperature, temperature=temperature,

View file

@ -62,7 +62,7 @@ class NVIDIAModelComponent(LCModelComponent):
if field_name == "base_url" and field_value: if field_name == "base_url" and field_value:
try: try:
build_model = self.build_model() build_model = self.build_model()
ids = [model.id for model in build_model.available_models] # type: ignore ids = [model.id for model in build_model.available_models]
build_config["model_name"]["options"] = ids build_config["model_name"]["options"] = ids
build_config["model_name"]["value"] = ids[0] build_config["model_name"]["value"] = ids[0]
except Exception as e: except Exception as e:
@ -85,7 +85,7 @@ class NVIDIAModelComponent(LCModelComponent):
max_tokens=max_tokens or None, max_tokens=max_tokens or None,
model=model_name, model=model_name,
base_url=self.base_url, base_url=self.base_url,
api_key=nvidia_api_key, # type: ignore api_key=nvidia_api_key,
temperature=temperature or 0.1, temperature=temperature or 0.1,
seed=seed, seed=seed,
) )

View file

@ -180,7 +180,7 @@ class ChatOllamaComponent(LCModelComponent):
mirostat_options = {"Mirostat": 1, "Mirostat 2.0": 2} mirostat_options = {"Mirostat": 1, "Mirostat 2.0": 2}
# Default to 0 for 'Disabled' # Default to 0 for 'Disabled'
mirostat_value = mirostat_options.get(self.mirostat, 0) # type: ignore mirostat_value = mirostat_options.get(self.mirostat, 0)
# Set mirostat_eta and mirostat_tau to None if mirostat is disabled # Set mirostat_eta and mirostat_tau to None if mirostat is disabled
if mirostat_value == 0: if mirostat_value == 0:
@ -220,9 +220,9 @@ class ChatOllamaComponent(LCModelComponent):
llm_params = {k: v for k, v in llm_params.items() if v is not None} llm_params = {k: v for k, v in llm_params.items() if v is not None}
try: try:
output = ChatOllama(**llm_params) # type: ignore output = ChatOllama(**llm_params)
except Exception as e: except Exception as e:
msg = "Could not initialize Ollama LLM." msg = "Could not initialize Ollama LLM."
raise ValueError(msg) from e raise ValueError(msg) from e
return output # type: ignore return output

View file

@ -115,11 +115,11 @@ class OpenAIModelComponent(LCModelComponent):
) )
if json_mode: if json_mode:
if output_schema_dict: if output_schema_dict:
output = output.with_structured_output(schema=output_schema_dict, method="json_mode") # type: ignore output = output.with_structured_output(schema=output_schema_dict, method="json_mode")
else: else:
output = output.bind(response_format={"type": "json_object"}) # type: ignore output = output.bind(response_format={"type": "json_object"})
return output # type: ignore return output
def _get_exception_message(self, e: Exception): def _get_exception_message(self, e: Exception):
""" """
@ -137,7 +137,7 @@ class OpenAIModelComponent(LCModelComponent):
except ImportError: except ImportError:
return None return None
if isinstance(e, BadRequestError): if isinstance(e, BadRequestError):
message = e.body.get("message") # type: ignore message = e.body.get("message")
if message: if message:
return message return message
return None return None

View file

@ -70,7 +70,7 @@ class ConditionalRouterComponent(Component):
self.status = self.message self.status = self.message
return self.message return self.message
self.stop("true_result") self.stop("true_result")
return None # type: ignore return None # type: ignore[return-value]
def false_response(self) -> Message: def false_response(self) -> Message:
result = self.evaluate_condition(self.input_text, self.match_text, self.operator, self.case_sensitive) result = self.evaluate_condition(self.input_text, self.match_text, self.operator, self.case_sensitive)
@ -78,4 +78,4 @@ class ConditionalRouterComponent(Component):
self.status = self.message self.status = self.message
return self.message return self.message
self.stop("false_result") self.stop("false_result")
return None # type: ignore return None # type: ignore[return-value]

View file

@ -100,4 +100,4 @@ class FlowToolComponent(LCToolComponent):
description_repr = repr(tool.description).strip("'") description_repr = repr(tool.description).strip("'")
args_str = "\n".join([f"- {arg_name}: {arg_data['description']}" for arg_name, arg_data in tool.args.items()]) args_str = "\n".join([f"- {arg_name}: {arg_data['description']}" for arg_name, arg_data in tool.args.items()])
self.status = f"{description_repr}\nArguments:\n{args_str}" self.status = f"{description_repr}\nArguments:\n{args_str}"
return tool # type: ignore return tool

View file

@ -46,7 +46,7 @@ class JSONCleaner(Component):
def clean_json(self) -> Message: def clean_json(self) -> Message:
try: try:
from json_repair import repair_json # type: ignore from json_repair import repair_json
except ImportError as e: except ImportError as e:
msg = "Could not import the json_repair package. Please install it with `pip install json_repair`." msg = "Could not import the json_repair package. Please install it with `pip install json_repair`."
raise ImportError(msg) from e raise ImportError(msg) from e

View file

@ -46,7 +46,7 @@ class AmazonKendraRetrieverComponent(CustomComponent):
credentials_profile_name=credentials_profile_name, credentials_profile_name=credentials_profile_name,
attribute_filter=attribute_filter, attribute_filter=attribute_filter,
user_context=user_context, user_context=user_context,
) # type: ignore )
except Exception as e: except Exception as e:
msg = "Could not connect to AmazonKendra API." msg = "Could not connect to AmazonKendra API."
raise ValueError(msg) from e raise ValueError(msg) from e

View file

@ -73,7 +73,7 @@ class CohereRerankComponent(LCVectorStoreComponent):
retriever = ContextualCompressionRetriever(base_compressor=cohere_reranker, base_retriever=self.retriever) retriever = ContextualCompressionRetriever(base_compressor=cohere_reranker, base_retriever=self.retriever)
return cast(Retriever, retriever) return cast(Retriever, retriever)
async def search_documents(self) -> list[Data]: # type: ignore async def search_documents(self) -> list[Data]: # type: ignore[override]
retriever = self.build_base_retriever() retriever = self.build_base_retriever()
documents = await retriever.ainvoke(self.search_query, config={"callbacks": self.get_langchain_callbacks()}) documents = await retriever.ainvoke(self.search_query, config={"callbacks": self.get_langchain_callbacks()})
data = self.to_data(documents) data = self.to_data(documents)

View file

@ -1,7 +1,7 @@
from typing import cast from typing import cast
from langchain_community.retrievers import MetalRetriever from langchain_community.retrievers import MetalRetriever
from metal_sdk.metal import Metal # type: ignore from metal_sdk.metal import Metal
from langflow.custom import CustomComponent from langflow.custom import CustomComponent
from langflow.field_typing import Retriever from langflow.field_typing import Retriever

View file

@ -72,7 +72,7 @@ class NvidiaRerankComponent(LCVectorStoreComponent):
retriever = ContextualCompressionRetriever(base_compressor=nvidia_reranker, base_retriever=self.retriever) retriever = ContextualCompressionRetriever(base_compressor=nvidia_reranker, base_retriever=self.retriever)
return cast(Retriever, retriever) return cast(Retriever, retriever)
async def search_documents(self) -> list[Data]: # type: ignore async def search_documents(self) -> list[Data]: # type: ignore[override]
retriever = self.build_base_retriever() retriever = self.build_base_retriever()
documents = await retriever.ainvoke(self.search_query, config={"callbacks": self.get_langchain_callbacks()}) documents = await retriever.ainvoke(self.search_query, config={"callbacks": self.get_langchain_callbacks()})
data = self.to_data(documents) data = self.to_data(documents)

View file

@ -45,7 +45,7 @@ class VectaraSelfQueryRetriverComponent(CustomComponent):
document_content_description: str, document_content_description: str,
llm: LanguageModel, llm: LanguageModel,
metadata_field_info: list[str], metadata_field_info: list[str],
) -> Retriever: # type: ignore ) -> Retriever:
metadata_field_obj = [] metadata_field_obj = []
for meta in metadata_field_info: for meta in metadata_field_info:

View file

@ -1,7 +1,7 @@
from collections.abc import Sequence from collections.abc import Sequence
from typing import Any from typing import Any
from composio_langchain import Action, App, ComposioToolSet # type: ignore from composio_langchain import Action, App, ComposioToolSet
from langchain_core.tools import Tool from langchain_core.tools import Tool
from loguru import logger from loguru import logger

View file

@ -1,6 +1,6 @@
from langchain_community.agent_toolkits.base import BaseToolkit from langchain_community.agent_toolkits.base import BaseToolkit
from langchain_core.tools import Tool, tool from langchain_core.tools import Tool, tool
from metaphor_python import Metaphor # type: ignore from metaphor_python import Metaphor
from langflow.custom import CustomComponent from langflow.custom import CustomComponent
@ -48,4 +48,4 @@ class MetaphorToolkit(CustomComponent):
""" """
return client.find_similar(url, num_results=similar_num_results) return client.find_similar(url, num_results=similar_num_results)
return [search, get_contents, find_similar] # type: ignore return [search, get_contents, find_similar]

View file

@ -30,7 +30,7 @@ class BingSearchAPIComponent(LCToolComponent):
bing_search_url=self.bing_search_url, bing_subscription_key=self.bing_subscription_key bing_search_url=self.bing_search_url, bing_subscription_key=self.bing_subscription_key
) )
else: else:
wrapper = BingSearchAPIWrapper(bing_subscription_key=self.bing_subscription_key) # type: ignore wrapper = BingSearchAPIWrapper(bing_subscription_key=self.bing_subscription_key)
results = wrapper.results(query=self.input_value, num_results=self.k) results = wrapper.results(query=self.input_value, num_results=self.k)
data = [Data(data=result, text=result["snippet"]) for result in results] data = [Data(data=result, text=result["snippet"]) for result in results]
self.status = data self.status = data
@ -42,5 +42,5 @@ class BingSearchAPIComponent(LCToolComponent):
bing_search_url=self.bing_search_url, bing_subscription_key=self.bing_subscription_key bing_search_url=self.bing_search_url, bing_subscription_key=self.bing_subscription_key
) )
else: else:
wrapper = BingSearchAPIWrapper(bing_subscription_key=self.bing_subscription_key) # type: ignore wrapper = BingSearchAPIWrapper(bing_subscription_key=self.bing_subscription_key)
return cast(Tool, BingSearchResults(api_wrapper=wrapper, num_results=self.k)) return cast(Tool, BingSearchResults(api_wrapper=wrapper, num_results=self.k))

View file

@ -37,7 +37,7 @@ class GoogleSearchAPIComponent(LCToolComponent):
def _build_wrapper(self): def _build_wrapper(self):
try: try:
from langchain_google_community import GoogleSearchAPIWrapper # type: ignore from langchain_google_community import GoogleSearchAPIWrapper
except ImportError as e: except ImportError as e:
msg = "Please install langchain-google-community to use GoogleSearchAPIWrapper." msg = "Please install langchain-google-community to use GoogleSearchAPIWrapper."
raise ImportError(msg) from e raise ImportError(msg) from e

View file

@ -125,7 +125,7 @@ class PythonCodeStructuredTool(LCToolComponent):
return build_config return build_config
async def build_tool(self) -> Tool: async def build_tool(self) -> Tool:
_local_namespace = {} # type: ignore _local_namespace = {} # type: ignore[var-annotated]
modules = self._find_imports(self.tool_code) modules = self._find_imports(self.tool_code)
import_code = "" import_code = ""
for module in modules["imports"]: for module in modules["imports"]:
@ -149,7 +149,7 @@ class PythonCodeStructuredTool(LCToolComponent):
return _local_namespace[self.tool_function](**PythonCodeToolFunc.params) return _local_namespace[self.tool_function](**PythonCodeToolFunc.params)
_globals = globals() _globals = globals()
_local = {} # type: ignore _local = {}
_local[self.tool_function] = PythonCodeToolFunc _local[self.tool_function] = PythonCodeToolFunc
_globals.update(_local) _globals.update(_local)
@ -196,7 +196,7 @@ class PythonCodeStructuredTool(LCToolComponent):
PythonCodeToolSchema = None PythonCodeToolSchema = None
if schema_fields: if schema_fields:
PythonCodeToolSchema = create_model("PythonCodeToolSchema", **schema_fields) # type: ignore PythonCodeToolSchema = create_model("PythonCodeToolSchema", **schema_fields)
return StructuredTool.from_function( return StructuredTool.from_function(
func=_local[self.tool_function].run, func=_local[self.tool_function].run,

View file

@ -126,7 +126,7 @@ class SearXNGToolComponent(LCToolComponent):
"categories": (list[str], Field(default=[], description="The categories to search in.")), "categories": (list[str], Field(default=[], description="The categories to search in.")),
} }
SearxSearchSchema = create_model("SearxSearchSchema", **schema_fields) # type: ignore SearxSearchSchema = create_model("SearxSearchSchema", **schema_fields)
return StructuredTool.from_function( return StructuredTool.from_function(
func=_local["SearxSearch"].search, func=_local["SearxSearch"].search,

View file

@ -39,7 +39,7 @@ class WikipediaAPIComponent(LCToolComponent):
return cast(Tool, WikipediaQueryRun(api_wrapper=wrapper)) return cast(Tool, WikipediaQueryRun(api_wrapper=wrapper))
def _build_wrapper(self) -> WikipediaAPIWrapper: def _build_wrapper(self) -> WikipediaAPIWrapper:
return WikipediaAPIWrapper( # type: ignore return WikipediaAPIWrapper(
top_k_results=self.k, top_k_results=self.k,
lang=self.lang, lang=self.lang,
load_all_available_meta=self.load_all_available_meta, load_all_available_meta=self.load_all_available_meta,

View file

@ -31,4 +31,4 @@ class WolframAlphaAPIComponent(LCToolComponent):
return Tool(name="wolfram_alpha_api", description="Answers mathematical questions.", func=wrapper.run) return Tool(name="wolfram_alpha_api", description="Answers mathematical questions.", func=wrapper.run)
def _build_wrapper(self) -> WolframAlphaAPIWrapper: def _build_wrapper(self) -> WolframAlphaAPIWrapper:
return WolframAlphaAPIWrapper(wolfram_alpha_appid=self.app_id) # type: ignore return WolframAlphaAPIWrapper(wolfram_alpha_appid=self.app_id)

View file

@ -70,7 +70,7 @@ class ClickhouseVectorStoreComponent(LCVectorStoreComponent):
@check_cached_vector_store @check_cached_vector_store
def build_vector_store(self) -> Clickhouse: def build_vector_store(self) -> Clickhouse:
try: try:
import clickhouse_connect # type: ignore import clickhouse_connect
except ImportError as e: except ImportError as e:
msg = ( msg = (
"Failed to import Clickhouse dependencies. " "Failed to import Clickhouse dependencies. "

View file

@ -44,9 +44,9 @@ class CouchbaseVectorStoreComponent(LCVectorStoreComponent):
@check_cached_vector_store @check_cached_vector_store
def build_vector_store(self) -> CouchbaseVectorStore: def build_vector_store(self) -> CouchbaseVectorStore:
try: try:
from couchbase.auth import PasswordAuthenticator # type: ignore from couchbase.auth import PasswordAuthenticator
from couchbase.cluster import Cluster # type: ignore from couchbase.cluster import Cluster
from couchbase.options import ClusterOptions # type: ignore from couchbase.options import ClusterOptions
except ImportError as e: except ImportError as e:
msg = "Failed to import Couchbase dependencies. Install it using `pip install langflow[couchbase] --pre`" msg = "Failed to import Couchbase dependencies. Install it using `pip install langflow[couchbase] --pre`"
raise ImportError(msg) from e raise ImportError(msg) from e

View file

@ -1,4 +1,4 @@
from celery import Celery # type: ignore from celery import Celery
def make_celery(app_name: str, config: str) -> Celery: def make_celery(app_name: str, config: str) -> Celery:

View file

@ -108,8 +108,8 @@ class CodeParser:
Parses an AST node and updates the data Parses an AST node and updates the data
dictionary with the relevant information. dictionary with the relevant information.
""" """
if handler := self.handlers.get(type(node)): # type: ignore if handler := self.handlers.get(type(node)):
handler(node) # type: ignore handler(node) # type: ignore[operator]
def parse_imports(self, node: ast.Import | ast.ImportFrom) -> None: def parse_imports(self, node: ast.Import | ast.ImportFrom) -> None:
""" """

View file

@ -6,7 +6,7 @@ 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
import nanoid # type: ignore import nanoid
import yaml import yaml
from pydantic import BaseModel from pydantic import BaseModel

View file

@ -53,8 +53,8 @@ class Edge:
else: else:
# Logging here because this is a breaking change # Logging here because this is a breaking change
logger.error("Edge data is empty") logger.error("Edge data is empty")
self._source_handle = edge.get("sourceHandle", "") # type: ignore self._source_handle = edge.get("sourceHandle", "") # type: ignore[assignment]
self._target_handle = edge.get("targetHandle", "") # type: ignore self._target_handle = edge.get("targetHandle", "") # type: ignore[assignment]
# 'BaseLoader;BaseOutputParser|documents|PromptTemplate-zmTlD' # 'BaseLoader;BaseOutputParser|documents|PromptTemplate-zmTlD'
# target_param is documents # target_param is documents
if isinstance(self._target_handle, str): if isinstance(self._target_handle, str):

View file

@ -1725,8 +1725,8 @@ class Graph:
def _create_vertex(self, frontend_data: NodeData): def _create_vertex(self, frontend_data: NodeData):
vertex_data = frontend_data["data"] vertex_data = frontend_data["data"]
vertex_type: str = vertex_data["type"] # type: ignore vertex_type: str = vertex_data["type"]
vertex_base_type: str = vertex_data["node"]["template"]["_type"] # type: ignore vertex_base_type: str = vertex_data["node"]["template"]["_type"]
if "id" not in vertex_data: if "id" not in vertex_data:
msg = f"Vertex data for {vertex_data['display_name']} does not contain an id" msg = f"Vertex data for {vertex_data['display_name']} does not contain an id"
raise ValueError(msg) raise ValueError(msg)

View file

@ -267,7 +267,7 @@ class Vertex:
def get_task(self): def get_task(self):
# using the task_id, get the task from celery # using the task_id, get the task from celery
# and return it # and return it
from celery.result import AsyncResult # type: ignore from celery.result import AsyncResult
return AsyncResult(self.task_id) return AsyncResult(self.task_id)
@ -446,9 +446,9 @@ class Vertex:
if any(isinstance(self._raw_params.get(key), Vertex) for key in new_params): if any(isinstance(self._raw_params.get(key), Vertex) for key in new_params):
return return
if not overwrite: if not overwrite:
for key in new_params.copy(): # type: ignore for key in new_params.copy(): # type: ignore[attr-defined]
if key not in self._raw_params: if key not in self._raw_params:
new_params.pop(key) # type: ignore new_params.pop(key) # type: ignore[attr-defined]
self._raw_params.update(new_params) self._raw_params.update(new_params)
self.params = self._raw_params.copy() self.params = self._raw_params.copy()
self.updated_raw_params = True self.updated_raw_params = True
@ -692,9 +692,9 @@ class Vertex:
if key == "func": if key == "func":
if not isinstance(result, types.FunctionType): if not isinstance(result, types.FunctionType):
if hasattr(result, "run"): if hasattr(result, "run"):
result = result.run # type: ignore result = result.run
elif hasattr(result, "get_function"): elif hasattr(result, "get_function"):
result = result.get_function() # type: ignore result = result.get_function()
elif inspect.iscoroutinefunction(result): elif inspect.iscoroutinefunction(result):
self.params["coroutine"] = result self.params["coroutine"] = result
else: else:

View file

@ -34,7 +34,7 @@ def list_flows(*, user_id: str | None = None) -> list[Data]:
try: try:
with session_scope() as session: with session_scope() as session:
flows = session.exec( flows = session.exec(
select(Flow).where(Flow.user_id == user_id).where(Flow.is_component == False) # noqa select(Flow).where(Flow.user_id == user_id).where(Flow.is_component == False) # noqa: E712
).all() ).all()
return [flow.to_data() for flow in flows] return [flow.to_data() for flow in flows]
@ -107,7 +107,7 @@ async def run_flow(
for vertex in graph.vertices for vertex in graph.vertices
if output_type == "debug" if output_type == "debug"
or ( or (
vertex.is_output and (output_type == "any" or output_type in vertex.id.lower()) # type: ignore vertex.is_output and (output_type == "any" or output_type in vertex.id.lower()) # type: ignore[operator]
) )
] ]
@ -249,7 +249,7 @@ def build_schema_from_inputs(name: str, inputs: list[Vertex]) -> type[BaseModel]
field_name = input_.display_name.lower().replace(" ", "_") field_name = input_.display_name.lower().replace(" ", "_")
description = input_.description description = input_.description
fields[field_name] = (str, Field(default="", description=description)) fields[field_name] = (str, Field(default="", description=description))
return create_model(name, **fields) # type: ignore return create_model(name, **fields)
def get_arg_names(inputs: list[Vertex]) -> list[dict[str, str]]: def get_arg_names(inputs: list[Vertex]) -> list[dict[str, str]]:

View file

@ -10,7 +10,7 @@ from pathlib import Path
from uuid import UUID from uuid import UUID
import orjson import orjson
from emoji import demojize, purely_emoji # type: ignore from emoji import demojize, purely_emoji
from loguru import logger from loguru import logger
from sqlmodel import select from sqlmodel import select

View file

@ -35,7 +35,7 @@ SerializableFieldTypes = Annotated[FieldTypes, PlainSerializer(lambda v: v.value
# Base mixin for common input field attributes and methods # Base mixin for common input field attributes and methods
class BaseInputMixin(BaseModel, validate_assignment=True): # type: ignore class BaseInputMixin(BaseModel, validate_assignment=True): # type: ignore[call-arg]
model_config = ConfigDict( model_config = ConfigDict(
arbitrary_types_allowed=True, arbitrary_types_allowed=True,
extra="forbid", extra="forbid",

View file

@ -38,9 +38,9 @@ def create_input_schema(inputs: list["InputTypes"]) -> type[BaseModel]:
literal_string = f"Literal{input_model.options}" literal_string = f"Literal{input_model.options}"
# validate that the literal_string is a valid literal # validate that the literal_string is a valid literal
field_type = eval(literal_string, {"Literal": Literal}) # type: ignore field_type = eval(literal_string, {"Literal": Literal})
if hasattr(input_model, "is_list") and input_model.is_list: if hasattr(input_model, "is_list") and input_model.is_list:
field_type = list[field_type] # type: ignore field_type = list[field_type] # type: ignore[valid-type]
if input_model.name: if input_model.name:
name = input_model.name.replace("_", " ").title() name = input_model.name.replace("_", " ").title()
elif input_model.display_name: elif input_model.display_name:
@ -53,7 +53,7 @@ def create_input_schema(inputs: list["InputTypes"]) -> type[BaseModel]:
"description": input_model.info or "", "description": input_model.info or "",
} }
if input_model.required is False: if input_model.required is False:
field_dict["default"] = input_model.value # type: ignore field_dict["default"] = input_model.value # type: ignore[assignment]
pydantic_field = Field(**field_dict) pydantic_field = Field(**field_dict)
fields[input_model.name] = (field_type, pydantic_field) fields[input_model.name] = (field_type, pydantic_field)

View file

@ -108,7 +108,7 @@ def run_flow_from_json(
""" """
# Set all streaming to false # Set all streaming to false
try: try:
import nest_asyncio # type: ignore import nest_asyncio
nest_asyncio.apply() nest_asyncio.apply()
except Exception: except Exception:

View file

@ -8,7 +8,7 @@ from http import HTTPStatus
from pathlib import Path from pathlib import Path
from urllib.parse import urlencode from urllib.parse import urlencode
import nest_asyncio # type: ignore import nest_asyncio
from fastapi import FastAPI, HTTPException, Request, Response, status from fastapi import FastAPI, HTTPException, Request, Response, status
from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import FileResponse, JSONResponse from fastapi.responses import FileResponse, JSONResponse
@ -192,7 +192,7 @@ def create_app():
raise ValueError(msg) raise ValueError(msg)
if settings.prometheus_enabled: if settings.prometheus_enabled:
from prometheus_client import start_http_server # type: ignore from prometheus_client import start_http_server
start_http_server(settings.prometheus_port) start_http_server(settings.prometheus_port)

View file

@ -8,7 +8,7 @@ from langflow.services.deps import get_plugins_service
if TYPE_CHECKING: if TYPE_CHECKING:
from langchain_core.callbacks import BaseCallbackHandler from langchain_core.callbacks import BaseCallbackHandler
from langfuse.callback import CallbackHandler # type: ignore from langfuse.callback import CallbackHandler
def setup_callbacks(sync, trace_id, **kwargs): def setup_callbacks(sync, trace_id, **kwargs):

View file

@ -144,9 +144,9 @@ class Data(BaseModel):
image_template = ImagePromptTemplate() image_template = ImagePromptTemplate()
image_prompt_value: ImagePromptValue = image_template.invoke( image_prompt_value: ImagePromptValue = image_template.invoke(
input={"path": file_path}, config={"callbacks": self.get_langchain_callbacks()} input={"path": file_path}, config={"callbacks": self.get_langchain_callbacks()}
) # type: ignore )
contents.append({"type": "image_url", "image_url": image_prompt_value.image_url}) contents.append({"type": "image_url", "image_url": image_prompt_value.image_url})
human_message = HumanMessage(content=contents) # type: ignore human_message = HumanMessage(content=contents)
else: else:
human_message = HumanMessage( human_message = HumanMessage(
content=[{"type": "text", "text": text}], content=[{"type": "text", "text": text}],
@ -154,7 +154,7 @@ class Data(BaseModel):
return human_message return human_message
return AIMessage(content=text) # type: ignore return AIMessage(content=text)
def __getattr__(self, key): def __getattr__(self, key):
""" """

View file

@ -113,12 +113,12 @@ class Message(Data):
if self.files: if self.files:
contents = [{"type": "text", "text": text}] contents = [{"type": "text", "text": text}]
contents.extend(self.sync_get_file_content_dicts()) contents.extend(self.sync_get_file_content_dicts())
human_message = HumanMessage(content=contents) # type: ignore human_message = HumanMessage(content=contents)
else: else:
human_message = HumanMessage(content=text) human_message = HumanMessage(content=text)
return human_message return human_message
return AIMessage(content=text) # type: ignore return AIMessage(content=text)
@classmethod @classmethod
def from_lc_message(cls, lc_message: BaseMessage) -> Message: def from_lc_message(cls, lc_message: BaseMessage) -> Message:
@ -180,7 +180,7 @@ class Message(Data):
content_dicts.append(file.to_content_dict()) content_dicts.append(file.to_content_dict())
else: else:
image_template = ImagePromptTemplate() image_template = ImagePromptTemplate()
image_prompt_value: ImagePromptValue = image_template.invoke(input={"path": file}) # type: ignore image_prompt_value: ImagePromptValue = image_template.invoke(input={"path": file})
content_dicts.append({"type": "image_url", "image_url": image_prompt_value.image_url}) content_dicts.append({"type": "image_url", "image_url": image_prompt_value.image_url})
return content_dicts return content_dicts
@ -235,7 +235,7 @@ class Message(Data):
if contents: if contents:
message = HumanMessage(content=[{"type": "text", "text": text}, *contents]) message = HumanMessage(content=[{"type": "text", "text": text}, *contents])
prompt_template = ChatPromptTemplate.from_messages([message]) # type: ignore prompt_template = ChatPromptTemplate.from_messages([message])
instance.prompt = jsonable_encoder(prompt_template.to_json()) instance.prompt = jsonable_encoder(prompt_template.to_json())
instance.messages = instance.prompt.get("kwargs", {}).get("messages", []) instance.messages = instance.prompt.get("kwargs", {}).get("messages", [])

View file

@ -123,7 +123,7 @@ def recursive_serialize_or_str(obj):
if hasattr(obj, "model_dump"): if hasattr(obj, "model_dump"):
obj_dict = obj.model_dump() obj_dict = obj.model_dump()
elif hasattr(obj, "dict"): elif hasattr(obj, "dict"):
obj_dict = obj.dict() # type: ignore obj_dict = obj.dict()
return {k: recursive_serialize_or_str(v) for k, v in obj_dict.items()} return {k: recursive_serialize_or_str(v) for k, v in obj_dict.items()}
if isinstance(obj, AsyncIterator | Generator | Iterator): if isinstance(obj, AsyncIterator | Generator | Iterator):

View file

@ -2,11 +2,11 @@ import asyncio
import logging import logging
import signal import signal
from gunicorn import glogging # type: ignore from gunicorn import glogging
from gunicorn.app.base import BaseApplication # type: ignore from gunicorn.app.base import BaseApplication
from uvicorn.workers import UvicornWorker from uvicorn.workers import UvicornWorker
from langflow.logging.logger import InterceptHandler # type: ignore from langflow.logging.logger import InterceptHandler
class LangflowUvicornWorker(UvicornWorker): class LangflowUvicornWorker(UvicornWorker):

View file

@ -114,8 +114,8 @@ async def get_current_user_by_jwt(
with warnings.catch_warnings(): with warnings.catch_warnings():
warnings.simplefilter("ignore") warnings.simplefilter("ignore")
payload = jwt.decode(token, secret_key, algorithms=[settings_service.auth_settings.ALGORITHM]) payload = jwt.decode(token, secret_key, algorithms=[settings_service.auth_settings.ALGORITHM])
user_id: UUID = payload.get("sub") # type: ignore user_id: UUID = payload.get("sub") # type: ignore[assignment]
token_type: str = payload.get("type") # type: ignore token_type: str = payload.get("type") # type: ignore[assignment]
if expires := payload.get("exp", None): if expires := payload.get("exp", None):
expires_datetime = datetime.fromtimestamp(expires, timezone.utc) expires_datetime = datetime.fromtimestamp(expires, timezone.utc)
if datetime.now(timezone.utc) > expires_datetime: if datetime.now(timezone.utc) > expires_datetime:
@ -305,8 +305,8 @@ def create_refresh_token(refresh_token: str, db: Session = Depends(get_session))
settings_service.auth_settings.SECRET_KEY.get_secret_value(), settings_service.auth_settings.SECRET_KEY.get_secret_value(),
algorithms=[settings_service.auth_settings.ALGORITHM], algorithms=[settings_service.auth_settings.ALGORITHM],
) )
user_id: UUID = payload.get("sub") # type: ignore user_id: UUID = payload.get("sub") # type: ignore[assignment]
token_type: str = payload.get("type") # type: ignore token_type: str = payload.get("type") # type: ignore[assignment]
if user_id is None or token_type == "": if user_id is None or token_type == "":
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid refresh token") raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid refresh token")

View file

@ -10,7 +10,7 @@ from langflow.services.cache.base import AsyncBaseCacheService, AsyncLockType
from langflow.services.cache.utils import CACHE_MISS from langflow.services.cache.utils import CACHE_MISS
class AsyncDiskCache(AsyncBaseCacheService, Generic[AsyncLockType]): # type: ignore class AsyncDiskCache(AsyncBaseCacheService, Generic[AsyncLockType]):
def __init__(self, cache_dir, max_size=None, expiration_time=3600): def __init__(self, cache_dir, max_size=None, expiration_time=3600):
self.cache = Cache(cache_dir) self.cache = Cache(cache_dir)
# Let's clear the cache for now to maintain a similar # Let's clear the cache for now to maintain a similar

View file

@ -11,7 +11,7 @@ from langflow.services.cache.base import AsyncBaseCacheService, AsyncLockType, C
from langflow.services.cache.utils import CACHE_MISS from langflow.services.cache.utils import CACHE_MISS
class ThreadingInMemoryCache(CacheService, Generic[LockType]): # type: ignore class ThreadingInMemoryCache(CacheService, Generic[LockType]):
""" """
A simple in-memory cache using an OrderedDict. A simple in-memory cache using an OrderedDict.
@ -174,7 +174,7 @@ class ThreadingInMemoryCache(CacheService, Generic[LockType]): # type: ignore
return f"InMemoryCache(max_size={self.max_size}, expiration_time={self.expiration_time})" return f"InMemoryCache(max_size={self.max_size}, expiration_time={self.expiration_time})"
class RedisCache(AsyncBaseCacheService, Generic[LockType]): # type: ignore class RedisCache(AsyncBaseCacheService, Generic[LockType]):
""" """
A Redis-based cache implementation. A Redis-based cache implementation.
@ -327,7 +327,7 @@ class RedisCache(AsyncBaseCacheService, Generic[LockType]): # type: ignore
return f"RedisCache(expiration_time={self.expiration_time})" return f"RedisCache(expiration_time={self.expiration_time})"
class AsyncInMemoryCache(AsyncBaseCacheService, Generic[AsyncLockType]): # type: ignore class AsyncInMemoryCache(AsyncBaseCacheService, Generic[AsyncLockType]):
def __init__(self, max_size=None, expiration_time=3600): def __init__(self, max_size=None, expiration_time=3600):
self.cache = OrderedDict() self.cache = OrderedDict()

View file

@ -20,7 +20,7 @@ class ApiKeyBase(SQLModel):
is_active: bool = Field(default=True) is_active: bool = Field(default=True)
class ApiKey(ApiKeyBase, table=True): # type: ignore class ApiKey(ApiKeyBase, table=True): # type: ignore[call-arg]
id: UUID = Field(default_factory=uuid4, primary_key=True, unique=True) id: UUID = Field(default_factory=uuid4, primary_key=True, unique=True)
created_at: datetime | None = Field( created_at: datetime | None = Field(
default=None, sa_column=Column(DateTime(timezone=True), server_default=func.now(), nullable=False) default=None, sa_column=Column(DateTime(timezone=True), server_default=func.now(), nullable=False)

View file

@ -6,7 +6,7 @@ from typing import TYPE_CHECKING, Optional
from uuid import UUID, uuid4 from uuid import UUID, uuid4
import emoji import emoji
from emoji import purely_emoji # type: ignore from emoji import purely_emoji
from fastapi import HTTPException, status from fastapi import HTTPException, status
from loguru import logger from loguru import logger
from pydantic import field_serializer, field_validator from pydantic import field_serializer, field_validator
@ -150,7 +150,7 @@ class FlowBase(SQLModel):
return datetime.fromisoformat(v) return datetime.fromisoformat(v)
class Flow(FlowBase, table=True): # type: ignore class Flow(FlowBase, table=True): # type: ignore[call-arg]
id: UUID = Field(default_factory=uuid4, primary_key=True, unique=True) id: UUID = Field(default_factory=uuid4, primary_key=True, unique=True)
data: dict | None = Field(default=None, sa_column=Column(JSON)) data: dict | None = Field(default=None, sa_column=Column(JSON))
user_id: UUID | None = Field(index=True, foreign_key="user.id", nullable=True) user_id: UUID | None = Field(index=True, foreign_key="user.id", nullable=True)

View file

@ -13,7 +13,7 @@ class FolderBase(SQLModel):
description: str | None = Field(default=None, sa_column=Column(Text)) description: str | None = Field(default=None, sa_column=Column(Text))
class Folder(FolderBase, table=True): # type: ignore class Folder(FolderBase, table=True): # type: ignore[call-arg]
id: UUID | None = Field(default_factory=uuid4, primary_key=True) id: UUID | None = Field(default_factory=uuid4, primary_key=True)
parent_id: UUID | None = Field(default=None, foreign_key="folder.id") parent_id: UUID | None = Field(default=None, foreign_key="folder.id")

View file

@ -20,10 +20,10 @@ def create_default_folder_if_it_doesnt_exist(session: Session, user_id: UUID):
session.commit() session.commit()
session.refresh(folder) session.refresh(folder)
session.exec( session.exec(
update(Flow) # type: ignore update(Flow)
.where( .where(
and_( and_(
Flow.folder_id == None, # type: ignore # noqa Flow.folder_id is None,
Flow.user_id == user_id, Flow.user_id == user_id,
) )
) )

View file

@ -61,7 +61,7 @@ class MessageBase(SQLModel):
) )
class MessageTable(MessageBase, table=True): # type: ignore class MessageTable(MessageBase, table=True): # type: ignore[call-arg]
__tablename__ = "message" __tablename__ = "message"
id: UUID = Field(default_factory=uuid4, primary_key=True) id: UUID = Field(default_factory=uuid4, primary_key=True)
flow_id: UUID | None = Field(default=None, foreign_key="flow.id") flow_id: UUID | None = Field(default=None, foreign_key="flow.id")

View file

@ -33,7 +33,7 @@ class TransactionBase(SQLModel):
return value return value
class TransactionTable(TransactionBase, table=True): # type: ignore class TransactionTable(TransactionBase, table=True): # type: ignore[call-arg]
__tablename__ = "transaction" __tablename__ = "transaction"
id: UUID | None = Field(default_factory=uuid4, primary_key=True) id: UUID | None = Field(default_factory=uuid4, primary_key=True)
flow: "Flow" = Relationship(back_populates="transactions") flow: "Flow" = Relationship(back_populates="transactions")

View file

@ -22,7 +22,7 @@ def update_user(user_db: User | None, user: UserUpdate, db: Session = Depends(ge
if not user_db: if not user_db:
raise HTTPException(status_code=404, detail="User not found") raise HTTPException(status_code=404, detail="User not found")
# user_db_by_username = get_user_by_username(db, user.username) # type: ignore # user_db_by_username = get_user_by_username(db, user.username)
# if user_db_by_username and user_db_by_username.id != user_id: # if user_db_by_username and user_db_by_username.id != user_id:
# raise HTTPException(status_code=409, detail="Username already exists") # raise HTTPException(status_code=409, detail="Username already exists")
@ -50,7 +50,7 @@ def update_user(user_db: User | None, user: UserUpdate, db: Session = Depends(ge
def update_user_last_login_at(user_id: UUID, db: Session = Depends(get_session)): def update_user_last_login_at(user_id: UUID, db: Session = Depends(get_session)):
try: try:
user_data = UserUpdate(last_login_at=datetime.now(timezone.utc)) # type: ignore user_data = UserUpdate(last_login_at=datetime.now(timezone.utc))
user = get_user_by_id(db, user_id) user = get_user_by_id(db, user_id)
return update_user(user, user_data, db) return update_user(user, user_data, db)
except Exception: except Exception:

View file

@ -11,7 +11,7 @@ if TYPE_CHECKING:
from langflow.services.database.models.variable import Variable from langflow.services.database.models.variable import Variable
class User(SQLModel, table=True): # type: ignore class User(SQLModel, table=True): # type: ignore[call-arg]
id: UUID = Field(default_factory=uuid4, primary_key=True, unique=True) id: UUID = Field(default_factory=uuid4, primary_key=True, unique=True)
username: str = Field(index=True, unique=True) username: str = Field(index=True, unique=True)
password: str = Field() password: str = Field()

View file

@ -22,7 +22,7 @@ class VariableBase(SQLModel):
type: str | None = Field(None, description="Type of the variable") type: str | None = Field(None, description="Type of the variable")
class Variable(VariableBase, table=True): # type: ignore class Variable(VariableBase, table=True): # type: ignore[call-arg]
id: UUID | None = Field( id: UUID | None = Field(
default_factory=uuid4, default_factory=uuid4,
primary_key=True, primary_key=True,

View file

@ -40,7 +40,7 @@ class VertexBuildBase(SQLModel):
return value return value
class VertexBuildTable(VertexBuildBase, table=True): # type: ignore class VertexBuildTable(VertexBuildBase, table=True): # type: ignore[call-arg]
__tablename__ = "vertex_build" __tablename__ = "vertex_build"
build_id: UUID | None = Field(default_factory=uuid4, primary_key=True) build_id: UUID | None = Field(default_factory=uuid4, primary_key=True)
flow: "Flow" = Relationship(back_populates="vertex_builds") flow: "Flow" = Relationship(back_populates="vertex_builds")

View file

@ -45,7 +45,7 @@ def get_service(service_type: ServiceType, default=None):
# ! This is a workaround to ensure that the service manager is initialized # ! This is a workaround to ensure that the service manager is initialized
# ! Not optimal, but it works for now # ! Not optimal, but it works for now
service_manager.register_factories() service_manager.register_factories()
return service_manager.get(service_type, default) # type: ignore return service_manager.get(service_type, default)
def get_telemetry_service() -> TelemetryService: def get_telemetry_service() -> TelemetryService:
@ -57,7 +57,7 @@ def get_telemetry_service() -> TelemetryService:
""" """
from langflow.services.telemetry.factory import TelemetryServiceFactory from langflow.services.telemetry.factory import TelemetryServiceFactory
return get_service(ServiceType.TELEMETRY_SERVICE, TelemetryServiceFactory()) # type: ignore return get_service(ServiceType.TELEMETRY_SERVICE, TelemetryServiceFactory())
def get_tracing_service() -> TracingService: def get_tracing_service() -> TracingService:
@ -69,7 +69,7 @@ def get_tracing_service() -> TracingService:
""" """
from langflow.services.tracing.factory import TracingServiceFactory from langflow.services.tracing.factory import TracingServiceFactory
return get_service(ServiceType.TRACING_SERVICE, TracingServiceFactory()) # type: ignore return get_service(ServiceType.TRACING_SERVICE, TracingServiceFactory())
def get_state_service() -> StateService: def get_state_service() -> StateService:
@ -81,7 +81,7 @@ def get_state_service() -> StateService:
""" """
from langflow.services.state.factory import StateServiceFactory from langflow.services.state.factory import StateServiceFactory
return get_service(ServiceType.STATE_SERVICE, StateServiceFactory()) # type: ignore return get_service(ServiceType.STATE_SERVICE, StateServiceFactory())
def get_socket_service() -> SocketIOService: def get_socket_service() -> SocketIOService:
@ -91,7 +91,7 @@ def get_socket_service() -> SocketIOService:
Returns: Returns:
SocketIOService: The SocketIOService instance. SocketIOService: The SocketIOService instance.
""" """
return get_service(ServiceType.SOCKETIO_SERVICE) # type: ignore return get_service(ServiceType.SOCKETIO_SERVICE) # type: ignore[attr-defined]
def get_storage_service() -> StorageService: def get_storage_service() -> StorageService:
@ -103,7 +103,7 @@ def get_storage_service() -> StorageService:
""" """
from langflow.services.storage.factory import StorageServiceFactory from langflow.services.storage.factory import StorageServiceFactory
return get_service(ServiceType.STORAGE_SERVICE, default=StorageServiceFactory()) # type: ignore return get_service(ServiceType.STORAGE_SERVICE, default=StorageServiceFactory())
def get_variable_service() -> VariableService: def get_variable_service() -> VariableService:
@ -116,7 +116,7 @@ def get_variable_service() -> VariableService:
""" """
from langflow.services.variable.factory import VariableServiceFactory from langflow.services.variable.factory import VariableServiceFactory
return get_service(ServiceType.VARIABLE_SERVICE, VariableServiceFactory()) # type: ignore return get_service(ServiceType.VARIABLE_SERVICE, VariableServiceFactory())
def get_plugins_service() -> PluginService: def get_plugins_service() -> PluginService:
@ -126,7 +126,7 @@ def get_plugins_service() -> PluginService:
Returns: Returns:
PluginService: The PluginService instance. PluginService: The PluginService instance.
""" """
return get_service(ServiceType.PLUGIN_SERVICE) # type: ignore return get_service(ServiceType.PLUGIN_SERVICE) # type: ignore[attr-defined]
def get_settings_service() -> SettingsService: def get_settings_service() -> SettingsService:
@ -143,7 +143,7 @@ def get_settings_service() -> SettingsService:
""" """
from langflow.services.settings.factory import SettingsServiceFactory from langflow.services.settings.factory import SettingsServiceFactory
return get_service(ServiceType.SETTINGS_SERVICE, SettingsServiceFactory()) # type: ignore return get_service(ServiceType.SETTINGS_SERVICE, SettingsServiceFactory())
def get_db_service() -> DatabaseService: def get_db_service() -> DatabaseService:
@ -156,7 +156,7 @@ def get_db_service() -> DatabaseService:
""" """
from langflow.services.database.factory import DatabaseServiceFactory from langflow.services.database.factory import DatabaseServiceFactory
return get_service(ServiceType.DATABASE_SERVICE, DatabaseServiceFactory()) # type: ignore return get_service(ServiceType.DATABASE_SERVICE, DatabaseServiceFactory())
def get_session() -> Generator[Session, None, None]: def get_session() -> Generator[Session, None, None]:
@ -207,7 +207,7 @@ def get_cache_service() -> CacheService:
""" """
from langflow.services.cache.factory import CacheServiceFactory from langflow.services.cache.factory import CacheServiceFactory
return get_service(ServiceType.CACHE_SERVICE, CacheServiceFactory()) # type: ignore return get_service(ServiceType.CACHE_SERVICE, CacheServiceFactory())
def get_shared_component_cache_service() -> CacheService: def get_shared_component_cache_service() -> CacheService:
@ -219,7 +219,7 @@ def get_shared_component_cache_service() -> CacheService:
""" """
from langflow.services.shared_component_cache.factory import SharedComponentCacheServiceFactory from langflow.services.shared_component_cache.factory import SharedComponentCacheServiceFactory
return get_service(ServiceType.SHARED_COMPONENT_CACHE_SERVICE, SharedComponentCacheServiceFactory()) # type: ignore return get_service(ServiceType.SHARED_COMPONENT_CACHE_SERVICE, SharedComponentCacheServiceFactory())
def get_session_service() -> SessionService: def get_session_service() -> SessionService:
@ -231,7 +231,7 @@ def get_session_service() -> SessionService:
""" """
from langflow.services.session.factory import SessionServiceFactory from langflow.services.session.factory import SessionServiceFactory
return get_service(ServiceType.SESSION_SERVICE, SessionServiceFactory()) # type: ignore return get_service(ServiceType.SESSION_SERVICE, SessionServiceFactory())
def get_task_service() -> TaskService: def get_task_service() -> TaskService:
@ -244,7 +244,7 @@ def get_task_service() -> TaskService:
""" """
from langflow.services.task.factory import TaskServiceFactory from langflow.services.task.factory import TaskServiceFactory
return get_service(ServiceType.TASK_SERVICE, TaskServiceFactory()) # type: ignore return get_service(ServiceType.TASK_SERVICE, TaskServiceFactory())
def get_chat_service() -> ChatService: def get_chat_service() -> ChatService:
@ -254,7 +254,7 @@ def get_chat_service() -> ChatService:
Returns: Returns:
ChatService: The chat service instance. ChatService: The chat service instance.
""" """
return get_service(ServiceType.CHAT_SERVICE) # type: ignore return get_service(ServiceType.CHAT_SERVICE)
def get_store_service() -> StoreService: def get_store_service() -> StoreService:
@ -264,4 +264,4 @@ def get_store_service() -> StoreService:
Returns: Returns:
StoreService: The StoreService instance. StoreService: The StoreService instance.
""" """
return get_service(ServiceType.STORE_SERVICE) # type: ignore return get_service(ServiceType.STORE_SERVICE)

View file

@ -161,7 +161,7 @@ def initialize_session_service():
Initialize the session manager. Initialize the session manager.
""" """
from langflow.services.cache import factory as cache_factory from langflow.services.cache import factory as cache_factory
from langflow.services.session import factory as session_service_factory # type: ignore from langflow.services.session import factory as session_service_factory
initialize_settings_service() initialize_settings_service()

View file

@ -8,7 +8,7 @@ from langflow.services.deps import get_settings_service
from langflow.services.plugins.base import CallbackPlugin from langflow.services.plugins.base import CallbackPlugin
if TYPE_CHECKING: if TYPE_CHECKING:
from langfuse import Langfuse # type: ignore from langfuse import Langfuse
class LangfuseInstance: class LangfuseInstance:
@ -25,7 +25,7 @@ class LangfuseInstance:
def create(cls): def create(cls):
try: try:
logger.debug("Creating Langfuse instance") logger.debug("Creating Langfuse instance")
from langfuse import Langfuse # type: ignore from langfuse import Langfuse
settings_manager = get_settings_service() settings_manager = get_settings_service()

View file

@ -1,6 +1,6 @@
from typing import TYPE_CHECKING, Any from typing import TYPE_CHECKING, Any
import socketio # type: ignore import socketio
from loguru import logger from loguru import logger
from langflow.services.base import Service from langflow.services.base import Service

View file

@ -1,7 +1,7 @@
import time import time
from collections.abc import Callable from collections.abc import Callable
import socketio # type: ignore import socketio
from sqlmodel import select from sqlmodel import select
from langflow.api.utils import format_elapsed_time from langflow.api.utils import format_elapsed_time

View file

@ -1,5 +1,5 @@
import boto3 # type: ignore import boto3
from botocore.exceptions import ClientError, NoCredentialsError # type: ignore from botocore.exceptions import ClientError, NoCredentialsError
from loguru import logger from loguru import logger
from .service import StorageService from .service import StorageService

View file

@ -1,7 +1,7 @@
from collections.abc import Callable from collections.abc import Callable
from typing import TYPE_CHECKING, Any from typing import TYPE_CHECKING, Any
from celery.result import AsyncResult # type: ignore from celery.result import AsyncResult
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

View file

@ -4,7 +4,7 @@ if TYPE_CHECKING:
import contextlib import contextlib
with contextlib.suppress(ImportError): with contextlib.suppress(ImportError):
from celery import Celery # type: ignore from celery import Celery
def get_celery_worker_status(app: "Celery"): def get_celery_worker_status(app: "Celery"):

View file

@ -2,7 +2,7 @@ from __future__ import annotations
from typing import TYPE_CHECKING, Any, cast from typing import TYPE_CHECKING, Any, cast
import nanoid # type: ignore import nanoid
from loguru import logger from loguru import logger
from langflow.schema.data import Data from langflow.schema.data import Data

View file

@ -124,9 +124,7 @@ class TracingService(Service):
) )
def _initialize_langwatch_tracer(self): def _initialize_langwatch_tracer(self):
if ( if "langwatch" not in self._tracers or self._tracers["langwatch"].trace_id != self.run_id:
"langwatch" not in self._tracers or self._tracers["langwatch"].trace_id != self.run_id # type: ignore
):
langwatch_tracer = _get_langwatch_tracer() langwatch_tracer = _get_langwatch_tracer()
self._tracers["langwatch"] = langwatch_tracer( self._tracers["langwatch"] = langwatch_tracer(
trace_name=self.run_name, trace_name=self.run_name,
@ -164,7 +162,7 @@ class TracingService(Service):
self.inputs[trace_name] = inputs self.inputs[trace_name] = inputs
self.inputs_metadata[trace_name] = metadata or {} self.inputs_metadata[trace_name] = metadata or {}
for tracer in self._tracers.values(): for tracer in self._tracers.values():
if not tracer.ready: # type: ignore if not tracer.ready: # type: ignore[truthy-function]
continue continue
try: try:
tracer.add_trace(trace_id, trace_name, trace_type, inputs, metadata, vertex) tracer.add_trace(trace_id, trace_name, trace_type, inputs, metadata, vertex)
@ -173,7 +171,7 @@ class TracingService(Service):
def _end_traces(self, trace_id: str, trace_name: str, error: Exception | None = None): def _end_traces(self, trace_id: str, trace_name: str, error: Exception | None = None):
for tracer in self._tracers.values(): for tracer in self._tracers.values():
if not tracer.ready: # type: ignore if not tracer.ready: # type: ignore[truthy-function]
continue continue
try: try:
tracer.end_trace( tracer.end_trace(
@ -188,7 +186,7 @@ class TracingService(Service):
def _end_all_traces(self, outputs: dict, error: Exception | None = None): def _end_all_traces(self, outputs: dict, error: Exception | None = None):
for tracer in self._tracers.values(): for tracer in self._tracers.values():
if not tracer.ready: # type: ignore if not tracer.ready: # type: ignore[truthy-function]
continue continue
try: try:
tracer.end(self.inputs, outputs=self.outputs, error=error, metadata=outputs) tracer.end(self.inputs, outputs=self.outputs, error=error, metadata=outputs)
@ -254,7 +252,7 @@ class TracingService(Service):
def get_langchain_callbacks(self) -> list[BaseCallbackHandler]: def get_langchain_callbacks(self) -> list[BaseCallbackHandler]:
callbacks = [] callbacks = []
for tracer in self._tracers.values(): for tracer in self._tracers.values():
if not tracer.ready: # type: ignore if not tracer.ready: # type: ignore[truthy-function]
continue continue
langchain_callback = tracer.get_langchain_callback() langchain_callback = tracer.get_langchain_callback()
if langchain_callback: if langchain_callback:

View file

@ -141,7 +141,7 @@ def initialize_session_service():
Initialize the session manager. Initialize the session manager.
""" """
from langflow.services.cache import factory as cache_factory from langflow.services.cache import factory as cache_factory
from langflow.services.session import factory as session_service_factory # type: ignore from langflow.services.session import factory as session_service_factory
initialize_settings_service() initialize_settings_service()

Some files were not shown because too many files have changed in this diff Show more