Skip to content

Commit 0935046

Browse files
authored
Merge pull request #626 from gerlero/backport
Backport data normalization edge-case fix
2 parents a6a2a56 + 1c4b19b commit 0935046

File tree

1 file changed

+12
-13
lines changed

1 file changed

+12
-13
lines changed

src/foamlib/_files/_serialization.py

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -59,21 +59,20 @@ def normalize(
5959
items = ((normalize(k, bool_ok=False), normalize(v)) for k, v in data.items())
6060
if keywords is None:
6161
return as_dict_check_unique(items)
62-
ret1: SubDict = MultiDict(items)
62+
md: SubDict = MultiDict(items)
6363
seen = set()
64-
for k, v in ret1.items():
64+
for k, v in md.items():
6565
if k.startswith("#"):
6666
if isinstance(v, Mapping):
6767
msg = f"Directive {k} cannot have a dictionary as value"
6868
raise ValueError(msg)
69-
else:
70-
if k in seen:
71-
msg = (
72-
f"Duplicate keyword {k} in dictionary with keywords {keywords}"
73-
)
74-
raise ValueError(msg)
75-
seen.add(k)
76-
return ret1
69+
elif k in seen:
70+
msg = f"Duplicate keyword {k} in dictionary with keywords {keywords}"
71+
raise ValueError(msg)
72+
seen.add(k)
73+
if len(md) == len(seen):
74+
return dict(md)
75+
return md
7776

7877
if keywords == () and is_sequence(data) and not isinstance(data, tuple):
7978
try:
@@ -120,9 +119,9 @@ def normalize(
120119
return normalize(data)
121120

122121
if isinstance(data, np.ndarray):
123-
ret2 = data.tolist()
124-
assert isinstance(ret2, (int, float, list))
125-
return ret2
122+
ret = data.tolist()
123+
assert isinstance(ret, (int, float, list))
124+
return ret
126125

127126
if (
128127
not isinstance(data, DimensionSet)

0 commit comments

Comments
 (0)