docs: def get_start_date(date_value: Union[str, datetime, date], timezone: str = "UTC") -> datetime:
      """
      Takes value from DAG config and generates valid start_date. Defaults to
      today, if not a valid date or relative time (1 hours, 1 days, etc.)
  
      :param date_value: either a datetime (or date) or a relative time as string
      :type date_value: Uniont[datetime, date, str]
      :param timezone: string value representing timezone for the DAG
      :type timezone: str
      :returns: datetime for start_date
      :type: datetime.datetime
      """
      try:
          local_tz: pendulum.Timezone = pendulum.timezone(timezone)
      except Exception as e:
          raise Exception(f"Failed to create timezone; err: {e}")
      if isinstance(date_value, date):
          return datetime.combine(date=date_value, time=datetime.min.time()).replace(tzinfo=local_tz)
      if isinstance(date_value, datetime):
          return date_value.replace(tzinfo=local_tz)
      rel_delta: timedelta = get_time_delta(date_value)
      now: datetime = (
          datetime.today()
              .replace(hour=0, minute=0, second=0, microsecond=0)
              .replace(tzinfo=local_tz)
      )
      if not rel_delta:
          return now
      return (now - rel_delta)