code: def __init__(
      self,
      number: int,
      owner: str,
      repo: str,
      dry_run: bool = False,
      raw_data: Dict[str, Any] = None,
  ):
      self.owner = owner
      self.number = number
      self.repo_name = repo
      self.dry_run = dry_run
      self.has_error = False
  
      if dry_run and raw_data:
          # In test mode there is no need to fetch anything
          self.raw = raw_data
          self.github = None
      else:
          self.github = GitHubRepo(
              user=owner, repo=repo, token=os.environ["GITHUB_TOKEN"]
          )
          if os.getenv("DEBUG", "0") == "1":
              # For local runs fill in the requested data but cache it for
              # later use
              cached_path = Path("pr.json")
              if not cached_path.exists():
                  self.raw = self.fetch_data()
                  with open(cached_path, "w") as f:
                      json.dump(self.raw, f, indent=2)
              else:
                  with open(cached_path) as f:
                      self.raw = json.load(f)
          else:
              # Usual path, fetch the PR's data based on the number from
              # GitHub
              self.raw = self.fetch_data()
  
      def checker(obj, parent_key):
          """
          Verify that any paged results don't have extra data (if so the bot
          may still work since most relevant comments will be more recent)
          """
          if parent_key == "pageInfo":
              if obj.get("hasPreviousPage", False):
                  warnings.warn(
                      f"Found {obj} with a previous page, bot may be missing data"
                  )
              if obj.get("hasNextPage", False):
                  warnings.warn(
                      f"Found {obj} with a next page, bot may be missing data"
                  )
  
      walk(self.raw, checker)
  
      logging.info(
          f"Verified data, running with PR {to_json_str(self.raw)}"
      )
  
imports: import os
  import json
  import argparse
  import sys
  import warnings
  import logging
  import traceback
  import re
  from typing import Dict, Any, List, Optional, Callable, Union
  from pathlib import Path
  from git_utils import git, GitHubRepo, parse_remote, post
  from cmd_utils import init_log
label_desc: Use image node_id 1 to create a new PR object  with example: obj = PR(number, owner, repo, dry_run, raw_data)