Skip to content
Snippets Groups Projects
detection.py 2.52 KiB
Newer Older
Michał Pogoda's avatar
Michał Pogoda committed
from dataclasses import dataclass
from typing import Optional

Michał Pogoda's avatar
Michał Pogoda committed
@dataclass
    TYPE_NAME = "detection"
    def __init__(self) -> None:
        pass
Michał Pogoda's avatar
Michał Pogoda committed
    def __hash__(self) -> int:
Michał Pogoda's avatar
Michał Pogoda committed
        return (type(self), *(self.__dict__.values())).__hash__()
Michał Pogoda's avatar
Michał Pogoda committed
class MorphosyntacticInfoMixin:
    def __init__(self, morpho_tag: str, *args, **kwargs) -> None:
        super().__init__(*args, **kwargs)
        self._morpho_tag = morpho_tag
Michał Pogoda's avatar
Michał Pogoda committed
    @property
    def morpho_tag(self) -> str:
        return self._morpho_tag
class NameDetection(MorphosyntacticInfoMixin, Detection):
    TYPE_NAME = "name"
Michał Pogoda's avatar
Michał Pogoda committed
    def __init__(self, morpho_tag: Optional[str] = None) -> None:
        super().__init__(morpho_tag=morpho_tag)
class SurnameDetection(MorphosyntacticInfoMixin, Detection):
    TYPE_NAME = "surname"
Michał Pogoda's avatar
Michał Pogoda committed
    def __init__(self, morpho_tag: Optional[str] = None) -> None:
        super().__init__(morpho_tag=morpho_tag)
class StreetNameDetection(MorphosyntacticInfoMixin, Detection):
    TYPE_NAME = "street_name"
Michał Pogoda's avatar
Michał Pogoda committed
    def __init__(self, morpho_tag: Optional[str] = None) -> None:
        super().__init__(morpho_tag=morpho_tag)
class CityDetection(MorphosyntacticInfoMixin, Detection):
    TYPE_NAME = "city"
Michał Pogoda's avatar
Michał Pogoda committed
    def __init__(self, morpho_tag: Optional[str] = None) -> None:
        super().__init__(morpho_tag=morpho_tag)
class CountryDetection(MorphosyntacticInfoMixin, Detection):
    TYPE_NAME = "country"
Michał Pogoda's avatar
Michał Pogoda committed
    def __init__(self, morpho_tag: Optional[str] = None) -> None:
        super().__init__(morpho_tag=morpho_tag)
    TYPE_NAME = "url"
Michał Pogoda's avatar
Michał Pogoda committed
    def __init__(self) -> None:
        super().__init__()
    TYPE_NAME = "user"
Michał Pogoda's avatar
Michał Pogoda committed
    def __init__(self) -> None:
        super().__init__()
    TYPE_NAME = "email"
Michał Pogoda's avatar
Michał Pogoda committed
    def __init__(self) -> None:
        super().__init__()
Michał Pogoda's avatar
Michał Pogoda committed
class NumberDetection(Detection):
    TYPE_NAME = "number"
Michał Pogoda's avatar
Michał Pogoda committed
    def __init__(self) -> None:
Michał Pogoda's avatar
Michał Pogoda committed
        super().__init__()


Michał Pogoda's avatar
Michał Pogoda committed
class PhoneNumberDetection(NumberDetection):
    TYPE_NAME = "phone_number"
Michał Pogoda's avatar
Michał Pogoda committed
    def __init__(self) -> None:
        super().__init__()
Michał Pogoda's avatar
Michał Pogoda committed


class TINDetection(Detection):  # Tax Identification Number
    TYPE_NAME = "tin"
Michał Pogoda's avatar
Michał Pogoda committed
    def __init__(self) -> None:
        super().__init__()
Michał Pogoda's avatar
Michał Pogoda committed


class KRSDetection(Detection):  # National Court Register
    TYPE_NAME = "krs"
Michał Pogoda's avatar
Michał Pogoda committed
    def __init__(self) -> None:
        super().__init__()
Michał Pogoda's avatar
Michał Pogoda committed


class OtherDetection(Detection):  # Non standard entity
    TYPE_NAME = "other"
Michał Pogoda's avatar
Michał Pogoda committed
    def __init__(self) -> None:
Michał Pogoda's avatar
Michał Pogoda committed
        super().__init__()