code: def _maybe_normalize_endpoints(
      start, end, normalize
  ):  # pragma: no cover
      _normalized = True
  
      if start is not None:
          if normalize:
              start = normalize_date(start)
              _normalized = True
          else:
              _normalized = _normalized and start.time() == _midnight
  
      if end is not None:
          if normalize:
              end = normalize_date(end)
              _normalized = True
          else:
              _normalized = _normalized and end.time() == _midnight
  
      return start, end, _normalized
  
imports: import warnings
  from datetime import datetime, date, time
  import numpy
  import pandas
  from pandas import Timestamp, NaT
  from pandas.tseries.frequencies import to_offset
  from pandas.tseries.offsets import Tick
  from pandas._libs.tslibs import timezones
  from ...None import opcodes
  from ...config import options
  from ...core import OutputType
  from ...serialization.serializables import AnyField, Int64Field, BoolField, StringField
  from ...tensor.utils import decide_chunk_sizes
  from ...utils import pd_release_version, no_default
  from ..operands import DataFrameOperand, DataFrameOperandMixin
  from ..utils import parse_index
label_desc: Use image node_id 2 for calling a global function with example usage: _maybe_normalize_endpoints(start, end, normalize) and returns: start,  end,  _normalized