docstr: Update or post bullet points in the PR based on 'items' which is a
  list of (key, text) pairs
docstr_tok: ["Update","or","post","bullet","points","in","the","PR","based","on","'items","'","which","is","a","list","of","(","key",",","text",")","pairs"]
code: def post_items(self, items: List[Tuple[str, str]]):
      """
      Update or post bullet points in the PR based on 'items' which is a
      list of (key, text) pairs
      """
      # Find the existing bullet points
      body_items = self.find_existing_body()
  
      # Add or update the requested items
      for key, text in items:
          if text is None or text.strip() == "":
              logging.info(f"Skipping {key} since it was empty")
              continue
          logging.info(f"Updating comment items {key} with {text}")
          body_items[key] = text.strip()
  
      # Post or update the comment
      # print(body_items)
      self._post_comment(body_items=body_items)
  
file_path: tvm/ci/scripts/github/github_commenter.py
imports: import re
  import logging
  import sys
  from pathlib import Path
  from typing import Dict, Tuple, Any, Optional, List, Union
  from git_utils import GitHubRepo
label_desc: Use image node_id 7 for calling the BotCommentBuilder obj's underlying member method code with example usage: obj.post_items(items) without return types