code: def main(token, revision_range):
      lst_release, cur_release = [
          r.strip() for r in revision_range.split("..")
      ]
  
      github = Github(token)
      github_repo = github.get_repo("numpy/numpy")
  
      # document authors
      authors = get_authors(revision_range)
      heading = "Contributors"
      print()
      print(heading)
      print("=" * len(heading))
      print(author_msg % len(authors))
  
      for s in authors:
          print("* " + s)
  
      # document pull requests
      pull_requests = get_pull_requests(github_repo, revision_range)
      heading = "Pull requests merged"
      pull_msg = "* `#{0} <{1}>`__: {2}"
  
      print()
      print(heading)
      print("=" * len(heading))
      print(pull_request_msg % len(pull_requests))
  
      for pull in pull_requests:
          title = re.sub(r"\s+", " ", pull.title.strip())
          if len(title) > 60:
              remainder = re.sub(r"\s.*$", "...", title[60:])
              if len(remainder) > 20:
                  remainder = title[:80] + "..."
              else:
                  title = title[:60] + remainder
          print(pull_msg.format(pull.number, pull.html_url, title))
  
file_path: numpy/tools/changelog.py
imports: import os
  import sys
  import re
  from git import Repo
  from github import Github
label_desc: Use image node_id 3 for calling a global function with example usage: main(token, revision_range) without return types