code: def array_strategy(draw):
      X_m = draw(st.integers(1, 20))
      X_n = draw(st.integers(1, 10))
      dtype = draw(st.sampled_from([np.float64, np.float32]))
      X = draw(
          arrays(
              dtype=dtype,
              shape=(X_m, X_n),
              elements=st.floats(0, 5, width=32),
          )
      )
      if draw(st.booleans()):
          Y_m = draw(st.integers(1, 20))
          Y = draw(
              arrays(
                  dtype=dtype,
                  shape=(Y_m, X_n),
                  elements=st.floats(0, 5, width=32),
              )
          )
      else:
          Y = None
      type = draw(st.sampled_from(["numpy", "cupy", "cudf", "pandas"]))
  
      if type == "cudf":
          assume(X_m > 1)
          if Y is not None:
              assume(Y_m > 1)
      return as_type(type, X, Y)
  
imports: from cuml.testing.utils import as_type
  from hypothesis.extra.numpy import arrays
  from hypothesis import given, settings, assume, strategies
  from sklearn.kernel_ridge import KernelRidge
  import inspect
  import math
  import pytest
  from sklearn.metrics.pairwise import pairwise_kernels
  from cuml.metrics import pairwise_kernels, PAIRWISE_KERNEL_FUNCTIONS
  from cuml import KernelRidge
  from cuml.internals.safe_imports import cpu_only_import
  from cuml.internals.safe_imports import gpu_only_import_from
  from cuml.internals.safe_imports import gpu_only_import
label_desc: Use image node_id 5 for calling a global function with example usage: array_strategy(draw) and returns: as_type