Commit 59d127e4 authored by Anton Baklanov's avatar Anton Baklanov Committed by Claude Paroz
Browse files

Fixed #20276 -- Implemented __bool__ for MergeDict

MergeDict evaluates now to False if all contained dicts are empty.
Thanks til for the report and the initial patch.
parent bfe25de4
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -14,6 +14,12 @@ class MergeDict(object):
    def __init__(self, *dicts):
        self.dicts = dicts

    def __bool__(self):
        return any(self.dicts)

    def __nonzero__(self):
        return type(self).__bool__(self)

    def __getitem__(self, key):
        for dict_ in self.dicts:
            try:
+7 −0
Original line number Diff line number Diff line
@@ -203,6 +203,13 @@ class MergeDictTests(SimpleTestCase):
                           ('key2', ['value2', 'value3']),
                           ('key4', ['value5', 'value6'])])

    def test_bool_casting(self):
        empty = MergeDict({}, {}, {})
        not_empty = MergeDict({}, {}, {"key": "value"})
        self.assertFalse(empty)
        self.assertTrue(not_empty)


class MultiValueDictTests(SimpleTestCase):

    def test_multivaluedict(self):