from ConfigParser import RawConfigParser def load_settings(global_config, app_settings): """ Load an INI file with multiple sections into a single dictionary. .. code-block:: ini [sqlalchemy] url = sqlite://%(here)s [auth] secret = foo expires_in = 3600 [app:myapp] use = egg:myapp This file can be loaded and used via: .. code-block:: python def main(global_conf, **settings) settings = load_settings(global_conf, settings) config = Configurator(settings=settings) engine = engine_from_config(settings, prefix='sqlalchemy.') dbmaker = sessionmaker(bind=engine) config.registry['dbmaker'] = dbmaker return config.make_wsgi_app() """ config_file = global_config.get('__file__') parser = RawConfigParser() parser.read(config_file) settings = {} for section in parser.sections(): prefix = section.replace(':', '.') for k, v in parser.items(section): settings[prefix + '.' + k] = v settings.update(app_settings) return settings