code: def test_summary_name_conversion(self, scope):
      scoped_summary = _ScopedSummary(scope)
      c = tf.constant(3)
      summary = tf.Summary()
  
      with self.test_session() as sess:
          s = scoped_summary.scalar("name with spaces", c)
          summary.ParseFromString(sess.run(s))
          self.assertEqual(summary.value[0].tag, "name_with_spaces")
  
          s2 = scoped_summary.scalar(
              "name with many $#illegal^: characters!", c
          )
          summary.ParseFromString(sess.run(s2))
          self.assertEqual(
              summary.value[0].tag,
              "name_with_many___illegal___characters_",
          )
  
          s3 = scoped_summary.scalar("/name/with/leading/slash", c)
          summary.ParseFromString(sess.run(s3))
          self.assertEqual(
              summary.value[0].tag, "name/with/leading/slash"
          )
  
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 11 for calling the ScopedSummaryTest obj's underlying member method code with example usage: obj.test_summary_name_conversion(scope) without return types