class_docstr: Base class to test Blockwise works for specific Ops
class_docstr_tok: ["Base","class","to","test","Blockwise","works","for","specific","Ops"]
code: def create_batched_inputs(self, batch_idx: Optional[int] = None):
      for batch_shapes in self.test_batch_shapes:
          vec_inputs = []
          vec_inputs_testvals = []
          for idx, (batch_shape, param_sig) in enumerate(
              zip(batch_shapes, self.params_sig)
          ):
              if batch_idx is not None and idx != batch_idx:
                  # Skip out combinations in which other inputs are batched
                  if batch_shape != ():
                      break
              vec_inputs.append(
                  tensor(shape=batch_shape + (None,) * len(param_sig))
              )
              vec_inputs_testvals.append(
                  self.create_testvals(shape=batch_shape + param_sig)
              )
          else:  # no-break
              yield vec_inputs, vec_inputs_testvals
  
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 4 for calling the BlockwiseOpTester obj's underlying member method code with example usage: obj.create_batched_inputs(batch_idx) without return types