From a13e45d548684d1e25fda6020cb2337780cd10b4 Mon Sep 17 00:00:00 2001 From: Aman Karmani Date: Thu, 10 Aug 2023 03:56:50 +0000 Subject: [PATCH] fix DefaultDict.__or__ --- src/axolotl/utils/dict.py | 3 +++ tests/test_dict.py | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/src/axolotl/utils/dict.py b/src/axolotl/utils/dict.py index 375baf0ea..69567c604 100644 --- a/src/axolotl/utils/dict.py +++ b/src/axolotl/utils/dict.py @@ -10,3 +10,6 @@ class DictDefault(Dict): def __missing__(self, key): return None + + def __or__(self, other): + return DictDefault(super().__or__(other)) diff --git a/tests/test_dict.py b/tests/test_dict.py index 4852707fb..8367e7c2a 100644 --- a/tests/test_dict.py +++ b/tests/test_dict.py @@ -72,6 +72,13 @@ class DictDefaultTest(unittest.TestCase): assert cfg.random_key is None, "DictDefault should return None for missing keys" + def test_dict_or(self): + cfg = DictDefault({}) | DictDefault({}) + + assert ( + cfg.random_key is None + ), "DictDefault should return None for missing keys after | operation" + def test_dict_nested_missingparentkey(self): """ Due to subclassing Dict, DictDefault will error if we try to access a nested key whose parent key does not exist.