code: def testExponentiallyModifiedGaussianShape(self):
      mu = tf.constant([-3.0] * 5, dtype=self.dtype)
      sigma = tf.constant(11.0, dtype=self.dtype)
      rate = tf.constant(6.0, dtype=self.dtype)
      exgaussian = emg.ExponentiallyModifiedGaussian(
          loc=mu, scale=sigma, rate=rate, validate_args=True
      )
  
      self.assertEqual(
          self.evaluate(exgaussian.batch_shape_tensor()), [5]
      )
      self.assertEqual(exgaussian.batch_shape, tf.TensorShape([5]))
      self.assertAllEqual(
          self.evaluate(exgaussian.event_shape_tensor()), []
      )
      self.assertEqual(exgaussian.event_shape, tf.TensorShape([]))
  
imports: import math
  import numpy
  from scipy import stats
  import tensorflow.compat.v2
  from tensorflow_probability.python.distributions import exponentially_modified_gaussian
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.math import gradient
label_desc: Use image node_id 11 for calling the _ExponentiallyModifiedGaussianTest obj's underlying member method code with example usage: obj.testExponentiallyModifiedGaussianShape() without return types