Extend settings dictionary with content of yaml's  configurator key.

    .. note::

        This methods changes multilayered subkeys defined
        within **configurator** into dotted keys in settings dictionary:

        .. code-block:: yaml

            configurator:
                sqlalchemy:
                    url: mysql://user:password@host/dbname

        will result in **sqlalchemy.url**: mysql://user:password@host/dbname
        key value in settings dictionary.

    :param dict settings: settings dictionary
    :param dict configurator_config: yml defined settings
    :param str prefix: prefix for settings dict key

def _extend_settings(settings, configurator_config, prefix=None):
    """
    Extend settings dictionary with content of yaml's  configurator key.

    .. note::

        This methods changes multilayered subkeys defined
        within **configurator** into dotted keys in settings dictionary:

        .. code-block:: yaml

            configurator:
                sqlalchemy:
                    url: mysql://user:password@host/dbname

        will result in **sqlalchemy.url**: mysql://user:password@host/dbname
        key value in settings dictionary.

    :param dict settings: settings dictionary
    :param dict configurator_config: yml defined settings
    :param str prefix: prefix for settings dict key
    """
    for key in configurator_config:
        settings_key = '.'.join([prefix, key]) if prefix else key

        if hasattr(configurator_config[key], 'keys') and\
                hasattr(configurator_config[key], '__getitem__'):
            _extend_settings(
                settings, configurator_config[key], prefix=settings_key
            )
        else:
            settings[settings_key] = configurator_config[key]