def test_load_with_configs(self): os.environ['key'] = 'value' config = MergeConfig(EnvironmentConfig()) config.load() self.assertEqual('value', config['key'])
def test_get_value_with_overridden_key(self): config = MergeConfig( MemoryConfig(data={'key': 1}), MemoryConfig(data={'key': 2}) ) config.load() self.assertEqual(2, config.get_value('key', int))
def test_updated_trigger(self): child = MemoryConfig() config = MergeConfig(child) passed = [] config.updated.add(lambda: passed.append(True)) child.set('key', 'value') self.assertEqual(1, len(passed))
def _create_base_config(self, load_data=False): if load_data: config = MergeConfig( MemoryConfig(data={ 'key_str': 'value', 'key_int': 1, 'key_int_as_str': '1', 'key_dict': {'key_str': 'value'}, 'key_dict_as_str': 'item_key=value', 'key_list_as_str': 'item1,item2'}), MemoryConfig(data={ 'key_interpolated': '${key_str}', 'key_ignore_case': 'value', 'key_IGNORE_case': 'value1', 'key_delimited': {'key_str': 'value'} }) ) config.load() else: config = MergeConfig() return config
def test_child_lookup(self): child = MemoryConfig() config = MergeConfig(child) self.assertEqual(config.lookup, child.lookup)
def test_configs_with_list_of_str_as_value(self): with self.assertRaises(TypeError): MergeConfig(['non config'])
def test_configs_with_list_of_configs_as_value(self): child = MemoryConfig() config = MergeConfig(child) self.assertEqual(id(child), id(config.configs[0]))
def test_configs_with_none_as_value(self): with self.assertRaises(TypeError): MergeConfig(None)
from central.config import MergeConfig from central.config.file import FileConfig config = MergeConfig( FileConfig('config.json'), FileConfig('config.local.json') ) config.load() print(config.get('timeout')) print(config.get('database')) # you can set APP_ENV by using environment variables # export APP_ENV=prod # python main.py