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.list_content()
docstr_tok: ["Drives","GSStorage.list_content","(",")"]
code: def list_content_single(self, path):
      """Drives GSStorage.list_content()"""
  
      def _trim_result(name, prefix):
          # Remove a prefix from the name, if present
          if prefix is not None and name[: len(prefix)] == prefix:
              name = name[len(prefix) + 1 :]
          return name
  
      try:
          path = path.rstrip("/") + "/"
          bucket_name, blob_prefix = parse_gs_full_path(
              self._datastore_root
          )
          full_path = self.get_blob_full_path(path)
          blobs = get_gs_storage_client().list_blobs(
              bucket_name,
              prefix=full_path,
              delimiter="/",
              include_trailing_delimiter=False,
          )
          result = []
          for b in blobs:
              result.append((_trim_result(b.name, blob_prefix), True))
          for p in blobs.prefixes:
              result.append(
                  (_trim_result(p, blob_prefix).rstrip("/"), False)
              )
          return result
      except Exception as e:
          process_gs_exception(e)
  
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 7 for calling the _GSRootClient obj's underlying member method code with example usage: obj.list_content_single(path) and returns: name, result