code: def testBuildGraphFn_CyclicNodes(self):
      input_graph = self.parse_input_graph(
          """
        nodes {
          key: "inc_1"
          value {
            op_node {
              op_type: "Inc"
              args {
                node_id: "inc_2"
              }
              kwargs {
                key: "offset"
              }
            }
            output_data_type: ARTIFACT_LIST
          }
        }
        nodes {
          key: "inc_2"
          value {
            op_node {
              op_type: "Inc"
              args {
                node_id: "inc_1"
              }
              kwargs {
                key: "offset"
              }
            }
            output_data_type: ARTIFACT_LIST
          }
        }
        result_node: "inc_2"
      """
      )
  
      with self.assertRaisesRegex(
          exceptions.FailedPreconditionError, "InputGraph has a cycle"
      ):
          input_graph_resolver.build_graph_fn(
              self._mlmd_handle, input_graph
          )
  
imports: from unittest import mock
  from absl.testing import parameterized
  import tensorflow
  from tfx.dsl.components.common import resolver
  from tfx.dsl.input_resolution import resolver_op
  from tfx.dsl.input_resolution.ops import ops
  from tfx.orchestration.portable.input_resolution import exceptions
  from tfx.orchestration.portable.input_resolution import input_graph_resolver
  from tfx.proto.orchestration import pipeline_pb2
  from tfx.types import standard_artifacts
  from google.protobuf import text_format
label_desc: Use image node_id 8 for calling the InputGraphResolverTest obj's underlying member method code with example usage: obj.testBuildGraphFn_CyclicNodes() without return types