diff --git a/pyproject.toml b/pyproject.toml index 268544ad2e..e47f7e55d8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -34,6 +34,7 @@ dependencies = [ "jsonargparse[signatures]>=4.27.7", "docstring_parser", # CLI help-formatter "rich_argparse", # CLI help-formatter + "lightning-utilities", ] [project.optional-dependencies] @@ -293,11 +294,15 @@ pythonpath = "src" # COVERAGE CONFIGURATION # [tool.coverage.report] exclude_lines = [ - "except ImportError", + "pragma: no cover", + "def __repr__", + "raise NotImplementedError", + "if TYPE_CHECKING:", + "@abstractmethod", + "pass", "raise ImportError", - "except ApiException", - "raise ApiException", "raise ValueError", + "except ImportError:", ] [tool.coverage.paths] diff --git a/src/anomalib/models/__init__.py b/src/anomalib/models/__init__.py index ea091d1640..3b32c83367 100644 --- a/src/anomalib/models/__init__.py +++ b/src/anomalib/models/__init__.py @@ -58,9 +58,9 @@ class UnknownModelError(ModuleNotFoundError): "Rkde", "Stfpm", "Uflow", - "AiVad", "VlmAd", "WinClip", + "AiVad", ] logger = logging.getLogger(__name__) diff --git a/src/anomalib/models/image/vlm_ad/backends/huggingface.py b/src/anomalib/models/image/vlm_ad/backends/huggingface.py index c234ecfbc5..e25e9dccb3 100644 --- a/src/anomalib/models/image/vlm_ad/backends/huggingface.py +++ b/src/anomalib/models/image/vlm_ad/backends/huggingface.py @@ -5,19 +5,21 @@ import logging from pathlib import Path +from typing import TYPE_CHECKING from lightning_utilities.core.imports import package_available from PIL import Image -from transformers.modeling_utils import PreTrainedModel from anomalib.models.image.vlm_ad.utils import Prompt from .base import Backend -if package_available("transformers"): - import transformers +if TYPE_CHECKING: from transformers.modeling_utils import PreTrainedModel from transformers.processing_utils import ProcessorMixin + +if package_available("transformers"): + import transformers else: transformers = None @@ -39,7 +41,7 @@ def __init__( self._model: PreTrainedModel | None = None @property - def processor(self) -> ProcessorMixin: + def processor(self) -> "ProcessorMixin": """Get the Huggingface processor.""" if self._processor is None: if transformers is None: @@ -49,7 +51,7 @@ def processor(self) -> ProcessorMixin: return self._processor @property - def model(self) -> PreTrainedModel: + def model(self) -> "PreTrainedModel": """Get the Huggingface model.""" if self._model is None: if transformers is None: