diff --git a/benedict/dicts/base/base_dict.py b/benedict/dicts/base/base_dict.py index 8da4b43..4ef04f5 100644 --- a/benedict/dicts/base/base_dict.py +++ b/benedict/dicts/base/base_dict.py @@ -10,7 +10,7 @@ class BaseDict(dict): self._dict = args[0] else: self._dict = dict(*args, **kwargs) - super(BaseDict, self).__init__(*args, **kwargs) + super(BaseDict, self).__init__(self._dict) def __bool__(self): return bool(self._dict) diff --git a/tests/github/test_issue_0038.py b/tests/github/test_issue_0038.py new file mode 100644 index 0000000..23a1e16 --- /dev/null +++ b/tests/github/test_issue_0038.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- + +from benedict import benedict + +import unittest + + +class github_issue_0038_test_case(unittest.TestCase): + + """ + https://github.com/fabiocaccamo/python-benedict/issues/38 + + To run this specific test: + - Run python -m unittest tests.github.test_issue_0038 + """ + + @staticmethod + def get_dict_generator(): + for k, v in enumerate('abcd'): + yield k, v + + def test_init_with_generator(self): + b = benedict(self.get_dict_generator()) + self.assertEqual(b, {0: 'a', 1: 'b', 2: 'c', 3: 'd'}) + self.assertEqual(b.to_json(), '{"0": "a", "1": "b", "2": "c", "3": "d"}') + # recast benedict to dict and back to benedict + b = benedict(self.get_dict_generator()) + d = dict(b) + b = benedict(d) + self.assertEqual(b, {0: 'a', 1: 'b', 2: 'c', 3: 'd'}) + self.assertEqual(b.to_json(), '{"0": "a", "1": "b", "2": "c", "3": "d"}')