Skip to content

Commit 7ae3459

Browse files
committed
[fix] bug with Datastore.add, it may partially update groups before throwing error
1 parent 1d82e3e commit 7ae3459

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

src/oqd_dataschema/datastore.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -194,19 +194,21 @@ def __iter__(self):
194194
"""Overloads iter to iterate over elements in groups."""
195195
return self.groups.items().__iter__()
196196

197-
def add(self, **groups):
198-
"""Adds a new groups to the datastore."""
199-
for k, v in groups.items():
200-
if k in self.groups.keys():
201-
raise ValueError(
202-
"Key already exist in the datastore, use `update` instead if intending to overwrite past data."
203-
)
204-
self.groups[k] = v
205-
206197
def update(self, **groups):
207198
"""Updates groups in the datastore, overwriting past values."""
208199
for k, v in groups.items():
209200
self.groups[k] = v
210201

202+
def add(self, **groups):
203+
"""Adds a new groups to the datastore."""
204+
205+
existing_keys = set(groups.keys()).intersection(set(self.groups.keys()))
206+
if existing_keys:
207+
raise ValueError(
208+
f"Keys {existing_keys} already exist in the datastore, use `update` instead if intending to overwrite past data."
209+
)
210+
211+
self.update(**groups)
212+
211213

212214
# %%

0 commit comments

Comments
 (0)