class_docstr: Mixin to render Doc objects that have members
  
  i.e. modules and classes
docstr: Render all of class, function or attribute members
  
  Parameters
  ----------
  docables
      List of layout.Doc subclasses. One for each member.
  
  member_group
      An identifier for the type of the members.
docstr_tok: ["Render","all","of","class",",","function","or","attribute","members","Parameters","--","--","--","--","--","docables","List","of","layout.Doc","subclasses",".","One","for","each","member",".","member_group","An","identifier","for","the","type","of","the","members","."]
code: def _render_members_group(
      self,
      docables: Sequence[DocType],
      member_group: Literal[
          "classes", "methods", "functions", "attributes"
      ],
  ) -> Optional[RenderedMembersGroup]:
      """
      Render all of class, function or attribute members
  
      Parameters
      ----------
      docables
          List of layout.Doc subclasses. One for each member.
  
      member_group
          An identifier for the type of the members.
      """
      if not docables:
          return None
  
      from . import get_render_type
  
      _RenderType = get_render_type(docables[0])
  
      def _render_obj(obj: DocType):
          """
          Make a render object
          """
          r = _RenderType(obj, self.renderer, self.level + 2)
          r.path = ""  # Path is on the parent page
          return r
  
      mgroup = (
          "functions" if member_group == "methods" else member_group
      )
      show_summary: bool = getattr(self, f"show_{mgroup}_summary")
      show_body: bool = getattr(self, f"show_{mgroup}_body")
      render_objs = [_render_obj(obj) for obj in docables]
  
      title = Header(
          self.level + 1,
          member_group.title(),
          Attr(classes=[f"doc-{member_group}"]),
      )
  
      if self.show_members_summary and show_summary:
          rows = [
              row for r in render_objs for row in r.render_summary()
          ]
          summary = tabulate(rows, ("Name", "Description"), "grid")
      else:
          summary = None
  
      body = Blocks(render_objs) if show_body else None
      return RenderedMembersGroup(title, summary, body)
  
imports: from __future__ import annotations
  from dataclasses import dataclass
  from typing import TYPE_CHECKING, cast
  from griffe import dataclasses
  from quartodoc import layout
  from quartodoc.pandoc.blocks import Block, Blocks, Header
  from quartodoc.pandoc.components import Attr
  from tabulate import tabulate
  from ..utils import isDoc, no_init
  from .doc import RenderDoc
label_desc: Use image node_id 7 for calling the __RenderDocMembersMixin obj's underlying member method code with example usage: obj._render_members_group(docables, member_group) and returns: RenderedMembersGroup, None, r