code: def _transform_coreml_dtypes(
      builder,  # type : NeuralNetworkBuilder
      inputs,  # type: List[EdgeInfo]
      outputs,  # type: List[EdgeInfo]
  ):
      # type: (...) -> None
  
      """Make sure ONNX input/output data types are mapped to the equivalent CoreML types"""
      for i, input_ in enumerate(inputs):
          onnx_type = input_[1]
          if onnx_type == TensorProto.FLOAT:
              _update_multiarray_to_float32(
                  builder.spec.description.input[i]
              )
          elif onnx_type == TensorProto.DOUBLE:
              continue
          elif (
              onnx_type == TensorProto.INT32
              or onnx_type == TensorProto.INT64
          ):
              _update_multiarray_to_int32(
                  builder.spec.description.input[i]
              )
          elif onnx_type == TensorProto.BOOL:
              _update_multiarray_to_float32(
                  builder.spec.description.input[i]
              )
          else:
              raise TypeError(
                  "Input must be of of type FLOAT, DOUBLE, INT32 or INT64"
              )
  
      for i, output_ in enumerate(outputs):
          onnx_type = output_[1]
          if onnx_type == TensorProto.FLOAT:
              _update_multiarray_to_float32(
                  builder.spec.description.output[i]
              )
          elif onnx_type == TensorProto.DOUBLE:
              continue
          elif (
              onnx_type == TensorProto.INT32
              or onnx_type == TensorProto.INT64
          ):
              _update_multiarray_to_int32(
                  builder.spec.description.output[i]
              )
          elif onnx_type == TensorProto.BOOL:
              _update_multiarray_to_float32(
                  builder.spec.description.output[i]
              )
          else:
              raise TypeError(
                  "Output must be of of type FLOAT, DOUBLE, INT32 or INT64"
              )
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from __future__ import unicode_literals
  from typing import Text, Union, Optional, Dict, Any, Iterable, Sequence, Callable, List
  import numpy
  from coremltools._deps import _HAS_ONNX
  from coremltools.models.neural_network import NeuralNetworkBuilder
  from coremltools.models import datatypes, MLModel
  from coremltools.proto import FeatureTypes_pb2
  from coremltools import _MINIMUM_CUSTOM_LAYER_SPEC_VERSION
  from coremltools import _MINIMUM_CUSTOM_MODEL_SPEC_VERSION
  from coremltools import _MINIMUM_NDARRAY_SPEC_VERSION
  from coremltools import __version__
  from coremltools.models import _METADATA_VERSION, _METADATA_SOURCE
  from typing import Tuple
  from ._operators import _convert_node, _SEQUENCE_LAYERS_REGISTRY, _ONNX_NODE_REGISTRY, _add_const_inputs_if_required
  from ._operators_nd import _ONNX_NODE_REGISTRY_ND, _convert_node_nd
  from ._graph import Graph, EdgeInfo, Transformer
  from ._transformers import ConvAddFuser, DropoutRemover, ReshapeInitTensorFuser, BNBroadcastedMulFuser, BNBroadcastedAddFuser, PixelShuffleFuser, OutputRenamer, AddModelInputsOutputs, ConstantsToInitializers, ImageScalerRemover, ShapeOpRemover, ConstantRemover, ConstantFillToInitializers, ReshapeTransposeReshape_pattern1, CastOpRemover, DeadCodeElimination, PaddingOpRemover
  from coremltools.converters.mil.backend.nn.passes.mlmodel_passes import remove_disconnected_layers, transform_conv_crop
  from ._error_utils import ErrorHandling
  from ._graph_viz import plot_graph
label_desc: Use image node_id 6 for calling a global function with example usage: _transform_coreml_dtypes(builder, inputs, outputs) without return types