code: def test_PolyAnnotation() -> None:
      poly = PolyAnnotation()
      assert poly.xs == []
      assert poly.xs_units == "data"
      assert poly.ys == []
      assert poly.ys_units == "data"
      assert poly.x_range_name == "default"
      assert poly.y_range_name == "default"
      assert poly.level == "annotation"
      assert poly.editable is False
      check_line_properties(poly, "", "#cccccc", 1, 0.3)
      check_fill_properties(poly, "", "#fff9ba", 0.4)
      check_hatch_properties(poly)
      check_line_properties(poly, "hover_", None, 1, 0.3)
      check_fill_properties(poly, "hover_", None, 0.4)
      check_hatch_properties(poly, "hover_")
      check_properties_existence(
          poly,
          [
              *ANNOTATION,
              "xs",
              "xs_units",
              "ys",
              "ys_units",
              "editable",
          ],
          LINE,
          FILL,
          HATCH,
          HOVER_LINE,
          HOVER_FILL,
          HOVER_HATCH,
      )
  
imports: from __future__ import annotations
  import pytest
  from datetime import datetime
  from unittest import mock
  from bokeh.core.properties import field, value
  from bokeh.core.validation import check_integrity, process_validation_issues
  from bokeh.models import Arrow, ArrowHead, Band, BoxAnnotation, ColorBar, ColumnDataSource, GlyphRenderer, Label, LabelSet, Legend, LegendItem, LinearColorMapper, Node, PolyAnnotation, Slope, Span, Title, Whisker
  from bokeh.util.serialization import convert_datetime_type
  from _util_models import ABOVE_FILL, ABOVE_HATCH, ANGLE, BELOW_FILL, BELOW_HATCH, FILL, HATCH, HOVER_FILL, HOVER_HATCH, HOVER_LINE, LINE, TEXT, check_fill_properties, check_hatch_properties, check_line_properties, check_properties_existence, check_text_properties, prefix
label_desc: Use image node_id 11 for calling a global function with example usage: test_PolyAnnotation() without return types