class_docstr: datastore_root aware Google Cloud Storage client. I.e. blob operations are
  all done relative to datastore_root.
  
  This must be picklable, so methods may be passed across process boundaries.
class_docstr_tok: ["datastore_root","aware","Google","Cloud","Storage","client",".","I.e",".","blob","operations","are","all","done","relative","to","datastore_root",".","This","must","be","picklable",",","so","methods","may","be","passed","across","process","boundaries","."]
docstr: Drives GSStorage.load_bytes()
docstr_tok: ["Drives","GSStorage.load_bytes","(",")"]
code: def load_bytes_single(self, tmpdir, key):
      """Drives GSStorage.load_bytes()"""
      tmp_filename = os.path.join(tmpdir, str(uuid.uuid4()))
      blob = self.get_blob_client(key)
      metaflow_user_attributes = None
      import google.api_core.exceptions
  
      try:
          blob.reload()
          if (
              blob.metadata
              and "metaflow-user-attributes" in blob.metadata
          ):
              metaflow_user_attributes = json.loads(
                  blob.metadata["metaflow-user-attributes"]
              )
          blob.download_to_filename(tmp_filename)
      except google.api_core.exceptions.NotFound:
          tmp_filename = None
      return key, tmp_filename, metaflow_user_attributes
  
imports: import json
  import os
  import shutil
  import uuid
  from concurrent.futures import as_completed
  from tempfile import mkdtemp
  from metaflow.datastore.datastore_storage import DataStoreStorage, CloseAfterUse
  from metaflow.exception import MetaflowInternalError
  from metaflow.metaflow_config import DATASTORE_SYSROOT_GS, ARTIFACT_LOCALROOT, GS_STORAGE_WORKLOAD_TYPE
  from metaflow.plugins.gcp.gs_storage_client_factory import get_gs_storage_client
  from metaflow.plugins.gcp.gs_utils import check_gs_deps, parse_gs_full_path, process_gs_exception
  from metaflow.plugins.storage_executor import StorageExecutor, handle_executor_exceptions
label_desc: Use image node_id 9 for calling the _GSRootClient obj's underlying member method code with example usage: obj.load_bytes_single(tmpdir, key) and returns: key,  tmp_filename,  metaflow_user_attributes