code: def _maybe_unbox_datetimelike(
      value: Scalar, dtype: DtypeObj
  ) -> Scalar:
      """
      Convert a Timedelta or Timestamp to timedelta64 or datetime64 for setting
      into a numpy array.  Failing to unbox would risk dropping nanoseconds.
  
      Notes
      -----
      Caller is responsible for checking dtype.kind in ["m", "M"]
      """
      if is_valid_na_for_dtype(value, dtype):
          # GH#36541: can't fill array directly with pd.NaT
          # > np.empty(10, dtype="datetime64[ns]").fill(pd.NaT)
          # ValueError: cannot convert float NaN to integer
          value = dtype.type("NaT", "ns")
      elif isinstance(value, Timestamp):
          if value.tz is None:
              value = value.to_datetime64()
          elif not isinstance(dtype, DatetimeTZDtype):
              raise TypeError(
                  "Cannot unbox tzaware Timestamp to tznaive dtype"
              )
      elif isinstance(value, Timedelta):
          value = value.to_timedelta64()
  
      _disallow_mismatched_datetimelike(value, dtype)
      return value
  
imports: from __future__ import annotations
  import datetime
  import functools
  from typing import TYPE_CHECKING, Any, Literal, Sized, TypeVar, cast, overload
  import warnings
  import numpy
  from pandas._libs import lib
  from pandas._libs.missing import NA, NAType, checknull
  from pandas._libs.tslibs import NaT, OutOfBoundsDatetime, OutOfBoundsTimedelta, Timedelta, Timestamp, get_unit_from_dtype, is_supported_unit
  from pandas._libs.tslibs.timedeltas import array_to_timedelta64
  from pandas._typing import ArrayLike, Dtype, DtypeObj, NumpyIndexT, Scalar, npt
  from pandas.errors import IntCastingNaNError, LossySetitemError
  from pandas.core.dtypes.common import ensure_int8, ensure_int16, ensure_int32, ensure_int64, ensure_object, ensure_str, is_bool, is_bool_dtype, is_complex, is_complex_dtype, is_datetime64_dtype, is_extension_array_dtype, is_float, is_float_dtype, is_integer, is_integer_dtype, is_numeric_dtype, is_object_dtype, is_scalar, is_signed_integer_dtype, is_string_dtype, is_timedelta64_dtype, is_unsigned_integer_dtype, pandas_dtype
  from pandas.core.dtypes.dtypes import BaseMaskedDtype, CategoricalDtype, DatetimeTZDtype, ExtensionDtype, IntervalDtype, PandasExtensionDtype, PeriodDtype
  from pandas.core.dtypes.generic import ABCExtensionArray, ABCIndex, ABCSeries
  from pandas.core.dtypes.inference import is_list_like
  from pandas.core.dtypes.missing import is_valid_na_for_dtype, isna, na_value_for_dtype, notna
  from pandas.io._util import _arrow_dtype_mapping
label_desc: Use image node_id 5 for calling a global function with example usage: _maybe_unbox_datetimelike(value, dtype) and returns: value