code: def parse_changelog(args: Any) -> Tuple[str, str]:
      
      with open("CHANGELOG.rst", "r") as file:
          match = re.match(
              pattern=r"(.*?Unreleased\n---+\n)(.+?)(\n*[^\n]+\n---+\n.*)",
              string=file.read(),
              flags=re.DOTALL,
          )
      assert match
      header, changes, tail = match.groups()
      tag = "%s - %s" % (args.tag, datetime.date.today().isoformat())
  
      tagged = "\n%s\n%s\n%s" % (tag, "-" * len(tag), changes)
      if args.verbose:
          print(tagged)
  
      return "".join((header, tagged, tail)), changes
docs: Return an updated changelog and and the list of changes.