code: def _random_cp_data(draw):
      shape = draw(
          st.lists(
              helpers.ints(min_value=1, max_value=5),
              min_size=2,
              max_size=4,
          )
      )
      rank = draw(helpers.ints(min_value=1, max_value=10))
      dtype = draw(helpers.get_dtypes("float", full=False))
      full = draw(st.booleans())
      orthogonal = draw(st.booleans())
      if (rank > min(shape)) and orthogonal:
          rank = min(shape)
      seed = draw(
          st.one_of(
              (st.just(None), helpers.ints(min_value=0, max_value=2000))
          )
      )
      normalise_factors = draw(st.booleans())
      return (
          shape,
          rank,
          dtype[0],
          full,
          orthogonal,
          seed,
          normalise_factors,
      )
  
imports: import pytest
  from hypothesis import strategies
  import numpy
  import ivy
  import ivy_tests.test_ivy.helpers
  from ivy_tests.test_ivy.helpers import handle_test
label_desc: Use image node_id 1 for calling a global function with example usage: _random_cp_data(draw) and returns: shape,  rank,  dtype,  full,  orthogonal,  seed,  normalise_factors