code: def test_required_only(
      self, input_signature, type_constraint, decorator
  ):
      @decorator
      def foo(x, y, z):  # pylint: disable=unused-argument
          pass
  
      spec = (
          function_type_utils.FunctionSpec.from_function_and_signature(
              foo, input_signature
          )
      )
      self.assertEqual(
          tuple(spec.fullargspec),
          (["x", "y", "z"], None, None, None, [], None, {}),
      )
      self.assertEqual(spec.input_signature, input_signature)
      self.assertEqual(spec.default_values, {})
      self.assertEqual(
          spec.function_type,
          function_type_lib.FunctionType(
              [
                  function_type_lib.Parameter(
                      "x",
                      function_type_lib.Parameter.POSITIONAL_OR_KEYWORD,
                      False,
                      type_constraint[0],
                  ),
                  function_type_lib.Parameter(
                      "y",
                      function_type_lib.Parameter.POSITIONAL_OR_KEYWORD,
                      False,
                      type_constraint[1],
                  ),
                  function_type_lib.Parameter(
                      "z",
                      function_type_lib.Parameter.POSITIONAL_OR_KEYWORD,
                      False,
                      type_constraint[2],
                  ),
              ]
          ),
      )
  
imports: from absl.testing import parameterized
  from tensorflow.core.function import trace_type
  from tensorflow.core.function.polymorphism import function_type
  from tensorflow.python.eager.polymorphic_function import function_type_utils
  from tensorflow.python.framework import tensor_spec
  from tensorflow.python.platform import test
  from tensorflow.python.util import tf_decorator
label_desc: Use image node_id 1 for calling the FunctionSpecTest obj's underlying member method code with example usage: obj.test_required_only(input_signature, type_constraint, decorator) without return types