code: def assert_feature_proto_equal(
      test: absltest.TestCase,
      actual: statistics_pb2.FeatureNameStatistics,
      expected: statistics_pb2.FeatureNameStatistics,
  ) -> None:
      """Ensures feature protos are equal.
  
      Args:
        test: The test case.
        actual: The actual feature proto.
        expected: The expected feature proto.
      """
  
      test.assertLen(actual.custom_stats, len(expected.custom_stats))
      expected_custom_stats = {}
      for expected_custom_stat in expected.custom_stats:
          expected_custom_stats[
              expected_custom_stat.name
          ] = expected_custom_stat
  
      for actual_custom_stat in actual.custom_stats:
          test.assertIn(actual_custom_stat.name, expected_custom_stats)
          expected_custom_stat = expected_custom_stats[
              actual_custom_stat.name
          ]
          compare.assertProtoEqual(
              test,
              expected_custom_stat,
              actual_custom_stat,
              normalize_numbers=True,
          )
      del actual.custom_stats[:]
      del expected.custom_stats[:]
  
      # Compare the rest of the proto without numeric custom stats
      compare.assertProtoEqual(
          test, expected, actual, normalize_numbers=True
      )
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import traceback
  from typing import Callable, Dict, Iterable, List, Optional, Tuple, Union
  from absl.testing import absltest
  import apache_beam
  from apache_beam.testing import util
  import pyarrow
  from tensorflow_data_validation import types
  from tensorflow_data_validation.statistics.generators import stats_generator
  from tensorflow.python.util.protobuf import compare
  from tensorflow_metadata.proto.v0 import statistics_pb2
label_desc: Use image node_id 4 for calling a global function with example usage: assert_feature_proto_equal(test, actual, expected) without return types