Skip to content

Commit 9a4ffd9

Browse files
committed
dont save same people
1 parent b0c4387 commit 9a4ffd9

1 file changed

Lines changed: 21 additions & 5 deletions

File tree

src/somesy/core/writer.py

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -251,11 +251,27 @@ def _sync_person_list(
251251
252252
"""
253253
old_people: List[Union[Person, Entity]] = self._parse_people(old)
254-
if old_people is None or len(old_people) == 0:
255-
return new
256-
if new is None or len(new) == 0:
257-
return old_people
258-
return self._merge_person_metadata(old_people, new)
254+
255+
# check if people are unique
256+
def filter_unique(
257+
people: List[Union[Person, Entity]],
258+
) -> List[Union[Person, Entity]]:
259+
"""Filter out duplicate people from a list."""
260+
if people is None or len(people) == 0:
261+
return []
262+
263+
unique_people: List[Union[Person, Entity]] = []
264+
# use same_person method to check if people are unique
265+
for person in people:
266+
if not any(person.same_person(p) for p in unique_people):
267+
unique_people.append(person)
268+
269+
return unique_people
270+
271+
old_people_unique = filter_unique(old_people)
272+
new_people_unique = filter_unique(new)
273+
274+
return self._merge_person_metadata(old_people_unique, new_people_unique)
259275

260276
def _sync_authors(self, metadata: ProjectMetadata) -> None:
261277
"""Sync output file authors with authors from metadata.

0 commit comments

Comments
 (0)