Skip to content
Snippets Groups Projects
date.py 1.23 KiB
Newer Older
Michał Pogoda's avatar
Michał Pogoda committed
"""Module for date detection in text."""

from typing import List, Optional, Tuple

from src.detections.detection import Detection
Michał Pogoda's avatar
Michał Pogoda committed
    """Date detection in text.

    Eg.: 12.05.2023
    """

    TYPE_NAME = "date"
Michał Pogoda's avatar
Michał Pogoda committed
    class AnnotationPart:
Michał Pogoda's avatar
Michał Pogoda committed
        """Annotation part of date detection."""

Michał Pogoda's avatar
Michał Pogoda committed
        TWO_DIGITS_DAY = "DD"
        ONE_DIGIT_DAY = "D"
        TWO_DIGIT_MONTH = "MM"
        ONE_DIGIT_MONTH = "M"
        FOUR_DIGIT_YEAR = "YYYY"
        TWO_DIGIT_YEAR = "YY"
        TEXT_MONTH = "MMM"
        OTHER = "OTHER"
Michał Pogoda's avatar
Michał Pogoda committed

    def __init__(
        self, format: Optional[List[Tuple[AnnotationPart, str]]] = None
    ) -> None:
Michał Pogoda's avatar
Michał Pogoda committed
        """Date detection initialization.
Michał Pogoda's avatar
Michał Pogoda committed
        Args:
            format (Optional[List[Tuple[AnnotationPart, str]]], optional): Format of
                    detected date. Defaults to None.

        """
        super().__init__()
Michał Pogoda's avatar
Michał Pogoda committed
        self.format = format
Michał Pogoda's avatar
Michał Pogoda committed
    def __eq__(self, other) -> bool:
Michał Pogoda's avatar
Michał Pogoda committed
        """Compare two date detections.

        Args:
            other (DateDetection): date detection to compare with

        Returns:
            bool: true if both detections are equal, false otherwise

        """
Michał Pogoda's avatar
Michał Pogoda committed
        return self.format == other.format and super().__eq__(other)