code: def test_pipeline_graph_with_mixed_step_type_cyclic(
      sagemaker_session_mock, job_config
  ):
      step_a = CustomStep(name="stepA")
      step_b = step(
          lambda x, y: x + y,
          name="stepB",
          image_uri="image",
          instance_type="ml.m4.xlarge",
      )(1, 2)
      step_a.add_depends_on(["stepB"])
      get_step(step_b).add_depends_on([step_a])
  
      # case 1: user follows the new function step usage to provide the end step, i.e. step_b
      pipeline1 = Pipeline(
          name="MyPipeline1",
          steps=[step_b],
          sagemaker_session=sagemaker_session_mock,
      )
  
      with pytest.raises(ValueError) as error:
          PipelineGraph.from_pipeline(pipeline1)
      assert "Cycle detected in pipeline step graph." in str(
          error.value
      )
  
imports: from __future__ import absolute_import
  import pytest
  from sagemaker.remote_function.job import _JobSettings
  from sagemaker.workflow.function_step import step
  from sagemaker.workflow.step_outputs import get_step
  from sagemaker.workflow.pipeline import Pipeline, PipelineGraph
  from sagemaker.workflow.condition_step import ConditionStep
  from sagemaker.workflow.conditions import ConditionEquals, ConditionIn, ConditionNot, ConditionOr, ConditionGreaterThan
  from sagemaker.workflow.execution_variables import ExecutionVariables
  from sagemaker.workflow.parameters import ParameterInteger, ParameterString
  from sagemaker.workflow._steps_compiler import CompiledStep
  from tests.unit.sagemaker.workflow.helpers import ordered, CustomStep, CustomStepCollection
label_desc: Use image node_id 19 for calling a global function with example usage: test_pipeline_graph_with_mixed_step_type_cyclic(sagemaker_session_mock, job_config) without return types