code: def test_scale_invariance_2d(self, kernel):
      # Verify that the functions in _SCALE_INVARIANT are insensitive to the
      # shape parameter (when smoothing == 0) in 2d.
      seq = Halton(2, scramble=False, seed=np.random.RandomState())
      x = seq.random(100)
      y = _2d_test_function(x)
      xitp = seq.random(100)
      yitp1 = self.build(x, y, epsilon=1.0, kernel=kernel)(xitp)
      yitp2 = self.build(x, y, epsilon=2.0, kernel=kernel)(xitp)
      assert_allclose(yitp1, yitp2, atol=1e-8)
  
imports: import pickle
  import pytest
  import numpy
  from numpy.linalg import LinAlgError
  from numpy.testing import assert_allclose, assert_array_equal
  from scipy.stats.qmc import Halton
  from scipy.spatial import cKDTree
  from scipy.interpolate._rbfinterp import _AVAILABLE, _SCALE_INVARIANT, _NAME_TO_MIN_DEGREE, _monomial_powers, RBFInterpolator
  from scipy.interpolate import _rbfinterp_pythran
label_desc: Use image node_id 2 for calling the _TestRBFInterpolator obj's underlying member method code with example usage: obj.test_scale_invariance_2d(kernel) without return types