code: def get_data(self, element, ranges, style):
      if not isinstance(element.data, (str, dict)):
          SkipRendering(
              "WMTS element data must be a URL string, dictionary, or "
              "xyzservices.TileProvider, bokeh cannot "
              "render %r" % element.data
          )
      if element.data is None:
          raise ValueError(
              "Tile source URL may not be None with the bokeh backend"
          )
      elif isinstance(element.data, dict):
          tile_source = WMTSTileSource
      elif "{Q}" in element.data:
          tile_source = QUADKEYTileSource
      elif all(
          kw in element.data
          for kw in ("{XMIN}", "{XMAX}", "{YMIN}", "{YMAX}")
      ):
          tile_source = BBoxTileSource
      elif all(kw in element.data for kw in ("{X}", "{Y}", "{Z}")):
          tile_source = WMTSTileSource
      else:
          raise ValueError(
              "Tile source URL format not recognized. "
              "Must contain {X}/{Y}/{Z}, {XMIN}/{XMAX}/{YMIN}/{YMAX} "
              "or {Q} template strings."
          )
      if isinstance(element.data, dict):
          params = {
              "url": element.data.build_url(scale_factor="@2x"),
              "min_zoom": element.data.get("min_zoom", 0),
              "max_zoom": element.data.get("max_zoom", 20),
              "attribution": element.data.html_attribution,
          }
      else:
          params = {"url": element.data}
          for zoom in ("min_zoom", "max_zoom"):
              if zoom in style:
                  params[zoom] = style[zoom]
          for key, attribution in _ATTRIBUTIONS.items():
              if all(k in element.data for k in key):
                  params["attribution"] = attribution
      return {}, {"tile_source": tile_source(**params)}, style
  
file_path: holoviews/holoviews/plotting/bokeh/tiles.py
imports: import numpy
  from bokeh.models import BBoxTileSource, QUADKEYTileSource, WMTSTileSource
  from ...core.options import SkipRendering
  from ...element.tiles import _ATTRIBUTIONS
  from .element import ElementPlot
label_desc: Use image node_id 2 for calling the TilePlot obj's underlying member method code with example usage: obj.get_data(element, ranges, style) and returns: dict,  dict,  style