class_docstr: Given a list of classes, determines the set of classes that they inherit
  from all the way to the root "object", and then is able to generate a
  graphviz dot graph from them.
docstr: *class_names* is a list of child classes to show bases from.
  
  If *show_builtins* is True, then Python builtins will be shown
  in the graph.
code: def __init__(
      self,
      class_names: list[str],
      currmodule: str,
      show_builtins: bool = False,
      private_bases: bool = False,
      parts: int = 0,
      aliases: dict[str, str] | None = None,
      top_classes: Sequence[Any] = (),
  ) -> None:
      """*class_names* is a list of child classes to show bases from.
  
      If *show_builtins* is True, then Python builtins will be shown
      in the graph.
      """
      self.class_names = class_names
      classes = self._import_classes(class_names, currmodule)
      self.class_info = self._class_info(
          classes,
          show_builtins,
          private_bases,
          parts,
          aliases,
          top_classes,
      )
      if not self.class_info:
          msg = "No classes found for inheritance diagram"
          raise InheritanceException(msg)
  
imports: from __future__ import annotations
  import builtins
  import hashlib
  import inspect
  import re
  from collections.abc import Iterable, Sequence
  from importlib import import_module
  from os import path
  from typing import TYPE_CHECKING, Any, cast
  from docutils import nodes
  from docutils.parsers.rst import directives
  import sphinx
  from sphinx import addnodes
  from sphinx.ext.graphviz import figure_wrapper, graphviz, render_dot_html, render_dot_latex, render_dot_texinfo
  from sphinx.util.docutils import SphinxDirective
label_desc: Use image node_id 1 to create a new InheritanceGraph object  with example: obj = InheritanceGraph(class_names, currmodule, show_builtins, private_bases, parts, aliases, top_classes)