code: def test_get_var_by_id():
      r1, r2 = MyVariable("v1"), MyVariable("v2")
      o1 = MyOp("op1")(r1, r2)
      o1.name = "o1"
  
      igo_in_1 = MyVariable("v4")
      igo_in_2 = MyVariable("v5")
      igo_out_1 = MyOp("op2")(igo_in_1, igo_in_2)
      igo_out_1.name = "igo1"
  
      igo = MyInnerGraphOp([igo_in_1, igo_in_2], [igo_out_1])
  
      r3 = MyVariable("v3")
      o2 = igo(r3, o1)
  
      res = get_node_by_id(o1, "blah")
  
      assert res is None
  
      res = get_node_by_id([o1, o2], "C")
  
      assert res == r2
  
      res = get_node_by_id([o1, o2], "F")
  
      exp_res = igo.fgraph.outputs[0].owner
      assert res == exp_res
  
imports: import logging
  from io import StringIO
  from textwrap import dedent
  import numpy
  import pytest
  import pytensor
  from pytensor.compile.mode import get_mode
  from pytensor.compile.ops import deep_copy_op
  from pytensor.printing import PatternPrinter, PPrinter, Print, debugprint, default_printer, get_node_by_id, min_informative_str, pp, pydot_imported, pydotprint
  from pytensor.tensor import as_tensor_variable
  from pytensor.tensor.type import dmatrix, dvector, matrix
  from tests.graph.utils import MyInnerGraphOp, MyOp, MyVariable
label_desc: Use image node_id 10 for calling a global function with example usage: test_get_var_by_id() without return types