1 """Various utilities for handling dates."""
2 from datetime import datetime
3 from plomtask.exceptions import BadFormatException
5 DATE_FORMAT = '%Y-%m-%d'
6 MIN_RANGE_DATE = '2024-01-01'
7 MAX_RANGE_DATE = '2030-12-31'
10 def valid_date(date_str: str) -> str:
11 """Validate date against DATE_FORMAT or 'today', return in DATE_FORMAT."""
12 if date_str == 'today':
13 date_str = todays_date()
15 dt = datetime.strptime(date_str, DATE_FORMAT)
16 except (ValueError, TypeError) as e:
17 msg = f'Given date of wrong format: {date_str}'
18 raise BadFormatException(msg) from e
19 return dt.strftime(DATE_FORMAT)
22 def todays_date() -> str:
23 """Return current date in DATE_FORMAT."""
24 return datetime.now().strftime(DATE_FORMAT)