code: def __init__(self, config, blocking=True, verbose=logs.DEBUG):
      self.logger = logs.get_logger(self.__class__.__name__)
      self.logger.setLevel(verbose)
  
      if isinstance(config, dict):
          self.config = config
      else:
          self.config = {"type": config}
  
      self.tokendir = os.path.abspath(
          os.path.expanduser(
              self.config.get("token_directory", TOKEN_DIR)
          )
      )
  
      if not os.path.exists(self.tokendir):
          os.makedirs(self.tokendir)
  
      self.token = self._load_token()[0]
      if self.token is None and blocking:
          self._sign_in()
  
imports: import os
  import getpass
  import time
  import json
  import shutil
  import atexit
  import tempfile
  import requests
  import re
  import uuid
  from builtins import input
  import google.auth.transport.requests
  import google.oauth2.id_token
  from studio.util.util import rand_string, check_for_kb_interrupt
  from studio import pyrebase
  from studio.util import logs
label_desc: Use image node_id 1 to create a new GithubAuth object from inherited base classes: object with example: obj = GithubAuth(config, blocking, verbose)