From 0200b490636d4bc55a2ccb0850496c655cbc1391 Mon Sep 17 00:00:00 2001 From: kpe Date: Fri, 22 Mar 2019 13:54:58 +0100 Subject: [PATCH] v0.4.0 - allowing a Params(*args, **kwargs) construction with overriding class defaults with args and kwargs. --- params/__init__.py | 2 +- params/params.py | 3 ++- tests/test_construction.py | 10 ++++++++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/params/__init__.py b/params/__init__.py index 93b9616..4cc69bf 100644 --- a/params/__init__.py +++ b/params/__init__.py @@ -5,4 +5,4 @@ from .params import Params -__version__ = '0.3.1' +__version__ = '0.4.0' diff --git a/params/params.py b/params/params.py index 8aa2a06..0154123 100644 --- a/params/params.py +++ b/params/params.py @@ -27,9 +27,10 @@ class MyParams(Params): params = MyParams(another_param=2.0) # raises ValueError """ - def __init__(self, **kwargs): + def __init__(self, *args, **kwargs): super(Params, self).__init__() self.update(self.__class__.defaults()) + self.update(dict(*args)) self.update(kwargs) def __getattribute__(self, attr): diff --git a/tests/test_construction.py b/tests/test_construction.py index 50b5d0f..5715980 100644 --- a/tests/test_construction.py +++ b/tests/test_construction.py @@ -77,6 +77,16 @@ def test_from_dict(self): self.assertEqual({'param_a': 3, 'param_b': 4}, params) self.assertIsInstance(params, dict) + def test_construct_dict(self): + params = MyParams(param_a=99) + self.assertEqual(99, params.param_a) + params = MyParams(params, param_b=101) + self.assertEqual(99, params.param_a) + self.assertEqual(101, params.param_b) + params = MyParams(params, param_a=101) + self.assertEqual(101, params.param_a) + self.assertEqual(101, params.param_b) + if __name__ == '__main__': unittest.main()