code: def test_constrained_affine_from_event_shape(
      self,
      event_shape,
      operators,
      bijector,
      batch_shape,
      dtype,
      is_static,
      is_stateless=JAX_MODE,
  ):
      (
          init_seed,
          grads_seed,
          shapes_seed,
          dtype_seed,
      ) = samplers.split_seed(
          test_util.test_seed(sampler_type="stateless"), n=4
      )
  
      if not is_static:
          event_shape = tf.nest.map_structure(
              lambda s: tf1.placeholder_with_default(  # pylint: disable=g-long-lambda
                  np.array(s, dtype=np.int32),
                  # Reshape bijector needs to know event_ndims statically.
                  shape=[len(s)],
              ),
              event_shape,
          )
  
      surrogate_posterior = self._initialize_surrogate(
          "build_affine_surrogate_posterior",
          is_stateless=is_stateless,
          seed=init_seed,
          event_shape=event_shape,
          operators=operators,
          bijector=bijector,
          batch_shape=self.maybe_static(
              np.int32(batch_shape), is_static=is_static
          ),
          dtype=dtype,
          validate_args=True,
      )
  
      self._test_shapes(
          surrogate_posterior,
          batch_shape=batch_shape,
          event_shape=event_shape,
          seed=shapes_seed,
      )
      self._test_dtype(surrogate_posterior, dtype, seed=dtype_seed)
      if not is_stateless:
          self._test_gradients(surrogate_posterior, seed=grads_seed)
  
imports: from absl.testing import parameterized
  import numpy
  import tensorflow.compat.v1
  import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import exp
  from tensorflow_probability.python.bijectors import fill_triangular
  from tensorflow_probability.python.bijectors import identity
  from tensorflow_probability.python.bijectors import joint_map
  from tensorflow_probability.python.bijectors import masked_autoregressive
  from tensorflow_probability.python.bijectors import sigmoid
  from tensorflow_probability.python.bijectors import softplus
  from tensorflow_probability.python.distributions import deterministic
  from tensorflow_probability.python.distributions import exponential
  from tensorflow_probability.python.distributions import gamma
  from tensorflow_probability.python.distributions import independent
  from tensorflow_probability.python.distributions import joint_distribution_coroutine
  from tensorflow_probability.python.distributions import joint_distribution_named
  from tensorflow_probability.python.distributions import joint_distribution_sequential
  from tensorflow_probability.python.distributions import laplace
  from tensorflow_probability.python.distributions import logistic
  from tensorflow_probability.python.distributions import normal
  from tensorflow_probability.python.distributions import sample
  from tensorflow_probability.python.distributions import student_t
  from tensorflow_probability.python.experimental.vi import surrogate_posteriors
  from tensorflow_probability.python.internal import nest_util
  from tensorflow_probability.python.internal import prefer_static
  from tensorflow_probability.python.internal import samplers
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.internal import tf_keras
  from tensorflow_probability.python.vi import optimization
  from tensorflow.python.util import nest
label_desc: Use image node_id 2 for calling the AffineSurrogatePosterior obj's underlying member method code with example usage: obj.test_constrained_affine_from_event_shape(event_shape, operators, bijector, batch_shape, dtype, is_static, is_stateless) without return types