code: def parse_teams(
      r: Dict[str, Any], issue_number: int
  ) -> Dict[str, str]:
      """
      Fetch an issue and parse out series of tagged people from the issue body
      and comments
      """
      issue = r["data"]["repository"]["issue"]
  
      if issue is None or issue.get("body") is None:
          raise RuntimeError(
              f"Could not find issue #{issue_number}\n\n{json.dumps(r, indent=2)}"
          )
  
      result = {}
  
      def add_tag(tag, users):
          if tag in result:
              result[tag] += users
          else:
              result[tag] = users
  
      # Parse the issue body (only bullets are looked at)
      for line in issue["body"].split("\n"):
          line = line.strip()
          if not line.startswith("- "):
              continue
          if "@" not in line:
              continue
  
          tag, users = parse_line(line)
          add_tag(tag, users)
  
      # Parse comment bodies
      for comment in issue["comments"]["nodes"]:
          for line in comment["body"].split("\n"):
              if "@" not in line:
                  continue
  
              tag, users = parse_line(line)
              add_tag(tag, users)
  
      # De-duplicate users listed twice for the same tag
      for tag in result:
          result[tag] = list(set(result[tag]))
  
      return {k.lower(): v for k, v in result.items() if k.strip()}
  
file_path: tvm/ci/scripts/github/github_tag_teams.py
imports: import os
  import json
  import argparse
  import logging
  import re
  import sys
  from pathlib import Path
  from typing import Dict, Any, List, Tuple, Optional
  from git_utils import git, GitHubRepo, parse_remote, find_ccs, dry_run_token
  from cmd_utils import tags_from_title, init_log
label_desc: Use image node_id 3 for calling a global function with example usage: parse_teams(r, issue_number) and returns: unknown