code: def _generate_solve_triangular_args(draw):
      shape = draw(
          st.lists(
              st.integers(min_value=1, max_value=3),
              min_size=2,
              max_size=5,
          )
      )
      shape_b = list(shape)
      shape_a = list(shape)
      shape_a[-1] = shape_a[-2]  # Make square
  
      dtype_a, a = draw(
          helpers.dtype_and_values(
              shape=shape_a,
              available_dtypes=helpers.get_dtypes("float"),
              min_value=-10,
              max_value=10,
          )
      )
  
      dtype_b, b = draw(
          helpers.dtype_and_values(
              shape=shape_b,
              available_dtypes=helpers.get_dtypes("float"),
              min_value=-10,
              max_value=10,
          )
      )
  
      dtype_a = dtype_a[0]
      dtype_b = dtype_b[0]
      a = a[0]
      b = b[0]
      upper = draw(st.booleans())
      adjoint = draw(st.booleans())
      unit_diagonal = draw(st.booleans())
  
      for i in range(shape_a[-2]):
          a[
              ivy.abs(a[..., i, i]) < 0.01, i, i
          ] = 0.01  # Make diagonals non-zero
  
      return upper, adjoint, unit_diagonal, [dtype_a, dtype_b], [a, b]
  
imports: import math
  from hypothesis import strategies
  from hypothesis import assume
  import numpy
  import pytest
  import itertools
  import ivy_tests.test_ivy.helpers
  from ivy_tests.test_ivy.helpers import handle_test, BackendHandler
  import ivy
label_desc: Use image node_id 7 for calling a global function with example usage: _generate_solve_triangular_args(draw) and returns: upper,  adjoint,  unit_diagonal,  list,  list