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","."]
code: def __init__(self, datastore_root):
      if datastore_root is None:
          raise MetaflowInternalError("datastore_root must be set")
      self._datastore_root = datastore_root
  
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 1 to create a new _GSRootClient object from inherited base classes: object with example: obj = _GSRootClient(datastore_root)