code: def create_html(self, fname, title="ClassTracker Statistics"):
          
          # Create a folder to store the charts and additional HTML files.
          self.basedir = os.path.dirname(os.path.abspath(fname))
          self.filesdir = os.path.splitext(fname)[0] + '_files'
          if not os.path.isdir(self.filesdir):
              os.mkdir(self.filesdir)
          self.filesdir = os.path.abspath(self.filesdir)
          self.links = {}
  
          # Annotate all snapshots in advance
          self.annotate()
  
          # Create charts. The tags to show the images are returned and stored in
          # the self.charts dictionary. This allows to return alternative text if
          # the chart creation framework is not available.
          self.charts = {}
          fn = os.path.join(self.filesdir, 'timespace.png')
          self.charts['snapshots'] = self.create_snapshot_chart(fn)
  
          for fp, idx in zip(self.snapshots, list(range(len(self.snapshots)))):
              fn = os.path.join(self.filesdir, 'fp%d.png' % (idx))
              self.charts[fp] = self.create_pie_chart(fp, fn)
  
          for cn in list(self.index.keys()):
              fn = os.path.join(self.filesdir, cn.replace('.', '_')+'-lt.png')
              self.charts[cn] = self.create_lifetime_chart(cn, fn)
  
          # Create HTML pages first for each class and then the index page.
          for cn in list(self.index.keys()):
              fn = os.path.join(self.filesdir, cn.replace('.', '_')+'.html')
              self.links[cn]  = fn
              self.print_class_details(fn, cn)
  
          self.create_title_page(fname, title=title)
docs: Create HTML page `fname` and additional files in a directory derived
          from `fname`.