code: def test_debugprint_id_type():
      a_at = dvector()
      b_at = dmatrix()
  
      d_at = b_at.dot(a_at)
      e_at = d_at + a_at
  
      s = StringIO()
      debugprint(e_at, id_type="auto", file=s)
      s = s.getvalue()
  
      exp_res = f"""Add [id {e_at.auto_name}]
   ├─ dot [id {d_at.auto_name}]
   │  ├─ <Matrix(float64, shape=(?, ?))> [id {b_at.auto_name}]
   │  └─ <Vector(float64, shape=(?,))> [id {a_at.auto_name}]
   └─ <Vector(float64, shape=(?,))> [id {a_at.auto_name}]
      """
  
      assert [l.strip() for l in s.split("\n")] == [
          l.strip() for l in exp_res.split("\n")
      ]
  
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 7 for calling a global function with example usage: test_debugprint_id_type() without return types