WhintPy 1.1

https://sourceforge.net/projects/whintpy/

Module whintpy.filters

Class DatetimeComparator

Description

Comparison methods for datetime.date or datetime.datetime objects.

It extends the BaseComparator() and includes methods to check equality, less than, less than or equal to, greater than, and greater than or equal to between two datetime objects. It also includes error handling for type mismatches.

Example
 >>> import datetime
 >>> tc = DatetimeComparator()
 >>> tc.equal(datetime.date(2024, 3, 12), datetime.date(2024, 3, 12))
 > True
 >>> tc.get('equal')(datetime.date(2024, 3, 12), datetime.date(2024, 3, 12))
 > True

Constructor

Create a DatetimeComparator instance.

View Source
def __init__(self):
    """Create a DatetimeComparator instance.

    """
    super().__init__()
    self._methods['equal'] = DatetimeComparator.equal
    self._methods['le'] = DatetimeComparator.le
    self._methods['lt'] = DatetimeComparator.lt
    self._methods['ge'] = DatetimeComparator.ge
    self._methods['gt'] = DatetimeComparator.gt
    self._methods['before'] = DatetimeComparator.le
    self._methods['after'] = DatetimeComparator.ge

Public functions

equal

Test if two datetime are equal to each other.

Parameters
  • d1: (datetime) Datetime to compare.
  • d2: (datetime) Datetime to be compared with.
Returns
  • (bool)
Raises
  • TypeError: invalid given parameter.
  • TypeError: Inconsistent types
View Source
@staticmethod
def equal(d1: datetime, d2: datetime) -> bool:
    """Test if two datetime are equal to each other.

        :param d1: (datetime) Datetime to compare.
        :param d2: (datetime) Datetime to be compared with.
        :return: (bool)
        :raises: TypeError: invalid given parameter.
        :raises: TypeError: Inconsistent types

        """
    DatetimeComparator._check_date(d1)
    DatetimeComparator._check_date(d2)
    if type(d1) is type(d2):
        return d1 == d2
    else:
        raise TypeError(DatetimeComparator._ERROR_TYPES_MISMATCH.format(type(d1), type(d2)))

lt

Test if the first datetime is before the second datetime.

Parameters
  • d1: (datetime) Datetime to compare.
  • d2: (datetime) Datetime to be compared with.
Raises
  • TypeError: invalid given parameter.
  • TypeError: Inconsistent types
Returns
  • (bool)
View Source
@staticmethod
def lt(d1: datetime, d2: datetime) -> bool:
    """Test if the first datetime is before the second datetime.

        :param d1: (datetime) Datetime to compare.
        :param d2: (datetime) Datetime to be compared with.
        :raises: TypeError: invalid given parameter.
        :raises: TypeError: Inconsistent types
        :return: (bool)

        """
    DatetimeComparator._check_date(d1)
    DatetimeComparator._check_date(d2)
    if type(d1) is type(d2):
        return d1 < d2
    else:
        raise TypeError(DatetimeComparator._ERROR_TYPES_MISMATCH.format(type(d1), type(d2)))

le

Test if the first datetime is before or equal to the second datetime.

Parameters
  • d1: (datetime) Datetime to compare.
  • d2: (datetime) Datetime to be compared with.
Returns
  • (bool)
Raises
  • TypeError: invalid given parameter.
  • TypeError: Inconsistent types
View Source
@staticmethod
def le(d1: datetime, d2: datetime) -> bool:
    """Test if the first datetime is before or equal to the second datetime.

        :param d1: (datetime) Datetime to compare.
        :param d2: (datetime) Datetime to be compared with.
        :return: (bool)
        :raises: TypeError: invalid given parameter.
        :raises: TypeError: Inconsistent types

        """
    DatetimeComparator._check_date(d1)
    DatetimeComparator._check_date(d2)
    if type(d1) is type(d2):
        return d1 <= d2
    else:
        raise TypeError(DatetimeComparator._ERROR_TYPES_MISMATCH.format(type(d1), type(d2)))

gt

Test if the first datetime is after the second datetime.

Parameters
  • d1: (datetime) Datetime to compare.
  • d2: (datetime) Datetime to be compared with.
Raises
  • TypeError: invalid given parameter.
  • TypeError: Inconsistent types
Returns
  • (bool)
View Source
@staticmethod
def gt(d1: datetime, d2: datetime) -> bool:
    """Test if the first datetime is after the second datetime.

        :param d1: (datetime) Datetime to compare.
        :param d2: (datetime) Datetime to be compared with.
        :raises: TypeError: invalid given parameter.
        :raises: TypeError: Inconsistent types
        :return: (bool)

        """
    DatetimeComparator._check_date(d1)
    DatetimeComparator._check_date(d2)
    if type(d1) is type(d2):
        return d1 > d2
    else:
        raise TypeError(DatetimeComparator._ERROR_TYPES_MISMATCH.format(type(d1), type(d2)))

ge

Test if the first datetime is after or equal to the second datetime.

Parameters
  • d1: (datetime) Datetime to compare.
  • d2: (datetime) Datetime to be compared with.
Raises
  • TypeError: invalid given parameter.
  • TypeError: Inconsistent types
Returns
  • (bool)
View Source
@staticmethod
def ge(d1: datetime, d2: datetime) -> bool:
    """Test if the first datetime is after or equal to the second datetime.

        :param d1: (datetime) Datetime to compare.
        :param d2: (datetime) Datetime to be compared with.
        :raises: TypeError: invalid given parameter.
        :raises: TypeError: Inconsistent types
        :return: (bool)

        """
    DatetimeComparator._check_date(d1)
    DatetimeComparator._check_date(d2)
    if type(d1) is type(d2):
        return d1 >= d2
    else:
        raise TypeError(DatetimeComparator._ERROR_TYPES_MISMATCH.format(type(d1), type(d2)))

Private functions

_check_date

Raise TypeError if not a datetime.date or datetime.datetime object.

Parameters
  • d: (datetime) A date to be checked
Raises
  • TypeError: d is not of the expected type
View Source
@staticmethod
def _check_date(d: datetime) -> None:
    """Raise TypeError if not a datetime.date or datetime.datetime object.

        :param d: (datetime) A date to be checked
        :raises: TypeError: d is not of the expected type

        """
    if isinstance(d, (datetime.date, datetime.datetime)) is False:
        raise TypeError(f'Expected a datetime. Got {str(type(d))} instead.')