code: def visit_html(visitor, node):
      visitor.body.append(
          '<div class="container-fluid"><div class="row">'
      )
      group = getattr(bp, node["group"], None)
      if not isinstance(group, dict):
          group_name = node["group"]
          raise SphinxError(f"invalid palette group name {group_name}")
      names = sorted(group)
      for name in names:
          palettes = group[name]
          # arbitrary cutoff here, idea is to not show large (e.g 256 length) palettes
          numbers = [x for x in sorted(palettes) if x < 30]
          html = PALETTE_GROUP_DETAIL.render(
              name=name, numbers=numbers, palettes=palettes
          )
          visitor.body.append(html)
      visitor.body.append("</div></div>")
      raise nodes.SkipNode
  
file_path: bokeh/src/bokeh/sphinxext/bokeh_palette_group.py
imports: from __future__ import annotations
  import logging
  from docutils import nodes
  from docutils.parsers.rst import Directive
  from sphinx.errors import SphinxError
  import bokeh.palettes
  from .None import PARALLEL_SAFE
  from .templates import PALETTE_GROUP_DETAIL
label_desc: Use image node_id 1 for calling the bokeh_palette_group obj's underlying member method code with example usage: obj.visit_html(visitor, node) without return types