code: def test_lifting_is_tangent(self, n_points, atol):
      while True:
          point = self.data_generator.random_point(n_points)
          base_point = self.data_generator.random_point(n_points)
          try:
              tangent_vec = self.space.metric.lifting(point, base_point)
              break
          except ValueError:
              # algorithm does not work for several cases
              pass
  
      res = self.space.is_tangent(tangent_vec, base_point, atol=atol)
      self.assertAllEqual(res, gs.ones(n_points, dtype=bool))
  
imports: import pytest
  import geomstats.backend
  from geomstats.geometry.grassmannian import Grassmannian
  from geomstats.test.test_case import TestCase
  from geomstats.test.vectorization import generate_vectorization_data
  from geomstats.test_cases.geometry.base import LevelSetTestCase
  from geomstats.test_cases.geometry.riemannian_metric import RiemannianMetricTestCase
label_desc: Use image node_id 4 for calling the StiefelCanonicalMetricTestCase obj's underlying member method code with example usage: obj.test_lifting_is_tangent(n_points, atol) without return types