code: def test_multi_polygon_hole_plot(self):
      xs = [1, 2, 3, np.nan, 3, 7, 6]
      ys = [2, 0, 7, np.nan, 2, 5, 7]
      holes = [
          [
              [(1.5, 2), (2, 3), (1.6, 1.6)],
              [(2.1, 4.5), (2.5, 5), (2.3, 3.5)],
          ],
          [],
      ]
      poly = Polygons(
          [{"x": xs, "y": ys, "holes": holes, "value": 1}],
          vdims=["value"],
      )
      plot = mpl_renderer.get_plot(poly)
      artist = plot.handles["artist"]
      self.assertEqual(np.asarray(artist.get_array()), np.array([1, 1]))
      paths = artist.get_paths()
      self.assertEqual(len(paths), 2)
      path = paths[0]
      self.assertEqual(
          path.vertices,
          np.array(
              [
                  (1, 2),
                  (2, 0),
                  (3, 7),
                  (1, 2),
                  (1.5, 2),
                  (2, 3),
                  (1.6, 1.6),
                  (1.5, 2),
                  (2.1, 4.5),
                  (2.5, 5),
                  (2.3, 3.5),
                  (2.1, 4.5),
              ]
          ),
      )
      self.assertEqual(
          path.codes, np.array([1, 2, 2, 79, 1, 2, 2, 79, 1, 2, 2, 79])
      )
      path2 = paths[1]
      self.assertEqual(
          path2.vertices, np.array([(3, 2), (7, 5), (6, 7), (3, 2)])
      )
      self.assertEqual(path2.codes, np.array([1, 2, 2, 79]))
  
imports: import numpy
  import pytest
  from holoviews.core import NdOverlay
  from holoviews.core.options import AbbreviatedException
  from holoviews.core.spaces import HoloMap
  from holoviews.element import Contours, Path, Polygons
  from .test_plot import TestMPLPlot, mpl_renderer
label_desc: Use image node_id 3 for calling the TestPolygonPlot obj's underlying member method code with example usage: obj.test_multi_polygon_hole_plot() without return types