code: def test_keras_inputs_dynamic_list_shape(self):
      keras_inputs = feature.create_keras_inputs(
          context_feature_columns=self._context_feature_columns,
          example_feature_columns=self._example_feature_columns,
          size_feature_name=None,
      )
  
      self.assertEqual(
          keras_inputs["query_length"].shape.as_list(), [None, 1]
      )
      self.assertEqual(keras_inputs["query_length"].dtype, tf.int64)
  
      self.assertEqual(
          keras_inputs["utility"].shape.as_list(), [None, None, 1]
      )
      self.assertEqual(keras_inputs["utility"].dtype, tf.float32)
  
      self.assertEqual(keras_inputs["unigrams"].dtype, tf.string)
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import six
  import tensorflow.compat.v2
  from tensorflow_ranking.python.keras import feature
label_desc: Use image node_id 2 for calling the KerasInputsTest obj's underlying member method code with example usage: obj.test_keras_inputs_dynamic_list_shape() without return types