Source code for veil.entity_detectors.registry
from __future__ import annotations
"""Registry mapping :class:`~veil.types.entity_detector_type.EntityDetectorType` to entity detector classes.
external code can instantiate a entity detector via::
entity_detector_cls = EntityDetectorRegistry.get(EntityDetectorType.REGEX)
entity_detector = entity_detector_cls()
Registrations happen at import-time to keep the public API friction-free.
"""
from veil.core.base_registry import BaseRegistry
from veil.core.enums.entity_detector_type import EntityDetectorType
from veil.entity_detectors.api.hosted_masker_api_entity_detector import (
HostedMaskerApiEntityDetector,
)
from veil.entity_detectors.gliner import GlinerEntityDetector
from veil.entity_detectors.regex import RegexEntityDetector
from veil.entity_detectors.spacy import SpacyEntityDetector
[docs]
class EntityDetectorRegistry(BaseRegistry):
"""Concrete registry for entity detector implementations."""
[docs]
@classmethod
def get_key_from_str(cls, key_str: str) -> EntityDetectorType:
"""Convert a CLI/YAML string into a :class:`EntityDetectorType`."""
return EntityDetectorType.from_str(key_str)
EntityDetectorRegistry.register(EntityDetectorType.REGEX, RegexEntityDetector)
EntityDetectorRegistry.register(
EntityDetectorType.HOSTED_MASKER_API, HostedMaskerApiEntityDetector
)
EntityDetectorRegistry.register(EntityDetectorType.GLINER, GlinerEntityDetector)
EntityDetectorRegistry.register(EntityDetectorType.SPACY, SpacyEntityDetector)