diff --git a/config_provider.py b/config_provider.py index 10df542e7645ef858ef9e44ef640876390fbd4f0..698fa3b6492b64d2c5fdcb280e97fddc5e6705e2 100644 --- a/config_provider.py +++ b/config_provider.py @@ -1,16 +1,23 @@ class ConfigProvider: _instance = None + _configs = {} @classmethod - def getInstance(cls): - return ConfigProvider._instance + def getInstance(cls, name = None): + if name is None: + return ConfigProvider._instance + else: + return ConfigProvider._configs.get(name) - def __init__(self, load_function): + def __init__(self, load_function, name = None): self._conf_dict = load_function['function']( - *load_function.get('args'), **load_function.get('kwargs')) + *load_function.get('args', []), **load_function.get('kwargs',{})) self._load_function = load_function - ConfigProvider._instance = self + if name is None: + ConfigProvider._instance = self + else: + ConfigProvider._configs[name] = self @property def dict(self): diff --git a/test/test_config_provider.py b/test/test_config_provider.py index 3d5493b977a5383e24320e09380709dcd6af9cba..0a23988263849d792decadcb354fdf57f01dca54 100644 --- a/test/test_config_provider.py +++ b/test/test_config_provider.py @@ -47,4 +47,14 @@ class TestConfigProvider(unittest.TestCase): old_dict, self.config.dict, 'old_dict musst not equal self.config.dict') def test_get_instance(self): + self.assertEqual(config_provider.ConfigProvider.getInstance(), self.config) + + def test_multiple_instances(self): + def get_constant_dict(): + return {'foo': 'bar'} + config_provider.ConfigProvider( + load_function = {'function': get_constant_dict}, name = 'constant') + self.assertNotEqual( + config_provider.ConfigProvider.getInstance(), + config_provider.ConfigProvider.getInstance(name = 'constant')) self.assertEqual(config_provider.ConfigProvider.getInstance(), self.config) \ No newline at end of file diff --git a/version.py b/version.py index 75977e6f4181a04517451d1fdb63b6b847c1a7bf..6df8ed024cfa39bb34d916712eb82ea576a226a4 100644 --- a/version.py +++ b/version.py @@ -1 +1 @@ -__version__ = '1.0.0' \ No newline at end of file +__version__ = '1.1.0' \ No newline at end of file