def format_release()

in tools/changelog.py [0:0]


def format_release(pull_groups, upgrade_notes, release_as, release_to,
                   release_from, date_to, date_from):
  'Format release changelog heading and text.'
  pull_url = f'https://github.com/{ORG}/{REPO}/pull'
  if release_as:
    # if we're releasing date to is today
    date_to = datetime.date.today()
  comment = f'<!-- from: {date_from} to: {date_to} since: {release_from} -->'
  if release_to is None and not release_as:
    buffer = [f'## [{release_as or "Unreleased"}] {comment}']
  else:
    buffer = [(f'## [{_strip_relname(release_to or release_as)}] - '
               f'{date_to.strftime("%Y-%m-%d")} {comment}')]
  if upgrade_notes:
    buffer.append('\n### BREAKING CHANGES\n')
    for pr in upgrade_notes:
      for note in pr.upgrade_notes:
        buffer.append(f'- {note} [[#{pr.id}]({pull_url}/{pr.id})]')
    buffer.append('')

  for group in sorted(pull_groups.keys(), key=lambda s: s or ''):
    if group is not None:
      buffer.append(f'### {group.upper()}\n')
    for pull in pull_groups[group]:
      buffer.append(format_pull(pull, group))
    buffer.append('')
  return '\n'.join(buffer)