class_docstr: This custom Renderer is heavily based on the `MarkdownRenderer`,
  it just prepends a front matter so that the output can be published
  directly to readme.io.
class_docstr_tok: ["This","custom","Renderer","is","heavily","based","on","the","`","MarkdownRenderer","`",",","it","just","prepends","a","front","matter","so","that","the","output","can","be","published","directly","to","readme.io","."]
code: def render(self, modules: t.List[docspec.Module]) -> None:
      if self.markdown.filename is None:
          sys.stdout.write(self._frontmatter())
          self.markdown.render_single_page(sys.stdout, modules)
      else:
          with io.open(
              self.markdown.filename,
              "w",
              encoding=self.markdown.encoding,
          ) as fp:
              fp.write(self._frontmatter())
              self.markdown.render_single_page(
                  t.cast(t.TextIO, fp), modules
              )
  
imports: import os
  import sys
  import io
  import dataclasses
  import typing
  import base64
  import warnings
  from pathlib import Path
  import requests
  import docspec
  from pydoc_markdown.interfaces import Context, Renderer
  from pydoc_markdown.contrib.renderers.markdown import MarkdownRenderer
label_desc: Use image node_id 5 for calling the ReadmeRenderer obj's underlying member method code with example usage: obj.render(modules) without return types