code: def find_common_type(types):
      """
      Find a common data type among the given dtypes.
  
      Parameters
      ----------
      types : list of dtypes
  
      Returns
      -------
      pandas extension or numpy dtype
  
      See Also
      --------
      numpy.find_common_type
  
      """
  
      if len(types) == 0:
          raise ValueError("no types given")
  
      first = types[0]
  
      # workaround for find_common_type([np.dtype('datetime64[ns]')] * 2)
      # => object
      if all(is_dtype_equal(first, t) for t in types[1:]):
          return first
  
      if any(
          isinstance(t, (PandasExtensionDtype, ExtensionDtype))
          for t in types
      ):
          return np.object
  
      # take lowest unit
      if all(is_datetime64_dtype(t) for t in types):
          return np.dtype("datetime64[ns]")
      if all(is_timedelta64_dtype(t) for t in types):
          return np.dtype("timedelta64[ns]")
  
      # don't mix bool / int or float or complex
      # this is different from numpy, which casts bool with float/int as int
      has_bools = any(is_bool_dtype(t) for t in types)
      if has_bools:
          has_ints = any(is_integer_dtype(t) for t in types)
          has_floats = any(is_float_dtype(t) for t in types)
          has_complex = any(is_complex_dtype(t) for t in types)
          if has_ints or has_floats or has_complex:
              return np.object
  
      return np.find_common_type(types, [])
  
imports: from datetime import datetime, timedelta
  import numpy
  from pandas._libs import lib, tslib, tslibs
  from pandas._libs.tslibs import NaT, OutOfBoundsDatetime, Period, iNaT
  from pandas.compat import PY3, string_types, text_type, to_str
  from .common import _INT64_DTYPE, _NS_DTYPE, _POSSIBLY_CAST_DTYPES, _TD_DTYPE, ensure_int8, ensure_int16, ensure_int32, ensure_int64, ensure_object, is_bool, is_bool_dtype, is_categorical_dtype, is_complex, is_complex_dtype, is_datetime64_dtype, is_datetime64_ns_dtype, is_datetime64tz_dtype, is_datetime_or_timedelta_dtype, is_datetimelike, is_dtype_equal, is_extension_array_dtype, is_extension_type, is_float, is_float_dtype, is_integer, is_integer_dtype, is_object_dtype, is_scalar, is_string_dtype, is_timedelta64_dtype, is_timedelta64_ns_dtype, is_unsigned_integer_dtype, pandas_dtype
  from .dtypes import DatetimeTZDtype, ExtensionDtype, PandasExtensionDtype, PeriodDtype
  from .generic import ABCDatetimeArray, ABCDatetimeIndex, ABCPeriodArray, ABCPeriodIndex, ABCSeries
  from .inference import is_list_like
  from .missing import isna, notna
label_desc: Use image node_id 21 for calling a global function with example usage: find_common_type(types) and returns: np, first, np, np, np, np