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

@dataclass
Michał Pogoda's avatar
Michał Pogoda committed
    def __init__(self, type_name: str) -> None:
        self._type_name = type_name
        
    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
        
    @property
    def morpho_tag(self) -> str:
        return self._morpho_tag
        
class NameDetection(MorphosyntacticInfoMixin, Detection):
Michał Pogoda's avatar
Michał Pogoda committed
    def __init__(self, morpho_tag: Optional[str] = None) -> None:
        super().__init__(morpho_tag=morpho_tag, type_name="name")
        
class SurnameDetection(MorphosyntacticInfoMixin, Detection):
Michał Pogoda's avatar
Michał Pogoda committed
    def __init__(self, morpho_tag: Optional[str] = None) -> None:
        super().__init__(morpho_tag=morpho_tag, type_name="surname")
        
class StreetNameDetection(MorphosyntacticInfoMixin, Detection):
Michał Pogoda's avatar
Michał Pogoda committed
    def __init__(self, morpho_tag: Optional[str] = None) -> None:
        super().__init__(morpho_tag=morpho_tag, type_name="street_name")
        
class CityDetection(MorphosyntacticInfoMixin, Detection):
Michał Pogoda's avatar
Michał Pogoda committed
    def __init__(self, morpho_tag: Optional[str] = None) -> None:
        super().__init__(morpho_tag=morpho_tag, type_name="city")
        
class CountryDetection(MorphosyntacticInfoMixin, Detection):
Michał Pogoda's avatar
Michał Pogoda committed
    def __init__(self, morpho_tag: Optional[str] = None) -> None:
        super().__init__(morpho_tag=morpho_tag, type_name="country")
        
Michał Pogoda's avatar
Michał Pogoda committed
    def __init__(self) -> None:
        super().__init__("url")
        
Michał Pogoda's avatar
Michał Pogoda committed
    def __init__(self) -> None:
        super().__init__("user")
        
Michał Pogoda's avatar
Michał Pogoda committed
    def __init__(self) -> None:
        super().__init__("email")
        
Michał Pogoda's avatar
Michał Pogoda committed
class NumberDetection(Detection):
    def __init__(self) -> None:
        super().__init__("number")        
class PhoneNumberDetection(NumberDetection):
    def __init__(self) -> None:
        super().__init__()
        self._type_name = "phone_number"
    
class TINDetection(Detection): # Tax Identification Number
Michał Pogoda's avatar
Michał Pogoda committed
    def __init__(self) -> None:
        super().__init__("tin")
        
class KRSDetection(Detection): # National Court Register
Michał Pogoda's avatar
Michał Pogoda committed
    def __init__(self) -> None:
        super().__init__("krs")
        
class OtherDetection(Detection): # Non standard entity
Michał Pogoda's avatar
Michał Pogoda committed
    def __init__(self) -> None:
        super().__init__("other")