code: def test_multi_output_node(self):
      x = pt.scalar("x")
      node = op_multiple_outputs.make_node(x)
      y1, y2 = node.outputs
      out = pt.add(y1, y2)
  
      new_x = pt.vector("new_x")
      new_y1 = pt.vector("new_y1")
      new_y2 = pt.vector("new_y2")
  
      # Cases where either x or both of y1 and y2 are given replacements
      new_out = vectorize_graph(out, {x: new_x})
      expected_new_out = pt.add(*vectorize_node(node, new_x).outputs)
      assert equal_computations([new_out], [expected_new_out])
  
      new_out = vectorize_graph(out, {y1: new_y1, y2: new_y2})
      expected_new_out = pt.add(new_y1, new_y2)
      assert equal_computations([new_out], [expected_new_out])
  
      new_out = vectorize_graph(out, {x: new_x, y1: new_y1, y2: new_y2})
      expected_new_out = pt.add(new_y1, new_y2)
      assert equal_computations([new_out], [expected_new_out])
  
      # Special case where x is given a replacement as well as only one of y1 and y2
      # The graph combines the replaced variable with the other vectorized output
      new_out = vectorize_graph(out, {x: new_x, y1: new_y1})
      expected_new_out = pt.add(
          new_y1, vectorize_node(node, new_x).outputs[1]
      )
      assert equal_computations([new_out], [expected_new_out])
  
imports: import numpy
  import pytest
  import scipy.special
  import pytensor.tensor
  from pytensor import config, function, shared
  from pytensor.graph.basic import equal_computations, graph_inputs
  from pytensor.graph.replace import clone_replace, graph_replace, vectorize_graph, vectorize_node
  from pytensor.tensor import dvector, fvector, vector
  from tests import unittest_tools
  from tests.graph.utils import MyOp, MyVariable, op_multiple_outputs
label_desc: Use image node_id 3 for calling the TestVectorizeGraph obj's underlying member method code with example usage: obj.test_multi_output_node() without return types