code: def execute(
      self,
      document: ast.Node,
      variable_values: Optional[Dict] = None,
      timeout: Optional[Union[int, float]] = None,
  ) -> ExecutionResult:
      query_str = print_ast(document)
      payload = {"query": query_str, "variables": variable_values or {}}
  
      data_key = "json" if self.use_json else "data"
      post_args = {
          "headers": self.headers,
          "cookies": self.cookies,
          "timeout": timeout or self.default_timeout,
          data_key: payload,
      }
      request = self.session.post(self.url, **post_args)
      request.raise_for_status()
  
      result = request.json()
      data, errors = result.get("data"), result.get("errors")
      if data is None and errors is None:
          raise RuntimeError(
              f"Received non-compatible response: {result}"
          )
      return ExecutionResult(data=data, errors=errors)
  
file_path: wandb/wandb/sdk/lib/gql_request.py
imports: from typing import Any, Callable, Dict, Optional, Tuple, Union
  import requests
  from wandb_gql.transport.http import HTTPTransport
  from wandb_graphql.execution import ExecutionResult
  from wandb_graphql.language import ast
  from wandb_graphql.language.printer import print_ast
label_desc: Use image node_id 2 for calling the GraphQLSession obj's underlying member method code with example usage: obj.execute(document, variable_values, timeout) and returns: ExecutionResult