code: def _dtype_input_idx_axis(draw):
      dtype_x_axis_shape = draw(
          helpers.dtype_values_axis(
              available_dtypes=helpers.get_dtypes("valid"),
              force_int_axis=True,
              ret_shape=True,
              valid_axis=True,
              min_num_dims=2,
          )
      )
  
      input_dtype, x, axis, shape = dtype_x_axis_shape
      max_idx = 0
      if shape:
          max_idx = shape[axis] - 1
      idx = draw(helpers.ints(min_value=0, max_value=max_idx))
      x = x[0]
  
      return input_dtype, x, idx, axis
  
imports: import random
  from hypothesis import strategies
  import math
  import ivy
  import ivy_tests.test_ivy.helpers
  import ivy_tests.test_ivy.helpers.globals
  from ivy_tests.test_ivy.helpers import handle_frontend_test
  from ivy_tests.test_ivy.test_functional.test_core.test_manipulation import _get_splits
  from ivy_tests.test_ivy.helpers.hypothesis_helpers.general_helpers import two_broadcastable_shapes
label_desc: Use image node_id 8 for calling a global function with example usage: _dtype_input_idx_axis(draw) and returns: input_dtype,  x,  idx,  axis