class_docstr: A class for handling connections and interactions with the Gmail API.
  
  Attributes:
      credentials_file (str): The path to the Google Auth Credentials file for authentication
      and interacting with the Gmail API on behalf of the uesr.
  
      scopes (List[str], Optional): The scopes to use when authenticating with the Gmail API.
class_docstr_tok: ["A","class","for","handling","connections","and","interactions","with","the","Gmail","API",".","Attributes",":","credentials_file","(","str",")",":","The","path","to","the","Google","Auth","Credentials","file","for","authentication","and","interacting","with","the","Gmail","API","on","behalf","of","the","uesr",".","scopes","(","List","[","str","]",",","Optional",")",":","The","scopes","to","use","when","authenticating","with","the","Gmail","API","."]
code: def create_connection(self):
      creds = None
  
      # Get the current dir, we'll check for Token & Creds files in this dir
      curr_dir = self.handler_storage.folder_get("config")
  
      creds_file = os.path.join(curr_dir, "creds.json")
      secret_file = os.path.join(curr_dir, "secret.json")
  
      if os.path.isfile(creds_file):
          creds = Credentials.from_authorized_user_file(
              creds_file, self.scopes
          )
  
      if not creds or not creds.valid:
          if creds and creds.expired and creds.refresh_token:
              creds.refresh(Request())
  
          if self._download_secret_file(secret_file):
              # save to storage
              self.handler_storage.folder_sync("config")
          else:
              raise ValueError(
                  "No valid Gmail Credentials filepath or S3 url found."
              )
  
          creds = google_auth_flow(
              secret_file, self.scopes, self.connection_args.get("code")
          )
  
          save_creds_to_file(creds, creds_file)
          self.handler_storage.folder_sync("config")
  
      return build("gmail", "v1", credentials=creds)
  
imports: import json
  from shutil import copyfile
  from collections import OrderedDict
  import requests
  from mindsdb.integrations.libs.response import HandlerStatusResponse, HandlerResponse
  from mindsdb.integrations.libs.const import HANDLER_CONNECTION_ARG_TYPE
  from mindsdb.integrations.utilities.sql_utils import extract_comparison_conditions
  from mindsdb.integrations.libs.api_handler import APIHandler, APITable
  from mindsdb_sql.parser import ast
  from mindsdb.utilities import log
  from mindsdb_sql import parse_sql
  from mindsdb.utilities.config import Config
  import os
  import time
  from typing import List
  import pandas
  from google.auth.transport.requests import Request
  from google.oauth2.credentials import Credentials
  from google_auth_oauthlib.flow import Flow
  from googleapiclient.discovery import build
  from googleapiclient.errors import HttpError
  from email.message import EmailMessage
  from base64 import urlsafe_b64encode, urlsafe_b64decode
  from .utils import AuthException, google_auth_flow, save_creds_to_file
label_desc: Use image node_id 3 for calling the GmailHandler obj's underlying member method code with example usage: obj.create_connection() and returns: build