code: def test_canonicalizes_observed_time_series(
      self, observed_time_series, expected_shape, expected_is_missing
  ):
      if callable(observed_time_series):
          observed_time_series = observed_time_series()
      (
          observed_time_series,
          is_missing,
      ) = sts_util.canonicalize_observed_time_series_with_mask(
          observed_time_series
      )
      # Evaluate with explicit identity ops to avoid TF1 error
      # `RuntimeError: The Session graph is empty.`
      observed_time_series, is_missing = self.evaluate(
          (observed_time_series, is_missing)
      )
      self.assertAllEqual(observed_time_series.shape, expected_shape)
      if is_missing is None:
          self.assertIsNone(expected_is_missing)
      elif expected_is_missing is None:
          expected_is_missing = np.zeros(is_missing.shape, dtype=bool)
      self.assertAllEqual(expected_is_missing, is_missing)
  
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 7 for calling the _UtilityTests obj's underlying member method code with example usage: obj.test_canonicalizes_observed_time_series(observed_time_series, expected_shape, expected_is_missing) without return types