docs: def _write(self, context, report_dir, report_name, assets_dir=None,
                 template=None):
          """Writes the data in `context` in the report's template to
          `report_name` in `report_dir`.
  
          If `assets_dir` is supplied, copies all assets for this report
          to the specified directory.
  
          If `template` is supplied, uses that template instead of
          automatically finding it. This is useful if a single report
          generates multiple files using the same template.
  
          :param context: context data to render within the template
          :type context: `dict`
          :param report_dir: directory to write the report to
          :type report_dir: `str`
          :param report_name: name of file to write the report to
          :type report_name: `str`
          :param assets_dir: optional directory to output report assets to
          :type assets_dir: `str`
          :param template: template to render and output
          :type template: `jinja2.Template`
  
          """
          if template is None:
              template = self._get_template()
          report = template.render(context)
          output_file = os.path.join(report_dir, report_name)
          with open(output_file, 'w', encoding='utf-8') as fh:
              fh.write(report)
          if assets_dir:
              self._copy_static_assets(assets_dir)