code: def _bn_ok_dtype(dt, name):
      # Bottleneck chokes on datetime64
      if not is_object_dtype(dt) and not (
          is_datetime_or_timedelta_dtype(dt)
          or is_datetime64tz_dtype(dt)
      ):
          # GH 15507
          # bottleneck does not properly upcast during the sum
          # so can overflow
  
          # GH 9422
          # further we also want to preserve NaN when all elements
          # are NaN, unlinke bottleneck/numpy which consider this
          # to be 0
          if name in ["nansum", "nanprod"]:
              return False
  
          return True
      return False
  
imports: from distutils.version import LooseVersion
  import functools
  import itertools
  import operator
  import warnings
  import numpy
  from pandas._libs import iNaT, lib, tslibs
  import pandas.compat
  from pandas.core.dtypes.cast import _int64_max, maybe_upcast_putmask
  from pandas.core.dtypes.common import _get_dtype, is_any_int_dtype, is_bool_dtype, is_complex, is_complex_dtype, is_datetime64_dtype, is_datetime64tz_dtype, is_datetime_or_timedelta_dtype, is_float, is_float_dtype, is_integer, is_integer_dtype, is_numeric_dtype, is_object_dtype, is_scalar, is_timedelta64_dtype, pandas_dtype
  from pandas.core.dtypes.dtypes import DatetimeTZDtype
  from pandas.core.dtypes.missing import isna, na_value_for_dtype, notna
  import pandas.core.common
  from pandas.core.config import get_option
label_desc: Use image node_id 2 for calling a global function with example usage: _bn_ok_dtype(dt, name) and returns: False, True, False