code: def test_scalar_summary_with_family(self, scope):
      scoped_summary = _ScopedSummary(scope)
      with self.test_session() as s:
          i = tf.constant(7)
          with tf.name_scope("outer"):
              im1 = scoped_summary.scalar("inner", i, family="family")
              im2 = scoped_summary.scalar("inner", i, family="family")
          sm1, sm2 = s.run([im1, im2])
      summary = tf.Summary()
  
      summary.ParseFromString(sm1)
      values = summary.value
      self.assertLen(values, 1)
      self.assertEqual(values[0].tag, "family/outer/family/inner")
      self.assertEqual(values[0].simple_value, 7.0)
  
      summary.ParseFromString(sm2)
      values = summary.value
      self.assertLen(values, 1)
      self.assertEqual(values[0].tag, "family/outer/family/inner_1")
      self.assertEqual(values[0].simple_value, 7.0)
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import functools
  import os
  from absl.testing import parameterized
  from adanet import tf_compat
  from adanet.core import testing_utils
  from adanet.core.summary import _ScopedSummary
  from adanet.core.summary import _TPUScopedSummary
  from adanet.core.summary import monkey_patched_summaries
  from six.moves import range
  import tensorflow.compat.v1
  from tensorflow.python.ops import summary_ops_v2
label_desc: Use image node_id 3 for calling the ScopedSummaryTest obj's underlying member method code with example usage: obj.test_scalar_summary_with_family(scope) without return types