:mod:`dip.settings.default_settings_manager`
============================================
.. module:: dip.settings.default_settings_manager

The :mod:`dip.settings.default_settings_manager` module contains dip's
default settings manager implementation.


:class:`SettingsManager`
------------------------
.. class:: SettingsManager

    Base class: :class:`~dip.model.Model`

    The SettingsManager class is the default implementation of the
    :class:`~dip.settings.ISettingsManager` interface.

    .. method:: SettingsManager.load(organization, application=None)

        Load the application's settings.
        
        :param organization:
            is the name of the organization.  It is recommended that this is a
            FQDN.
        :param application:
            is the name of the application.  It will default to the base name
            of sys.argv[0] with any extension removed.

    .. method:: SettingsManager.read_value(name)

        Read the value of a setting.
        
        :param name:
            is the name of the setting.
        :return:
            the value of the setting, or None if there is no such setting.

    .. method:: SettingsManager.restore(models)

        Restore the settings for a sequence of models.  If no settings have
        been loaded, i.e. :meth:`~dip.settings.ISettingsManager.load` has not
        been called, then this has no effect.
        
        :param models:
            is the sequence of models.  Any model that does not implement
            :class:`~dip.settings.ISettings` is ignored.

    .. method:: SettingsManager.save(models)

        Save the settings for a sequence of models.  If no settings have
        been loaded, i.e. :meth:`~dip.settings.ISettingsManager.load` has not
        been called, then this has no effect.
        
        :param models:
            is the sequence of models.  Any model that does not implement
            :class:`~dip.settings.ISettings` is ignored.

    .. method:: SettingsManager.write_value(name, value)

        Write the value of a setting.
        
        :param name:
            is the name of the setting.
        :param value:
            is the value of the setting.  If this is None then the setting is
            removed.
