From 2604ee39fa248eed6b3068db0732b95a1b623ac9 Mon Sep 17 00:00:00 2001 From: Gerald Britton Date: Tue, 25 May 2010 18:31:31 +0000 Subject: [PATCH] Use itertools ifilter and imap to simplify some operations svn: r15480 --- src/gen/proxy/filter.py | 37 +++++++++++++++++++++++++++++++------ src/gen/proxy/living.py | 14 +++++++------- 2 files changed, 38 insertions(+), 13 deletions(-) diff --git a/src/gen/proxy/filter.py b/src/gen/proxy/filter.py index 06243ccd2..6e1192985 100644 --- a/src/gen/proxy/filter.py +++ b/src/gen/proxy/filter.py @@ -25,6 +25,14 @@ """ Proxy class for the GRAMPS databases. Apply filter """ + +#------------------------------------------------------------------------- +# +# Python libraries +# +#------------------------------------------------------------------------- +from itertools import imap + #------------------------------------------------------------------------- # # GRAMPS libraries @@ -313,8 +321,7 @@ class FilterProxyDb(ProxyDbBase): """ Return an iterator over objects for Persons in the database """ - for handle in self.plist: - yield self.get_person_from_handle(handle) + return imap(self.get_person_from_handle, self.plist) def get_event_handles(self): """ @@ -325,10 +332,16 @@ class FilterProxyDb(ProxyDbBase): def iter_event_handles(self): """ - Return an iterator over database handles, one handle for each Person in + Return an iterator over database handles, one handle for each Event in the database. """ - return self.elist + return self.elist + + def iter_events(self): + """ + Return an iterator over objects for Events in the database + """ + return imap(self.get_event_from_handle, self.elist) def get_family_handles(self): """ @@ -339,11 +352,17 @@ class FilterProxyDb(ProxyDbBase): def iter_family_handles(self): """ - Return an iterator over database handles, one handle for each Person in + Return an iterator over database handles, one handle for each Family in the database. """ return self.flist + def iter_families(self): + """ + Return an iterator over objects for Families in the database + """ + return imap(self.get_family_from_handle, self.flist) + def get_note_handles(self): """ Return a list of database handles, one handle for each Note in @@ -353,11 +372,17 @@ class FilterProxyDb(ProxyDbBase): def iter_note_handles(self): """ - Return an iterator over database handles, one handle for each Person in + Return an iterator over database handles, one handle for each Note in the database. """ return self.nlist + def iter_notes(self): + """ + Return an iterator over objects for Notes in the database + """ + return imap(self.get_note_from_handle, self.nlist) + def get_default_person(self): """returns the default Person of the database""" person = self.db.get_default_person() diff --git a/src/gen/proxy/living.py b/src/gen/proxy/living.py index fd99452a1..04cefa223 100644 --- a/src/gen/proxy/living.py +++ b/src/gen/proxy/living.py @@ -29,6 +29,7 @@ Proxy class for the GRAMPS databases. Filter out all living people. # Python libraries # #------------------------------------------------------------------------- +from itertools import ifilter #------------------------------------------------------------------------- # @@ -110,13 +111,12 @@ class LivingProxyDb(ProxyDbBase): """ Protected version of iter_people """ - for person in self.db.iter_people(): - if person and self.__is_living(person): - if self.mode == self.MODE_EXCLUDE_ALL: - person = None - else: - person = self.__restrict_person(person) - if person: + for person in ifilter(None, self.db.iter_people()): + if not(self.__is_living(person) and + self.mode == self.MODE_EXCLUDE_ALL): + + yield self.__restrict_person(person) + else: yield person def get_person_from_gramps_id(self, val):