File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff 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.
You can’t perform that action at this time.
0 commit comments