docs: def immutable_settings(defaults: Settings,
                         **optionals: Any) -> types.MappingProxyType:
      r"""Initialize and return immutable Settings dictionary.
  
      Settings dictionary allows you to setup settings values from multiple
      sources and make sure that values cannot be changed, updated by anyone else
      after initialization. This helps keep things clear and not worry about
      hidden settings change somewhere around your web application.
  
      :param defaults:
         Read settings values from module or dict-like instance.
      :param \*\*optionals:
          Update base settings with optional values.
  
          In common additional values shouldn't be passed, if settings values
          already populated from local settings or environment. But in case
          of using application factories this makes sense::
  
              from . import settings
  
              def create_app(**options):
                  app = ...
                  app.settings = immutable_settings(settings, **options)
                  return app
  
          And yes each additional key overwrite default setting value.
      """
      settings = {key: value for key, value in iter_settings(defaults)}
      for key, value in iter_settings(optionals):
          settings[key] = value
      return types.MappingProxyType(settings)