data-xexe/xexe/utils.py
2024-06-11 13:18:20 +02:00

54 lines
1.6 KiB
Python

import datetime
class DateRange:
def __init__(self, start_date: datetime.date, end_date: datetime.date):
if type(start_date) != datetime.date or type(end_date) != datetime.date:
raise TypeError("start_date and end_date must be date objects.")
if start_date > end_date:
raise ValueError("start_date can't be after end_date.")
self._start_date = start_date
self._end_date = end_date
@property
def start_date(self):
return self._start_date
@start_date.setter
def start_date(self, value: datetime.date):
if type(value) != datetime.date:
raise TypeError("start_date must be a date object.")
if value > self._end_date:
raise ValueError("start_date can't be after end_date.")
self._start_date = value
@property
def end_date(self):
return self._end_date
@end_date.setter
def end_date(self, value: datetime.date):
if type(value) != datetime.date:
raise TypeError("end_date must be a date object.")
if value < self._start_date:
raise ValueError("end_date can't be before start_date.")
self._end_date = value
def __eq__(self, other: "DateRange") -> bool:
if not isinstance(other, DateRange):
raise TypeError("DataRange can only be compared to other DateRange.")
start_dates_are_different = self.start_date != other.start_date
end_dates_are_different = self.end_date != other.end_date
if start_dates_are_different or end_dates_are_different:
return False
return True