code: def test_allpairs_with_holes():
      lhs = cuspatial.GeoSeries(
          [
              MultiPolygon(
                  [
                      # Point is in part 0, but not in part 1
                      Polygon([[0, 0], [1, 1], [1, 0], [0, 0]]),
                      Polygon(
                          ([0, 0], [1, 1], [1, 0], [0, 0]),
                          [([0, 0], [1, 1], [1, 0], [0, 0])],
                      ),
                  ]
              ),
              MultiPolygon(
                  [
                      # Point is in part 2 and 3
                      Polygon([[0, 0], [1, 1], [1, 0], [0, 0]]),
                      Polygon([[0, 0], [1, 1], [1, 0], [0, 0]]),
                  ]
              ),
              Polygon(
                  # Point is not in part 4 because of the hole
                  ([0, 0], [1, 1], [1, 0], [0, 0]),
                  [([0, 0], [1, 1], [1, 0], [0, 0])],
              ),
              # Point is in part 5
              Polygon([[0, 0], [1, 1], [1, 0], [0, 0]]),
          ]
      )
      rhs = cuspatial.GeoSeries(
          [
              Point(0.5, 0.25),
          ]
      )
      got = lhs.contains_properly(rhs, allpairs=True).sort_values(
          "polygon_index"
      )
      assert (got["polygon_index"].values_host == [0, 1, 3]).all()
  
imports: import cupy
  import geopandas
  import numpy
  import pytest
  from shapely.geometry import LineString, MultiPolygon, Point, Polygon
  import cuspatial
label_desc: Use image node_id 20 for calling a global function with example usage: test_allpairs_with_holes() without return types