code: def _get_storage_provider_setting_items(self):
      for (
          plugin_name,
          tagged_settings,
      ) in self.workflow.storage_provider_settings.items():
          plugin = StoragePluginRegistry().get_plugin(plugin_name)
          if plugin.settings_cls:
              for field in fields(plugin.settings_cls):
                  unparse = field.metadata.get(
                      "unparse", lambda value: value
                  )
  
                  def fmt_value(tag, value):
                      value = unparse(value)
                      if tag is not None:
                          return f"{tag}:{value}"
                      else:
                          return value
  
                  field_settings = [
                      fmt_value(tag, value)
                      for tag, value in tagged_settings.get_field_settings(
                          field.name
                      ).items()
                      if value is not None
                  ]
                  if field_settings:
                      yield plugin, field, field_settings
  
imports: from dataclasses import dataclass, fields
  import hashlib
  import os
  import sys
  from typing import Mapping, TypeVar, TYPE_CHECKING, Any
  from snakemake_interface_executor_plugins.utils import format_cli_arg, join_cli_args
  from snakemake_interface_storage_plugins.registry import StoragePluginRegistry
  from snakemake import common
  from snakemake.settings import SharedFSUsage
label_desc: Use image node_id 2 for calling the SpawnedJobArgsFactory obj's underlying member method code with example usage: obj._get_storage_provider_setting_items() and returns: tag, str, value, value