code: def testSpanDrivenEvaluatorInputs_InvalidArguments_RaisesInvalidArgument(
      self,
  ):
      with self.assertRaises(exceptions.InvalidArgument):
          self._span_driven_evaluator(
              self.models, self.examples, wait_spans_before_eval=-1
          )
          self._span_driven_evaluator(
              self.models, self.examples, additional_spans_per_eval=-1
          )
          self._span_driven_evaluator(
              self.models, self.examples, start_span_number=-1
          )
  
      try:
          self._span_driven_evaluator(
              self.models, self.examples, evaluation_training_offset=-1
          )
      except exceptions.InvalidArgument:
          self.fail(
              "A evaluation_training_offset is a valid for "
              "SpanDrivenEvaluatorInputs and exceptions.InvalidArgument should not "
              "be raised."
          )
  
imports: from typing import List, Optional
  import tensorflow
  from tfx import types
  from tfx.dsl.input_resolution.ops import ops
  from tfx.dsl.input_resolution.ops import ops_utils
  from tfx.dsl.input_resolution.ops import test_utils
  from tfx.orchestration.portable.input_resolution import exceptions
label_desc: Use image node_id 4 for calling the SpanDrivenEvaluatorInputsOpTest obj's underlying member method code with example usage: obj.testSpanDrivenEvaluatorInputs_InvalidArguments_RaisesInvalidArgument() without return types