Source code for cleanvision.issue_managers

import importlib
import os
from enum import Enum
from typing import List, Type, Dict, Callable

from cleanvision.utils.base_issue_manager import IssueManager


[docs]class IssueType(Enum): DARK = "dark" LIGHT = "light" ODD_ASPECT_RATIO = "odd_aspect_ratio" LOW_INFORMATION = "low_information" EXACT_DUPLICATES = "exact_duplicates" NEAR_DUPLICATES = "near_duplicates" BLURRY = "blurry" GRAYSCALE = "grayscale" ODD_SIZE = "odd_size"
ISSUE_MANAGER_REGISTRY: Dict[str, Type[IssueManager]] = {}
[docs]class IssueManagerFactory: """Factory class for constructing concrete issue managers."""
[docs] @classmethod def from_str(cls, issue_type: str) -> Type[IssueManager]: """Constructs a concrete issue manager from a string.""" if isinstance(issue_type, list): raise ValueError( "issue_type must be a string, not a list. Try using from_list instead." ) return ISSUE_MANAGER_REGISTRY[issue_type]
[docs] @classmethod def from_list(cls, issue_types: List[str]) -> List[Type[IssueManager]]: """Constructs a list of concrete issue managers from a list of strings.""" return [ISSUE_MANAGER_REGISTRY[issue_type] for issue_type in issue_types]
[docs]def register_issue_manager( name: str, ) -> Callable[[Type[IssueManager]], Type[IssueManager]]: def register_issue_manager_cls(cls: Type[IssueManager]) -> Type[IssueManager]: if name in ISSUE_MANAGER_REGISTRY: return ISSUE_MANAGER_REGISTRY[name] if not issubclass(cls, IssueManager): raise ValueError("{} must extend IssueManager".format(cls.__name__)) ISSUE_MANAGER_REGISTRY[name] = cls return cls return register_issue_manager_cls
for file in os.listdir(os.path.dirname(__file__)): if ( file.endswith("issue_manager.py") and not file.startswith("_") and not file.startswith(".") ): module_name = file[: file.find(".py")] module = importlib.import_module( "cleanvision.issue_managers" + "." + module_name )