class_docstr: StorageManager is helper interface for downloading & uploading files to supported remote storage
  Support remote servers: http(s)/S3/GS/Azure/File-System-Folder
  Cache is enabled by default for all downloaded remote urls/files
docstr: Get the metadata of the remote object.
  The metadata is a dict containing the following keys: `name`, `size`.
  
  :param str remote_url: Source remote storage location, tree structure of `remote_url` will
      be created under the target local_folder. Supports S3/GS/Azure, shared filesystem and http(s).
      Example: 's3://bucket/data/'
  :param return_full_path: True for returning a full path (with the base url)
  
  :return: A dict containing the metadata of the remote object. In case of an error, `None` is returned
docstr_tok: ["Get","the","metadata","of","the","remote","object",".","The","metadata","is","a","dict","containing","the","following","keys",":","`","name","`",",","`","size","`",".",":","param","str","remote_url",":","Source","remote","storage","location",",","tree","structure","of","`","remote_url","`","will","be","created","under","the","target","local_folder",".","Supports","S3\/GS\/Azure",",","shared","filesystem","and","http","(","s",")",".","Example",":","'s3",":","\/\/bucket\/data\/'",":","param","return_full_path",":","True","for","returning","a","full","path","(","with","the","base","url",")",":","return",":","A","dict","containing","the","metadata","of","the","remote","object",".","In","case","of","an","error",",","`","None","`","is","returned"]
code: def get_metadata(cls, remote_url, return_full_path=False):
      # type: (str, bool) -> Optional[dict]
      """
      Get the metadata of the remote object.
      The metadata is a dict containing the following keys: `name`, `size`.
  
      :param str remote_url: Source remote storage location, tree structure of `remote_url` will
          be created under the target local_folder. Supports S3/GS/Azure, shared filesystem and http(s).
          Example: 's3://bucket/data/'
      :param return_full_path: True for returning a full path (with the base url)
  
      :return: A dict containing the metadata of the remote object. In case of an error, `None` is returned
      """
      helper = StorageHelper.get(remote_url)
      obj = helper.get_object(remote_url)
      if not obj:
          return None
      metadata = helper.get_object_metadata(obj)
      base_url = helper._resolve_base_url(remote_url)
      if return_full_path and not metadata["name"].startswith(base_url):
          metadata["name"] = (
              base_url
              + ("/" if not base_url.endswith("/") else "")
              + metadata["name"]
          )
      return metadata
  
imports: import fnmatch
  import shutil
  import tarfile
  from multiprocessing.pool import ThreadPool
  from random import random
  from time import time
  from typing import List, Optional, Union
  from zipfile import ZipFile
  from pathlib2 import Path
  from .cache import CacheManager
  from .callbacks import ProgressReport
  from .helper import StorageHelper
  from .util import encode_string_to_filename, safe_extract, create_zip_directories
  from ..debugging.log import LoggerRoot
  from ..config import deferred_config
label_desc: Use image node_id 12 for calling the StorageManager obj's underlying member method code with example usage: obj.get_metadata(cls, remote_url, return_full_path) and returns: metadata, None