code: def test_merge_dataset_feature_stats_protos(self):
      proto1 = text_format.Parse(
          """
          num_examples: 7
          features: {
            path {
              step: "feature1"
            }
            type: STRING
            string_stats: {
              common_stats: {
                num_missing: 3
                num_non_missing: 4
                min_num_values: 1
                max_num_values: 1
              }
            }
          }
          """,
          statistics_pb2.DatasetFeatureStatistics(),
      )
  
      proto2 = text_format.Parse(
          """
          features: {
            path {
              step: "feature1"
            }
            type: STRING
            string_stats: {
              unique: 3
            }
          }
          """,
          statistics_pb2.DatasetFeatureStatistics(),
      )
  
      expected = text_format.Parse(
          """
          num_examples: 7
          features: {
            path {
              step: "feature1"
            }
            type: STRING
            string_stats: {
              common_stats: {
                num_missing: 3
                num_non_missing: 4
                min_num_values: 1
                max_num_values: 1
              }
              unique: 3
            }
          }
          """,
          statistics_pb2.DatasetFeatureStatistics(),
      )
  
      actual = _get_singleton_dataset(
          merge_util.merge_dataset_feature_statistics([proto1, proto2])
      )
      self.assertEqual(actual, expected)
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import copy
  import sys
  from typing import Iterable
  import unittest
  from absl.testing import absltest
  from absl.testing import parameterized
  import apache_beam
  from apache_beam.testing import util
  import numpy
  import pyarrow
  from tensorflow_data_validation.statistics import stats_impl
  from tensorflow_data_validation.statistics import stats_options
  from tensorflow_data_validation.statistics.generators import cross_feature_stats_generator
  from tensorflow_data_validation.statistics.generators import stats_generator
  from tensorflow_data_validation.utils import slicing_util
  from tensorflow_data_validation.utils import test_util
  from tfx_bsl.arrow import array_util
  from tfx_bsl.arrow import table_util
  from tfx_bsl.public.proto import slicing_spec_pb2
  from tfx_bsl.statistics import merge_util
  from google.protobuf import text_format
  from tensorflow.python.util.protobuf import compare
  from tensorflow_metadata.proto.v0 import schema_pb2
  from tensorflow_metadata.proto.v0 import statistics_pb2
label_desc: Use image node_id 11 for calling the StatsImplTest obj's underlying member method code with example usage: obj.test_merge_dataset_feature_stats_protos() without return types