code: def get_since_until_from_time_range(
      time_range: str | None = None,
      time_shift: str | None = None,
      extras: dict[str, Any] | None = None,
  ) -> tuple[datetime | None, datetime | None]:
      return get_since_until(
          relative_start=(extras or {}).get(
              "relative_start",
              app.config["DEFAULT_RELATIVE_START_TIME"],
          ),
          relative_end=(extras or {}).get(
              "relative_end", app.config["DEFAULT_RELATIVE_END_TIME"]
          ),
          time_range=time_range,
          time_shift=time_shift,
      )
  
file_path: superset/superset/common/utils/time_range_utils.py
imports: from __future__ import annotations
  from datetime import datetime
  from typing import Any, cast
  from superset import app
  from superset.common.query_object import QueryObject
  from superset.utils.core import FilterOperator, get_xaxis_label
  from superset.utils.date_parser import get_since_until
label_desc: Use image node_id 1 for calling a global function with example usage: get_since_until_from_time_range(time_range, time_shift, extras) and returns: get_since_until