def write_changelog()

in tools/changelog.py [0:0]


def write_changelog(releases, links, rel_changes, release_as, release_to,
                    release_from, filename='CHANGELOG.md'):
  'Inject the pull request data and write changelog to file.'
  rel_buffer, link_buffer = [], []
  release_to = _strip_relname(release_to)
  sorted_releases = sorted(releases.values(), reverse=True,
                           key=lambda r: r.published)
  if release_as:
    # inject an empty 'Unreleased' block as the current one will be replaced
    rel_buffer.append('## Unreleased\n')
    rel_link = CHANGE_URL.format(name='Unreleased', release_from=release_as,
                                 release_to='HEAD')
    link_buffer.append(rel_link)
  for rel in sorted_releases:
    rel_link = links.get(rel.name)
    if rel_link is None:
      raise Error(f"no link found for {rel.name}")
    if rel.name == release_to:
      rel_buffer.append(rel_changes)
      if release_as:
        rel_link = CHANGE_URL.format(name=release_as, release_from=release_from,
                                     release_to=release_as)
    else:
      rel_buffer.append('\n'.join(rel.content))
    link_buffer.append(rel_link)
  open(filename, 'w').write(
      '\n'.join([HEADING] + rel_buffer +
                ['<!-- markdown-link-check-disable -->'] + link_buffer))