code: def testCompileInputsForInvalidDynamicProperty(self):
      producer = DummyNode("Producer")
      consumer = DummyNode(
          "Consumer",
          exec_properties={
              "x": (
                  producer.output("x", standard_artifacts.Examples)
                  .future()
                  .value
              )
          },
      )
  
      with self.assertRaisesRegex(
          ValueError,
          ".*must be of a value artifact type.*Examples.*x.*Consumer",
      ):
          self._compile_node_inputs(
              consumer, components=[producer, consumer]
          )
  
imports: from typing import List, Type
  from absl.testing import parameterized
  import tensorflow
  from tfx import types
  from tfx.dsl.compiler import compiler_context
  from tfx.dsl.compiler import node_inputs_compiler
  from tfx.dsl.components.base import base_component
  from tfx.dsl.components.base import base_node
  from tfx.dsl.components.base import executor_spec
  from tfx.dsl.control_flow import for_each
  from tfx.dsl.experimental.conditionals import conditional
  from tfx.dsl.experimental.node_execution_options import utils
  from tfx.dsl.input_resolution import resolver_function
  from tfx.dsl.input_resolution import resolver_op
  from tfx.dsl.placeholder import placeholder
  from tfx.orchestration import pipeline
  from tfx.proto.orchestration import pipeline_pb2
  from tfx.types import channel
  from tfx.types import channel_utils
  from tfx.types import component_spec
  from tfx.types import standard_artifacts
  from google.protobuf import text_format
label_desc: Use image node_id 15 for calling the NodeInputsCompilerTest obj's underlying member method code with example usage: obj.testCompileInputsForInvalidDynamicProperty() without return types