code: def info(self, key=None, return_missing=False):
      if not key.startswith("gs://"):
          raise MetaflowInternalError(
              msg="Expected GS object key to start with 'gs://'"
          )
      storage, subpath = self._get_storage_backend_and_subpath(key)
      blob_size = storage.size_file(subpath)
      blob_exists = blob_size is not None
      if not blob_exists and not return_missing:
          raise MetaflowException("GS object '%s' not found" % key)
      return GSObject(key, None, blob_exists, blob_size)
  
imports: import io
  import os
  import shutil
  import uuid
  from tempfile import mkdtemp
  from metaflow.exception import MetaflowException, MetaflowInternalError
label_desc: Use image node_id 8 for calling the GS obj's underlying member method code with example usage: obj.info(key, return_missing) and returns: GSObject