code: def get(self, url):
      while True:
          # Wait until rate limit
          while (
              self.ratelimit_remaining == 0
              and self.ratelimit_reset > time.time()
          ):
              s = self.ratelimit_reset + 5 - time.time()
              if s <= 0:
                  break
              print(
                  "[gh_lists] rate limit exceeded: waiting until {} ({} s remaining)".format(
                      datetime.datetime.fromtimestamp(
                          self.ratelimit_reset
                      ).strftime("%Y-%m-%d %H:%M:%S"),
                      int(s),
                  ),
                  file=sys.stderr,
                  flush=True,
              )
              time.sleep(min(5 * 60, s))
  
          # Get page
          print("[gh_lists] get:", url, file=sys.stderr, flush=True)
          try:
              req = self.urlopen(url)
              try:
                  code = req.getcode()
                  info = req.info()
                  data = json.loads(req.read().decode("utf-8"))
              finally:
                  req.close()
          except HTTPError as err:
              code = err.getcode()
              info = err.info()
              data = None
  
          if code not in (200, 403):
              raise RuntimeError()
  
          # Parse reply
          next_url = None
          if "Link" in info:
              m = re.search('<([^<>]*)>; rel="next"', info["Link"])
              if m:
                  next_url = m.group(1)
  
          # Update rate limit info
          if "X-RateLimit-Remaining" in info:
              self.ratelimit_remaining = int(
                  info["X-RateLimit-Remaining"]
              )
          if "X-RateLimit-Reset" in info:
              self.ratelimit_reset = float(info["X-RateLimit-Reset"])
  
          # Deal with rate limit exceeded
          if code != 200 or data is None:
              if self.ratelimit_remaining == 0:
                  continue
              else:
                  raise RuntimeError()
  
          # Done.
          return data, info, next_url
  
imports: import os
  import re
  import sys
  import json
  import collections
  import argparse
  import datetime
  import time
  from urllib.request import urlopen, Request, HTTPError
label_desc: Use image node_id 5 for calling the GithubGet obj's underlying member method code with example usage: obj.get(url) and returns: data,  info,  next_url