code: def _check(
      self,
      function_text: str,
      input_types: Sequence[TypeProto],
      attributes: Sequence[AttributeProto],
      expected_output_types: Sequence[TypeProto],
  ):
      function = onnx.parser.parse_function(function_text)
      result = onnx.shape_inference.infer_function_output_types(
          function, input_types, attributes
      )
      self.assertEqual(len(expected_output_types), len(result))
      for expected, actual in zip(expected_output_types, result):
          self._compare_value_infos(expected, actual)
  
file_path: onnx/onnx/test/function_inference_test.py
imports: import unittest
  from typing import Sequence
  from shape_inference_test import TestShapeInferenceHelper
  import onnx
  import onnx.helper
  import onnx.parser
  import onnx.shape_inference
  from onnx import AttributeProto, TypeProto
label_desc: Use image node_id 1 for calling the TestFunctionInference obj's underlying member method code with example usage: obj._check(function_text, input_types, attributes, expected_output_types) without return types