code: def test_tensor_creator_helpers(helper, ndims):
      if helper is row:
          default_shape = (1, None)
          custom_shape = (1, 5)
      elif helper is col:
          default_shape = (None, 1)
          custom_shape = (5, 1)
      else:
          default_shape = (None,) * ndims
          custom_shape = tuple(range(ndims))
  
      default = helper()
      assert default.type.dtype == config.floatX
      assert default.type.ndim == ndims
      assert default.type.shape == default_shape
      assert default.name is None
  
      assert helper(shape=default_shape).type == default.type
  
      custom = helper(name="custom", dtype="int64", shape=custom_shape)
      assert custom.type.dtype == "int64"
      assert custom.type.ndim == ndims
      assert custom.type.shape == custom_shape
      assert custom.name == "custom"
  
      with pytest.raises(TypeError, match="Shape must be a tuple"):
          helper(shape=list(default_shape))
  
      with pytest.raises(
          ValueError, match=f"Shape must be a tuple of length {ndims}"
      ):
          helper(shape=(None,) + default_shape)
  
      with pytest.raises(
          TypeError, match="Shape entries must be None or integer"
      ):
          helper(shape=(1.0,) * ndims)
  
imports: import os.path
  from tempfile import mkdtemp
  import numpy
  import pytest
  import pytensor.tensor
  from pytensor.configdefaults import config
  from pytensor.tensor.shape import SpecifyShape
  from pytensor.tensor.type import TensorType, col, matrix, row, scalar, tensor, tensor3, tensor4, tensor5, tensor6, tensor7, vector
label_desc: Use image node_id 23 for calling a global function with example usage: test_tensor_creator_helpers(helper, ndims) without return types