code: def test_depends_on_multiple_upstream_delayed_returns(
      sagemaker_session_mock,
  ):
      @step(name="step1", **STEP_SETTINGS)
      def func1():
          return 1
  
      @step(name="step2", **STEP_SETTINGS)
      def func2():
          return 2
  
      step_output1 = func1()
      step_output2 = func2()
      cond_gt = ConditionGreaterThan(left=step_output1, right=0)
      cond_lt = ConditionLessThan(left=step_output2, right=3)
  
      depend_step = CustomStep(name="MyStep3")
      cond_step = ConditionStep(
          name="MyConditionStep",
          depends_on=[depend_step],
          conditions=[cond_gt, cond_lt],
          if_steps=[IF_STEP],
          else_steps=[ELSE_STEP],
      )
  
      pipeline = Pipeline(
          name="MyPipeline",
          steps=[cond_step],
          sagemaker_session=sagemaker_session_mock,
      )
  
      step_dsl_list = json.loads(pipeline.definition())["Steps"]
      assert len(step_dsl_list) == 4
      for step_dsl in step_dsl_list:
          if step_dsl["Type"] == "Condition":
              # Both the user input depends_on and the upstream steps fetched from condition
              # are put into the DependsOn list
              assert set(step_dsl["DependsOn"]) == {
                  depend_step.name,
                  step_output1._step.name,
                  step_output2._step.name,
              }
              # Check JsonGet expr in Conditions
              assert len(step_dsl["Arguments"]["Conditions"]) == 2
              assert (
                  step_dsl["Arguments"]["Conditions"][0]["Type"]
                  == "GreaterThan"
              )
              assert (
                  step_dsl["Arguments"]["Conditions"][1]["Type"]
                  == "LessThan"
              )
              cond_gt_dsl = step_dsl["Arguments"]["Conditions"][0]
              cond_lt_dsl = step_dsl["Arguments"]["Conditions"][1]
              assert cond_gt_dsl[
                  "LeftValue"
              ] == _get_expected_jsonget_expr(
                  step_name=step_output1._step.name, path="Result"
              )
              assert cond_lt_dsl[
                  "LeftValue"
              ] == _get_expected_jsonget_expr(
                  step_name=step_output2._step.name, path="Result"
              )
          elif step_dsl["Name"] != depend_step.name:
              container_args = step_dsl["Arguments"][
                  "AlgorithmSpecification"
              ]["ContainerArguments"]
              assert SERIALIZE_OUTPUT_TO_JSON_FLAG in str(
                  container_args
              )
  
imports: from __future__ import absolute_import
  import json
  from sagemaker.remote_function.job import _JobSettings
  from sagemaker.workflow.conditions import ConditionEquals, ConditionGreaterThan, ConditionGreaterThanOrEqualTo, ConditionIn, ConditionLessThan, ConditionLessThanOrEqualTo, ConditionNot, ConditionOr
  from sagemaker.workflow.execution_variables import ExecutionVariables
  from sagemaker.workflow.function_step import step
  from sagemaker.workflow.parameters import ParameterInteger, ParameterString
  from sagemaker.workflow.condition_step import ConditionStep
  from sagemaker.workflow.pipeline import Pipeline, PipelineGraph
  from tests.unit.sagemaker.workflow.helpers import CustomStep, ordered
label_desc: Use image node_id 7 for calling a global function with example usage: test_depends_on_multiple_upstream_delayed_returns(sagemaker_session_mock) and returns: int, int