code: def test_gpu_stump_self_join_custom_isconstant(T_A, T_B):
      m = 3
      zone = int(np.ceil(m / 4))
      isconstant_custom_func = functools.partial(
          naive.isconstant_func_stddev_threshold,
          quantile_threshold=0.05,
      )
  
      # case 1: custom isconstant is a boolean array
      T_B_subseq_isconstant = naive.rolling_isconstant(
          T_B, m, isconstant_custom_func
      )
      for k in range(2, 4):
          ref_mp = naive.stump(
              T_A=T_B,
              m=m,
              exclusion_zone=zone,
              row_wise=True,
              k=k,
              T_A_subseq_isconstant=T_B_subseq_isconstant,
          )
          comp_mp = gpu_stump(
              T_A=T_B,
              m=m,
              ignore_trivial=True,
              k=k,
              T_A_subseq_isconstant=T_B_subseq_isconstant,
          )
          naive.replace_inf(ref_mp)
          naive.replace_inf(comp_mp)
          npt.assert_almost_equal(ref_mp, comp_mp)
  
      # case 2: custom isconstant is func
      for k in range(2, 4):
          ref_mp = naive.stump(
              T_A=T_B,
              m=m,
              exclusion_zone=zone,
              row_wise=True,
              k=k,
              T_A_subseq_isconstant=isconstant_custom_func,
          )
          comp_mp = gpu_stump(
              T_A=T_B,
              m=m,
              ignore_trivial=True,
              k=k,
              T_A_subseq_isconstant=isconstant_custom_func,
          )
          naive.replace_inf(ref_mp)
          naive.replace_inf(comp_mp)
          npt.assert_almost_equal(ref_mp, comp_mp)
  
imports: import functools
  from unittest.mock import patch
  import numpy
  import numpy.testing
  import pandas
  from numba import cuda
  from stumpy import config, gpu_stump
  import naive
  import pytest
label_desc: Use image node_id 17 for calling a global function with example usage: test_gpu_stump_self_join_custom_isconstant(T_A, T_B) without return types