code: def numpy_type_to_builtin_type(nptype):
      if type(nptype) == np.dtype:
          nptype = nptype.type
  
      if np.issubclass_(nptype, np.bool) or np.issubclass_(
          nptype, np.bool_
      ):
          # numpy as 2 bool types it looks like. what is the difference?
          return types_bool
      elif np.issubclass_(nptype, np.int8):
          return types_int8
      elif np.issubclass_(nptype, np.int16):
          return types_int16
      elif np.issubclass_(nptype, np.int32):
          return types_int32
      elif np.issubclass_(nptype, np.int64):
          return types_int64
      elif np.issubclass_(nptype, np.uint8):
          return types_int8
      elif np.issubclass_(nptype, np.uint16):
          return types_int16
      elif np.issubclass_(nptype, np.uint32):
          return types_int32
      elif np.issubclass_(nptype, np.uint64):
          return types_int64
      elif np.issubclass_(nptype, np.int):
          # Catch all int
          return types_int32
      elif np.issubclass_(nptype, np.object_):
          # symbolic shape is considered int32
          return types_int32
      elif np.issubclass_(nptype, np.float16):
          return types_fp16
      elif np.issubclass_(nptype, np.float32) or np.issubclass_(
          nptype, np.single
      ):
          return types_fp32
      elif np.issubclass_(nptype, np.float64) or np.issubclass_(
          nptype, np.double
      ):
          return types_fp64
      elif (
          np.issubclass_(nptype, six.string_types)
          or np.issubclass_(nptype, np.string_)
          or np.issubclass_(nptype, np.str_)
      ):
          return types_str
      else:
          raise TypeError("Unsupported numpy type: %s" % (nptype))
  
imports: from .type_bool import bool
  from .type_double import is_float, fp16, fp32, fp64
  from .type_list import is_list
  from .type_int import is_int, int8, int16, int32, int64, uint8, uint16, uint32, uint64
  from .type_str import str
  from .type_unknown import unknown
  import numpy
  import sympy
  import six
  from .get_type_info import get_type_info
label_desc: Use image node_id 12 for calling a global function with example usage: numpy_type_to_builtin_type(nptype) and returns: types_bool, types_int8, types_int16, types_int32, types_int64, types_int8, types_int16, types_int32, types_int64, types_int32, types_int32, types_fp16, types_fp32, types_fp64, types_str