code: def _get_storage_dictionary_options(reader_kwargs):
      storage_opt_dict = {}
      shared_storage_options = reader_kwargs.pop("storage_options", {})
      if not reader_kwargs:
          # no other reader kwargs
          return shared_storage_options
      for reader_name, rkwargs in reader_kwargs.items():
          if not isinstance(rkwargs, dict):
              # reader kwargs are not per-reader, return a single dictionary of storage options
              return shared_storage_options
          if shared_storage_options:
              # set base storage options if there are any
              storage_opt_dict[
                  reader_name
              ] = shared_storage_options.copy()
          if isinstance(rkwargs, dict) and "storage_options" in rkwargs:
              storage_opt_dict.setdefault(reader_name, {}).update(
                  rkwargs.pop("storage_options")
              )
      return storage_opt_dict
  
imports: from __future__ import annotations
  import contextlib
  import datetime
  import logging
  import os
  import pathlib
  import warnings
  from contextlib import contextmanager
  from copy import deepcopy
  from typing import Literal, Mapping, Optional
  from urllib.parse import urlparse
  import dask.utils
  import numpy
  import xarray
  import yaml
  from yaml import BaseLoader, UnsafeLoader
  from satpy._compat import DTypeLike
label_desc: Use image node_id 44 for calling a global function with example usage: _get_storage_dictionary_options(reader_kwargs) and returns: storage_opt_dict, shared_storage_options, shared_storage_options