diff --git a/.github/utils/check_imports.py b/.github/utils/check_imports.py index f65ebae4e1..c6593691dc 100644 --- a/.github/utils/check_imports.py +++ b/.github/utils/check_imports.py @@ -3,9 +3,8 @@ import os import sys import traceback from pathlib import Path -from typing import Optional -from haystack import logging # pylint: disable=unused-import # this is needed to avoid circular imports +from haystack import logging # pylint: disable=unused-import # noqa: F401 # this is needed to avoid circular imports def validate_module_imports(root_dir: str, exclude_subdirs: list[str] | None = None) -> tuple[list, list]: diff --git a/haystack/__init__.py b/haystack/__init__.py index 7daa0959e2..8d9bd0d319 100644 --- a/haystack/__init__.py +++ b/haystack/__init__.py @@ -15,7 +15,7 @@ from haystack.core.pipeline import AsyncPipeline, Pipeline, PredefinedPipeline from haystack.core.serialization import default_from_dict, default_to_dict from haystack.core.super_component.super_component import SuperComponent, super_component from haystack.dataclasses import Answer, Document, ExtractedAnswer, GeneratedAnswer -from haystack.version import __version__ +from haystack.version import __version__ # noqa: F401 # Initialize the logging configuration # This is a no-op unless `structlog` is installed diff --git a/haystack/components/builders/chat_prompt_builder.py b/haystack/components/builders/chat_prompt_builder.py index 555124221a..1e46abf507 100644 --- a/haystack/components/builders/chat_prompt_builder.py +++ b/haystack/components/builders/chat_prompt_builder.py @@ -18,7 +18,7 @@ from haystack.utils.jinja2_extensions import _extract_template_variables_and_ass logger = logging.getLogger(__name__) with LazyImport("Run 'pip install \"arrow>=1.3.0\"'") as arrow_import: - import arrow # pylint: disable=unused-import + import arrow # pylint: disable=unused-import # noqa: F401 NO_TEXT_ERROR_MESSAGE = "ChatMessages from {role} role must contain text. Received ChatMessage with no text: {message}" diff --git a/haystack/components/converters/image/file_to_image.py b/haystack/components/converters/image/file_to_image.py index 140901f78e..c8ea7354ea 100644 --- a/haystack/components/converters/image/file_to_image.py +++ b/haystack/components/converters/image/file_to_image.py @@ -18,7 +18,7 @@ with LazyImport( "Image resizing will be applied, which requires the Pillow library. " "Run 'pip install pillow'" ) as pillow_import: - import PIL # pylint: disable=unused-import + import PIL # pylint: disable=unused-import # noqa: F401 logger = logging.getLogger(__name__) diff --git a/haystack/components/converters/xlsx.py b/haystack/components/converters/xlsx.py index b2238ac752..ed274848a3 100644 --- a/haystack/components/converters/xlsx.py +++ b/haystack/components/converters/xlsx.py @@ -15,11 +15,13 @@ from haystack.lazy_imports import LazyImport logger = logging.getLogger(__name__) with LazyImport("Run 'pip install pandas openpyxl'") as pandas_xlsx_import: - import openpyxl # pylint: disable=unused-import # the library is used but not directly referenced + import openpyxl # pylint: disable=unused-import # noqa: F401 # the library is used but not directly referenced import pandas as pd with LazyImport("Run 'pip install tabulate'") as tabulate_import: - from tabulate import tabulate # pylint: disable=unused-import # the library is used but not directly referenced + from tabulate import ( # pylint: disable=unused-import + tabulate, # noqa: F401 # the library is used but not directly referenced + ) @component diff --git a/haystack/components/extractors/__init__.py b/haystack/components/extractors/__init__.py index d8e0c9d83d..bbce5a5d6a 100644 --- a/haystack/components/extractors/__init__.py +++ b/haystack/components/extractors/__init__.py @@ -18,7 +18,7 @@ if TYPE_CHECKING: from .named_entity_extractor import NamedEntityAnnotation as NamedEntityAnnotation from .named_entity_extractor import NamedEntityExtractor as NamedEntityExtractor from .named_entity_extractor import NamedEntityExtractorBackend as NamedEntityExtractorBackend - from .regex_text_extractor import RegexTextExtractor + from .regex_text_extractor import RegexTextExtractor as RegexTextExtractor else: sys.modules[__name__] = LazyImporter(name=__name__, module_file=__file__, import_structure=_import_structure) diff --git a/haystack/components/query/__init__.py b/haystack/components/query/__init__.py index 38c33c5b7f..c4648a7d0a 100644 --- a/haystack/components/query/__init__.py +++ b/haystack/components/query/__init__.py @@ -10,7 +10,7 @@ from lazy_imports import LazyImporter _import_structure = {"query_expander": ["QueryExpander"]} if TYPE_CHECKING: - from .query_expander import QueryExpander + from .query_expander import QueryExpander as QueryExpander else: sys.modules[__name__] = LazyImporter(name=__name__, module_file=__file__, import_structure=_import_structure) diff --git a/haystack/components/rankers/transformers_similarity.py b/haystack/components/rankers/transformers_similarity.py index 77ef3abc51..0676166dde 100644 --- a/haystack/components/rankers/transformers_similarity.py +++ b/haystack/components/rankers/transformers_similarity.py @@ -11,7 +11,7 @@ from haystack.utils import ComponentDevice, DeviceMap, Secret, deserialize_secre from haystack.utils.hf import deserialize_hf_model_kwargs, resolve_hf_device_map, serialize_hf_model_kwargs with LazyImport(message="Run 'pip install transformers[torch,sentencepiece]'") as torch_and_transformers_import: - import accelerate # pylint: disable=unused-import # the library is used but not directly referenced + import accelerate # pylint: disable=unused-import # noqa: F401 # the library is used but not directly referenced import torch from torch.utils.data import DataLoader, Dataset from transformers import AutoModelForSequenceClassification, AutoTokenizer diff --git a/haystack/components/readers/extractive.py b/haystack/components/readers/extractive.py index 5e93ca7a30..c902cf2980 100644 --- a/haystack/components/readers/extractive.py +++ b/haystack/components/readers/extractive.py @@ -12,7 +12,7 @@ from haystack.utils import ComponentDevice, DeviceMap, Secret, deserialize_secre from haystack.utils.hf import deserialize_hf_model_kwargs, resolve_hf_device_map, serialize_hf_model_kwargs with LazyImport("Run 'pip install transformers[torch,sentencepiece]'") as torch_and_transformers_import: - import accelerate # pylint: disable=unused-import # the library is used but not directly referenced + import accelerate # pylint: disable=unused-import # noqa: F401 # the library is used but not directly referenced import torch from tokenizers import Encoding from transformers import AutoModelForQuestionAnswering, AutoTokenizer diff --git a/haystack/components/routers/file_type_router.py b/haystack/components/routers/file_type_router.py index 25d13bb71f..863855dea0 100644 --- a/haystack/components/routers/file_type_router.py +++ b/haystack/components/routers/file_type_router.py @@ -15,7 +15,7 @@ from haystack.dataclasses import ByteStream from haystack.utils.misc import _guess_mime_type # ruff: isort: skip # We import CUSTOM_MIMETYPES here to prevent breaking change from moving to haystack.utils.misc -from haystack.utils.misc import CUSTOM_MIMETYPES # pylint: disable=unused-import +from haystack.utils.misc import CUSTOM_MIMETYPES # pylint: disable=unused-import # noqa: F401 logger = logging.getLogger(__name__) diff --git a/haystack/telemetry/__init__.py b/haystack/telemetry/__init__.py index 6fa29de4d1..2dd978019f 100644 --- a/haystack/telemetry/__init__.py +++ b/haystack/telemetry/__init__.py @@ -2,4 +2,6 @@ # # SPDX-License-Identifier: Apache-2.0 +# ruff: noqa: F401 + from haystack.telemetry._telemetry import pipeline_running, tutorial_running diff --git a/haystack/tools/__init__.py b/haystack/tools/__init__.py index ce0b36168e..c07ddfa715 100644 --- a/haystack/tools/__init__.py +++ b/haystack/tools/__init__.py @@ -5,7 +5,6 @@ # NOTE: we do not use LazyImporter here because it creates conflicts between the tool module and the tool decorator # ruff: noqa: I001 (ignore import order as we need to import Tool before ComponentTool and PipelineTool) -from typing import Union from haystack.tools.from_function import create_tool_from_function, tool from haystack.tools.tool import Tool, _check_duplicate_tool_names diff --git a/haystack/tracing/__init__.py b/haystack/tracing/__init__.py index ce07a0471d..ce69fd233e 100644 --- a/haystack/tracing/__init__.py +++ b/haystack/tracing/__init__.py @@ -2,6 +2,8 @@ # # SPDX-License-Identifier: Apache-2.0 +# ruff: noqa: F401 + from haystack.tracing.tracer import ( # noqa: I001 (otherwise we end up with partial imports) Span, Tracer, diff --git a/pyproject.toml b/pyproject.toml index ec558d2922..49b2168766 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -349,7 +349,6 @@ select = [ ] ignore = [ - "F401", # unused-import "PERF203", # `try`-`except` within a loop incurs performance overhead "PERF401", # Use a list comprehension to create a transformed list "PLR1714", # repeated-equality-comparison diff --git a/test/components/agents/test_agent.py b/test/components/agents/test_agent.py index fba8154d78..b362e2fb1e 100644 --- a/test/components/agents/test_agent.py +++ b/test/components/agents/test_agent.py @@ -6,7 +6,7 @@ import logging import os import re from datetime import datetime -from typing import Any, Iterator, Optional, Union +from typing import Any, Iterator from unittest.mock import AsyncMock, MagicMock, patch import pytest diff --git a/test/components/agents/test_agent_breakpoints.py b/test/components/agents/test_agent_breakpoints.py index 69c2bfdc8e..c28d056edc 100644 --- a/test/components/agents/test_agent_breakpoints.py +++ b/test/components/agents/test_agent_breakpoints.py @@ -5,7 +5,7 @@ import os from dataclasses import replace from pathlib import Path -from typing import Any, Optional, Union +from typing import Any import pytest diff --git a/test/components/agents/test_agent_breakpoints_inside_pipeline.py b/test/components/agents/test_agent_breakpoints_inside_pipeline.py index 4d049243ae..ccc31a68c5 100644 --- a/test/components/agents/test_agent_breakpoints_inside_pipeline.py +++ b/test/components/agents/test_agent_breakpoints_inside_pipeline.py @@ -6,7 +6,6 @@ import os import re import tempfile from pathlib import Path -from typing import Optional import pytest diff --git a/test/components/builders/test_chat_prompt_builder.py b/test/components/builders/test_chat_prompt_builder.py index b1d3ce956b..baad766166 100644 --- a/test/components/builders/test_chat_prompt_builder.py +++ b/test/components/builders/test_chat_prompt_builder.py @@ -3,7 +3,7 @@ # SPDX-License-Identifier: Apache-2.0 import logging -from typing import Any, Optional, Union +from typing import Any import arrow import pytest diff --git a/test/components/builders/test_prompt_builder.py b/test/components/builders/test_prompt_builder.py index 7069a71575..83edc09632 100644 --- a/test/components/builders/test_prompt_builder.py +++ b/test/components/builders/test_prompt_builder.py @@ -3,7 +3,7 @@ # SPDX-License-Identifier: Apache-2.0 import logging -from typing import Any, Optional +from typing import Any from unittest.mock import patch import arrow diff --git a/test/components/converters/test_textfile_to_document.py b/test/components/converters/test_textfile_to_document.py index bd0cf2a391..56f45e1771 100644 --- a/test/components/converters/test_textfile_to_document.py +++ b/test/components/converters/test_textfile_to_document.py @@ -5,8 +5,6 @@ import logging import os -import pytest - from haystack.components.converters.txt import TextFileToDocument from haystack.dataclasses import ByteStream diff --git a/test/components/converters/test_xlsx_to_document.py b/test/components/converters/test_xlsx_to_document.py index 730a3028f8..5f3e455f73 100644 --- a/test/components/converters/test_xlsx_to_document.py +++ b/test/components/converters/test_xlsx_to_document.py @@ -3,7 +3,6 @@ # SPDX-License-Identifier: Apache-2.0 import logging -from typing import Union import pytest diff --git a/test/components/embedders/test_openai_document_embedder.py b/test/components/embedders/test_openai_document_embedder.py index 3f0e0375f9..439cfa7fef 100644 --- a/test/components/embedders/test_openai_document_embedder.py +++ b/test/components/embedders/test_openai_document_embedder.py @@ -3,7 +3,6 @@ # SPDX-License-Identifier: Apache-2.0 import os -import random from unittest.mock import Mock, patch import pytest diff --git a/test/components/generators/chat/test_azure.py b/test/components/generators/chat/test_azure.py index 49a3c3768d..9409465aff 100644 --- a/test/components/generators/chat/test_azure.py +++ b/test/components/generators/chat/test_azure.py @@ -4,7 +4,7 @@ import json import os -from typing import Any, Optional +from typing import Any import pytest from openai import OpenAIError diff --git a/test/components/generators/chat/test_azure_responses.py b/test/components/generators/chat/test_azure_responses.py index 231ae880c4..e1c089546f 100644 --- a/test/components/generators/chat/test_azure_responses.py +++ b/test/components/generators/chat/test_azure_responses.py @@ -4,7 +4,7 @@ import json import os -from typing import Any, Optional +from typing import Any import pytest from openai import OpenAIError diff --git a/test/components/generators/chat/test_fallback.py b/test/components/generators/chat/test_fallback.py index c2768e218a..52d5f6bcf7 100644 --- a/test/components/generators/chat/test_fallback.py +++ b/test/components/generators/chat/test_fallback.py @@ -4,7 +4,7 @@ import asyncio import time -from typing import Any, Optional +from typing import Any from urllib.error import HTTPError as URLLibHTTPError import pytest diff --git a/test/components/generators/chat/test_hugging_face_local.py b/test/components/generators/chat/test_hugging_face_local.py index 97782a2912..ca5ce2de88 100644 --- a/test/components/generators/chat/test_hugging_face_local.py +++ b/test/components/generators/chat/test_hugging_face_local.py @@ -3,8 +3,6 @@ # SPDX-License-Identifier: Apache-2.0 import asyncio -import gc -from typing import Optional from unittest.mock import Mock, patch import pytest @@ -12,12 +10,11 @@ from transformers import PreTrainedTokenizer from haystack.components.generators.chat import HuggingFaceLocalChatGenerator from haystack.dataclasses import ChatMessage, ChatRole, ToolCall -from haystack.dataclasses.streaming_chunk import AsyncStreamingCallbackT, StreamingChunk +from haystack.dataclasses.streaming_chunk import StreamingChunk from haystack.tools import Tool from haystack.tools.toolset import Toolset from haystack.utils import ComponentDevice from haystack.utils.auth import Secret -from haystack.utils.hf import AsyncHFTokenStreamingHandler # used to test serialization of streaming_callback diff --git a/test/components/generators/chat/test_openai.py b/test/components/generators/chat/test_openai.py index a007ddcb13..1945821128 100644 --- a/test/components/generators/chat/test_openai.py +++ b/test/components/generators/chat/test_openai.py @@ -6,7 +6,7 @@ import json import logging import os from datetime import datetime -from typing import Any, Optional +from typing import Any from unittest.mock import ANY, MagicMock, patch import pytest diff --git a/test/components/generators/chat/test_openai_responses.py b/test/components/generators/chat/test_openai_responses.py index 5765d4e595..89a513b997 100644 --- a/test/components/generators/chat/test_openai_responses.py +++ b/test/components/generators/chat/test_openai_responses.py @@ -4,7 +4,7 @@ import json import os -from typing import Any, Optional +from typing import Any from unittest.mock import ANY, MagicMock import pytest diff --git a/test/components/generators/test_openai_dalle.py b/test/components/generators/test_openai_dalle.py index 548b210269..9015b2ee64 100644 --- a/test/components/generators/test_openai_dalle.py +++ b/test/components/generators/test_openai_dalle.py @@ -2,7 +2,7 @@ # # SPDX-License-Identifier: Apache-2.0 -from unittest.mock import Mock, patch +from unittest.mock import patch import pytest from openai.types import ImagesResponse diff --git a/test/components/retrievers/test_auto_merging_retriever_async.py b/test/components/retrievers/test_auto_merging_retriever_async.py index 4913c2aeaf..9eadd988b7 100644 --- a/test/components/retrievers/test_auto_merging_retriever_async.py +++ b/test/components/retrievers/test_auto_merging_retriever_async.py @@ -4,9 +4,8 @@ import pytest -from haystack import Document, Pipeline +from haystack import Document from haystack.components.preprocessors import HierarchicalDocumentSplitter -from haystack.components.retrievers import InMemoryBM25Retriever from haystack.components.retrievers.auto_merging_retriever import AutoMergingRetriever from haystack.document_stores.in_memory import InMemoryDocumentStore diff --git a/test/components/retrievers/test_filter_retriever_async.py b/test/components/retrievers/test_filter_retriever_async.py index a8668aadd8..2470108e15 100644 --- a/test/components/retrievers/test_filter_retriever_async.py +++ b/test/components/retrievers/test_filter_retriever_async.py @@ -6,11 +6,10 @@ from typing import Any import pytest -from haystack import AsyncPipeline, DeserializationError, Pipeline +from haystack import AsyncPipeline from haystack.components.retrievers.filter_retriever import FilterRetriever from haystack.dataclasses import Document from haystack.document_stores.in_memory import InMemoryDocumentStore -from haystack.testing.factory import document_store_class @pytest.fixture() diff --git a/test/components/retrievers/test_sentence_window_retriever_async.py b/test/components/retrievers/test_sentence_window_retriever_async.py index 724495e80f..b8652ba253 100644 --- a/test/components/retrievers/test_sentence_window_retriever_async.py +++ b/test/components/retrievers/test_sentence_window_retriever_async.py @@ -7,7 +7,7 @@ import re import pytest -from haystack import Document, Pipeline +from haystack import Document from haystack.components.preprocessors import DocumentSplitter from haystack.components.retrievers import InMemoryBM25Retriever from haystack.components.retrievers.sentence_window_retriever import SentenceWindowRetriever diff --git a/test/components/routers/test_document_type_router.py b/test/components/routers/test_document_type_router.py index e452bd10c1..61bb09fe5d 100644 --- a/test/components/routers/test_document_type_router.py +++ b/test/components/routers/test_document_type_router.py @@ -2,9 +2,6 @@ # # SPDX-License-Identifier: Apache-2.0 -from pathlib import Path -from unittest.mock import patch - import pytest from haystack import Pipeline diff --git a/test/components/routers/test_file_router.py b/test/components/routers/test_file_router.py index da47ce447e..a25fc2eb7c 100644 --- a/test/components/routers/test_file_router.py +++ b/test/components/routers/test_file_router.py @@ -9,9 +9,7 @@ from pathlib import PosixPath from unittest.mock import mock_open, patch import pytest -from packaging import version -import haystack from haystack import Pipeline from haystack.components.converters import PyPDFToDocument, TextFileToDocument from haystack.components.routers.file_type_router import FileTypeRouter diff --git a/test/components/routers/test_metadata_router.py b/test/components/routers/test_metadata_router.py index ea4479c814..6085e29a16 100644 --- a/test/components/routers/test_metadata_router.py +++ b/test/components/routers/test_metadata_router.py @@ -2,8 +2,6 @@ # # SPDX-License-Identifier: Apache-2.0 -from typing import Union - import pytest from haystack import Pipeline diff --git a/test/components/tools/test_tool_invoker.py b/test/components/tools/test_tool_invoker.py index 62bcad4895..ee457169a6 100644 --- a/test/components/tools/test_tool_invoker.py +++ b/test/components/tools/test_tool_invoker.py @@ -4,7 +4,6 @@ import datetime import json -import os import time from typing import Any from unittest.mock import patch diff --git a/test/core/pipeline/break_points/test_pipeline_breakpoints_loops.py b/test/core/pipeline/break_points/test_pipeline_breakpoints_loops.py index 3935b2e7fa..91b14b2e2c 100644 --- a/test/core/pipeline/break_points/test_pipeline_breakpoints_loops.py +++ b/test/core/pipeline/break_points/test_pipeline_breakpoints_loops.py @@ -4,7 +4,6 @@ import json from pathlib import Path -from typing import Optional from unittest.mock import MagicMock, patch import pydantic diff --git a/test/core/pipeline/features/conftest.py b/test/core/pipeline/features/conftest.py index 1d9946df97..5b61d1479c 100644 --- a/test/core/pipeline/features/conftest.py +++ b/test/core/pipeline/features/conftest.py @@ -6,7 +6,7 @@ import asyncio import re from dataclasses import dataclass, field from pathlib import Path -from typing import Any, Union +from typing import Any import pytest from pandas import DataFrame diff --git a/test/core/pipeline/features/test_run.py b/test/core/pipeline/features/test_run.py index 463197bdbc..97fbb93171 100644 --- a/test/core/pipeline/features/test_run.py +++ b/test/core/pipeline/features/test_run.py @@ -6,7 +6,7 @@ import json import re from copy import deepcopy -from typing import Any, Optional, Union +from typing import Any from unittest.mock import ANY import pytest diff --git a/test/core/pipeline/test_utils.py b/test/core/pipeline/test_utils.py index f1e239a3dc..1dc4248450 100644 --- a/test/core/pipeline/test_utils.py +++ b/test/core/pipeline/test_utils.py @@ -15,7 +15,7 @@ from haystack.core.pipeline.utils import ( args_deprecated, parse_connect_string, ) -from haystack.tools import ComponentTool, Tool +from haystack.tools import ComponentTool def get_weather_report(city: str) -> str: diff --git a/test/core/super_component/test_super_component.py b/test/core/super_component/test_super_component.py index b0ee929ba0..aa3b1b3ee4 100644 --- a/test/core/super_component/test_super_component.py +++ b/test/core/super_component/test_super_component.py @@ -2,7 +2,7 @@ # # SPDX-License-Identifier: Apache-2.0 -from typing import Any, Union +from typing import Any from unittest.mock import patch import pytest diff --git a/test/core/test_importing.py b/test/test_imports.py similarity index 58% rename from test/core/test_importing.py rename to test/test_imports.py index c3f0341c21..ac147b5468 100644 --- a/test/core/test_importing.py +++ b/test/test_imports.py @@ -5,8 +5,10 @@ import sys from unittest.mock import patch +from haystack.lazy_imports import LazyImport -def test_lazy_import(): + +def test_lazy_importer_avoids_importing_unused_modules(): # Save the original state of the module if it exists original_imported = sys.modules.get("haystack.components.generators.chat.azure") @@ -15,7 +17,7 @@ def test_lazy_import(): if original_imported: del sys.modules["haystack.components.generators.chat.azure"] - from haystack.components.generators.chat import OpenAIChatGenerator # Import the intended class + from haystack.components.generators.chat import OpenAIChatGenerator # Import the intended class # noqa: F401 assert "haystack.components.generators.chat.openai" in sys.modules.keys() assert "haystack.components.generators.chat.azure" not in sys.modules.keys() @@ -23,3 +25,17 @@ def test_lazy_import(): # Restore the module if it was previously imported (preserves test isolation) if original_imported: sys.modules["haystack.components.generators.chat.azure"] = original_imported + + +def test_import_error_is_suppressed_and_deferred(): + with LazyImport() as lazy_import: + import a_module # noqa: F401 + + assert lazy_import._deferred is not None + exc_value, message = lazy_import._deferred + assert isinstance(exc_value, ImportError) + expected_message = ( + "Haystack failed to import the optional dependency 'a_module'. Try 'pip install a_module'. " + "Original error: No module named 'a_module'" + ) + assert expected_message in message diff --git a/test/test_lazy_imports.py b/test/test_lazy_imports.py deleted file mode 100644 index b7d8043b30..0000000000 --- a/test/test_lazy_imports.py +++ /dev/null @@ -1,22 +0,0 @@ -# SPDX-FileCopyrightText: 2022-present deepset GmbH -# -# SPDX-License-Identifier: Apache-2.0 - -import pytest - -from haystack.lazy_imports import DEFAULT_IMPORT_ERROR_MSG, LazyImport - - -class TestLazyImport: - def test_import_error_is_suppressed_and_deferred(self): - with LazyImport() as lazy_import: - import a_module - - assert lazy_import._deferred is not None - exc_value, message = lazy_import._deferred - assert isinstance(exc_value, ImportError) - expected_message = ( - "Haystack failed to import the optional dependency 'a_module'. Try 'pip install a_module'. " - "Original error: No module named 'a_module'" - ) - assert expected_message in message diff --git a/test/testing/test_factory.py b/test/testing/test_factory.py index 9e3ff4501f..071e4e51cc 100644 --- a/test/testing/test_factory.py +++ b/test/testing/test_factory.py @@ -2,8 +2,6 @@ # # SPDX-License-Identifier: Apache-2.0 -import pytest - from haystack.core.component import component from haystack.dataclasses import Document from haystack.testing.factory import component_class, document_store_class diff --git a/test/tools/test_from_function.py b/test/tools/test_from_function.py index 3b67a7ebf6..888d73e810 100644 --- a/test/tools/test_from_function.py +++ b/test/tools/test_from_function.py @@ -2,7 +2,7 @@ # # SPDX-License-Identifier: Apache-2.0 -from typing import Annotated, Literal, Optional +from typing import Annotated, Literal import pytest diff --git a/test/tools/test_toolset_wrapper.py b/test/tools/test_toolset_wrapper.py index 42a2c5c96f..2cb79d15e4 100644 --- a/test/tools/test_toolset_wrapper.py +++ b/test/tools/test_toolset_wrapper.py @@ -5,9 +5,8 @@ import pytest from haystack.components.agents import Agent -from haystack.components.tools import ToolInvoker from haystack.core.component.component import component -from haystack.tools import Tool, Toolset, warm_up_tools +from haystack.tools import Tool, Toolset from haystack.tools.toolset import _ToolsetWrapper