def main()

in tools/changelog.py [0:0]


def main(token, changelog_file='CHANGELOG.md', exclude_pull=None,
         merged_to=None, release_as=None, release_from=None, release_to=None,
         write=False, verbose=False):
  logging.basicConfig(level=logging.INFO if verbose else logging.WARNING)
  if release_as is not None and release_to is not None:
    raise SystemExit('Only one of `release_as` and `release_to` can be used.')
  try:
    date_from = get_release_date(token, release_from)
    logging.info(f'release date from: {date_from}')
    date_to = None if not release_to else get_release_date(token, release_to)
    logging.info(f'release date to: {date_to}')
    pulls = list(
        get_pulls(token, date_from, date_to, merged_to or ('master',),
                  exclude_pull))
    logging.info(f'number of pulls: {len(pulls)}')
    pull_groups = group_pulls(pulls)
    upgrade_notes = [pr for pr in pulls if pr.upgrade_notes]
    rel_changes = format_release(pull_groups, upgrade_notes, release_as,
                                 release_to, release_from, date_to, date_from)
    if not write:
      print(rel_changes)
      raise SystemExit(0)
    releases, links = load_changelog(changelog_file)
    write_changelog(releases, links, rel_changes, release_as, release_to,
                    release_from, changelog_file)
  except Error as e:
    raise SystemExit(f'Error running command: {e}')