code: def test_broadcast_batch_shape(self):
      batch_shapes = ([2], [3, 2], [1, 2])
      distributions = [
          normal.Normal(  # pylint:disable=g-complex-comprehension
              loc=self._build_tensor(np.zeros(batch_shape)),
              scale=self._build_tensor(np.ones(batch_shape)),
          )
          for batch_shape in batch_shapes
      ]
      if self.use_static_shape:
          self.assertEqual(
              [3, 2], sts_util.broadcast_batch_shape(distributions)
          )
      else:
          broadcast_batch_shape = sts_util.broadcast_batch_shape(
              distributions
          )
          # Broadcast shape in Eager can contain Python `int`s, so we need to
          # explicitly convert to Tensor.
          self.assertAllEqual(
              [3, 2],
              self.evaluate(
                  tf.convert_to_tensor(value=broadcast_batch_shape)
              ),
          )
  
imports: from absl.testing import parameterized
  import numpy
  import pandas
  import tensorflow.compat.v1
  import tensorflow.compat.v2
  from tensorflow_probability.python.distributions import mvn_diag
  from tensorflow_probability.python.distributions import mvn_tril
  from tensorflow_probability.python.distributions import normal
  from tensorflow_probability.python.internal import tensorshape_util
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.sts.components import local_level
  from tensorflow_probability.python.sts.internal import missing_values_util
  from tensorflow_probability.python.sts.internal import util
label_desc: Use image node_id 1 for calling the _UtilityTests obj's underlying member method code with example usage: obj.test_broadcast_batch_shape() without return types