Skip to content

Commit

Permalink
Fix bug with union types in config merges
Browse files Browse the repository at this point in the history
  • Loading branch information
skizzerz committed Feb 18, 2024
1 parent f2fa0cf commit 46fd64d
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -556,7 +556,7 @@ def merge(metadata: dict[str, Any], base, settings, *path: str,
assert t is not None
try:
return merge(metadata, base, settings, *path, type_override=t)
except TypeError as e2:
except (TypeError, AssertionError) as e2:
e2.__cause__ = e1
e1 = e2
else:
Expand Down
9 changes: 9 additions & 0 deletions test/test_config_merge.py
Original file line number Diff line number Diff line change
Expand Up @@ -535,3 +535,12 @@ def test_constructors(self):
self.assertRaises(TypeError, merge, metadata, Empty, None)
with self.subTest("poorly-specified constructor (metadata issue)"):
self.assertRaises(TypeError, merge, metadata, Empty, 4)

def test_default_multitype(self):
metadata = {"_type": ["int", "float"], "_default": None}
with self.subTest("first"):
metadata["_default"] = 3
self.assertEqual(merge(metadata, Empty, Empty), 3)
with self.subTest("second"):
metadata["_default"] = 2.7
self.assertEqual(merge(metadata, Empty, Empty), 2.7)

0 comments on commit 46fd64d

Please sign in to comment.