Merge pull request #449 from Julian/settings

A Possible Re-implementation for Issue #445
This commit is contained in:
Alexis Metaireau 2012-08-16 04:40:15 -07:00
commit e4df1da252
2 changed files with 24 additions and 10 deletions

2
.gitignore vendored
View file

@ -9,3 +9,5 @@ build
dist dist
tags tags
.tox .tox
.coverage
htmlcov

View file

@ -1,4 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import imp
import inspect
import os import os
import locale import locale
import logging import logging
@ -84,21 +86,31 @@ def read_settings(filename=None):
return configured_settings return configured_settings
def get_settings_from_file(filename, default_settings=None): def get_settings_from_module(module=None, default_settings=_DEFAULT_CONFIG):
"""Load a Python file into a dictionary.
""" """
if default_settings == None: Load settings from a module, returning a dict.
default_settings = _DEFAULT_CONFIG
"""
context = default_settings.copy() context = default_settings.copy()
if filename: if module is not None:
tempdict = {} context.update(
execfile(filename, tempdict) (k, v) for k, v in inspect.getmembers(module) if k.isupper()
for key in tempdict: )
if key.isupper():
context[key] = tempdict[key]
return context return context
def get_settings_from_file(filename, default_settings=_DEFAULT_CONFIG):
"""
Load settings from a file path, returning a dict.
"""
name = os.path.basename(filename).rpartition(".")[0]
module = imp.load_source(name, filename)
return get_settings_from_module(module, default_settings=default_settings)
def configure_settings(settings, default_settings=None, filename=None): def configure_settings(settings, default_settings=None, filename=None):
"""Provide optimizations, error checking, and warnings for loaded settings""" """Provide optimizations, error checking, and warnings for loaded settings"""
if default_settings is None: if default_settings is None: