code: def _get_type_and_shape_params():
      rng = np.random.default_rng(1902)
      for device in ["cpu", "gpu"] if is_gds_supported() else ["cpu"]:
          for fortran_order in [False, True, None]:
              for dtype in all_numpy_types - unsupported_numpy_types:
                  for ndim in [0, 1, 2, rng.choice([3, 4])]:
                      if ndim <= 1 and fortran_order is not False:
                          continue
                      shapes = test_shapes[ndim]
                      file_arg_type = rng.choice(
                          ["file_list", "files", "file_filter"]
                      )
                      num_threads = rng.choice([1, 2, 3, 4, 5, 6, 7, 8])
                      batch_size = rng.choice([1, 3, 4, 8, 16])
                      yield (
                          device,
                          fortran_order,
                          dtype,
                          shapes,
                          file_arg_type,
                          num_threads,
                          batch_size,
                      )
  
imports: from nvidia.dali import Pipeline, pipeline_def
  import nvidia.dali.fn
  import nvidia.dali.types
  import nvidia.dali.backend
  import numpy
  from numpy.testing import assert_array_equal
  import os
  import platform
  import random
  import tempfile
  from nose_utils import assert_raises
  from nose import SkipTest
  from nose2.tools import params, cartesian_params
  from test_utils import compare_pipelines, to_array
label_desc: Use image node_id 6 for calling a global function with example usage: _get_type_and_shape_params() without return types