def load_changelog()

in tools/changelog.py [0:0]


def load_changelog(filename):
  'Return structured data from changelog file.'
  releases = {}
  links = None
  name = None
  try:
    with open(filename) as f:
      for l in f.readlines():
        l = l.strip()
        if l.startswith(LINK_MARKER):
          links = {}
          continue
        if l.startswith('## '):
          if l[4:].startswith('Unreleased'):
            name, date = 'Unreleased', ''
          else:
            name, _, date = l[3:].partition(' - ')
            name = _strip_relname(name)
          if not date.strip():
            date = datetime.date.today()
          else:
            date = datetime.datetime.strptime(date.split()[0],
                                              '%Y-%m-%d').date()
          releases[name] = FileRelease(name, date, [l])
        elif name and links is None:
          releases[name].content.append(l)
        elif l.startswith('['):
          name, _, _ = l.partition(':')
          links[_strip_relname(name)] = l
  except (IOError, OSError) as e:
    raise Error(f'Cannot open {filename}: {e.args[0]}')
  return releases, links