code: def test_vectorize_blockwise():
      mat = tensor(shape=(None, None))
      tns = tensor(shape=(None, None, None))
  
      # Something that falls back to Blockwise
      node = MatrixInverse()(mat).owner
      vect_node = vectorize_node(node, tns)
      assert isinstance(vect_node.op, Blockwise) and isinstance(
          vect_node.op.core_op, MatrixInverse
      )
      assert vect_node.op.signature == ("(m,m)->(m,m)")
      assert vect_node.inputs[0] is tns
  
      # Useless blockwise
      tns4 = tensor(shape=(5, None, None, None))
      new_vect_node = vectorize_node(vect_node, tns4)
      assert new_vect_node.op is vect_node.op
      assert isinstance(new_vect_node.op, Blockwise) and isinstance(
          new_vect_node.op.core_op, MatrixInverse
      )
      assert new_vect_node.inputs[0] is tns4
  
imports: import re
  from itertools import product
  from typing import Optional, Union
  import numpy
  import pytest
  import pytensor
  from pytensor import config, function
  from pytensor.compile import get_mode
  from pytensor.gradient import grad
  from pytensor.graph import Apply, Op
  from pytensor.graph.replace import vectorize_node
  from pytensor.raise_op import assert_op
  from pytensor.tensor import diagonal, log, tensor
  from pytensor.tensor.blockwise import Blockwise, vectorize_node_fallback
  from pytensor.tensor.nlinalg import MatrixInverse
  from pytensor.tensor.rewriting.blas import specialize_matmul_to_batched_dot
  from pytensor.tensor.slinalg import Cholesky, Solve, cholesky, solve_triangular
  from pytensor.tensor.utils import _parse_gufunc_signature
label_desc: Use image node_id 1 for calling a global function with example usage: test_vectorize_blockwise() without return types