from dateutil import parser
from datetime import date, datetime
from typing import List, TypeVar
from dateutil.relativedelta import relativedelta
T = TypeVar("T")
# =================================================================================================================
# =================================== UTILITY functions for data processing =======================================
[docs]
def get_updated_old_int(element, default=None):
return int(element.get("old")) if element.get("old") else default
[docs]
def get_updated_new_int(element, default=None):
return int(element.get("new")) if element.get("new") else default
[docs]
def get_updated_old_float(element, default=None):
return float(element.get("old")) if element.get("old") else default
[docs]
def get_updated_new_float(element, default=None):
return float(element.get("new")) if element.get("new") else default
[docs]
def get_updated_old_date(element, default=None):
return parser.parse(element.get("old")).date() if element.get("old") else default
[docs]
def get_updated_new_date(element, default=None):
return parser.parse(element.get("new")).date() if element.get("new") else default
[docs]
def get_updated_old_datetime(element, default=None):
return parser.parse(element.get("old")) if element.get("old") else default
[docs]
def get_updated_new_datetime(element, default=None):
return parser.parse(element.get("new")) if element.get("new") else default
[docs]
def add_days_to_date(start_date: date, days: int) -> date:
return start_date + relativedelta(days=days)
[docs]
def add_weeks_to_date(start_date: date, days: int) -> date:
return start_date + relativedelta(days=days)
[docs]
def add_days_to_date_str(start_date: date, days: int) -> str:
return (start_date + relativedelta(days=days)).strftime('%Y-%m-%d')
# =================================================================================================================
# =================================== UTILITY functions for data processing =======================================
[docs]
def get_utc_now_iso():
return datetime.utcnow().isoformat("T", "milliseconds") + "Z"
[docs]
def get_utc_today_iso():
return transform_date_to_utc_iso(date.today())
[docs]
def get_current_date() -> date:
return date.today()
[docs]
def get_current_date_str() -> str:
return transform_date_to_utc_iso(date.today())
[docs]
def get_local_now_iso():
return datetime.utcnow().isoformat("T", "milliseconds")
[docs]
def get_local_today_iso():
return transform_date_to_local_iso(date.today())