docs: def make_report(self):
          """ Makes a html report and saves it into the same folder where logs are stored.
          """
          if self.execution_stats is None:
              raise RuntimeError('Cannot produce a report without running the executor first, check EOExecutor.run '
                                 'method')
  
          if os.environ.get('DISPLAY', '') == '':
              LOGGER.info('No display found, using non-interactive Agg backend')
              plt.switch_backend('Agg')
  
          dependency_graph = self._create_dependency_graph()
          task_descriptions = self._get_task_descriptions()
  
          formatter = HtmlFormatter(linenos=True)
          task_source = self._render_task_source(formatter)
          execution_stats = self._render_execution_errors(formatter)
  
          template = self._get_template()
  
          html = template.render(dependency_graph=dependency_graph,
                                 task_descriptions=task_descriptions,
                                 task_source=task_source,
                                 execution_stats=execution_stats,
                                 execution_logs=self.execution_logs,
                                 code_css=formatter.get_style_defs())
  
          if not os.path.isdir(self.report_folder):
              os.mkdir(self.report_folder)
  
          with open(self.get_report_filename(), 'w') as fout:
              fout.write(html)