diff --git a/src/Filters/Rules/Person/_DeepRelationshipPathBetween.py b/src/Filters/Rules/Person/_DeepRelationshipPathBetween.py
index 7b50157b1..7d591d00a 100644
--- a/src/Filters/Rules/Person/_DeepRelationshipPathBetween.py
+++ b/src/Filters/Rules/Person/_DeepRelationshipPathBetween.py
@@ -143,8 +143,7 @@ class DeepRelationshipPathBetween(Rule):
progress = None
self.__matches = set()
- for path in paths:
- self.__matches.update(path)
+ map(self.__matches.update, paths)
def reset(self):
self.__matches = set()
diff --git a/src/Filters/SideBar/_PersonSidebarFilter.py b/src/Filters/SideBar/_PersonSidebarFilter.py
index ecbfd613a..4855bf873 100644
--- a/src/Filters/SideBar/_PersonSidebarFilter.py
+++ b/src/Filters/SideBar/_PersonSidebarFilter.py
@@ -94,8 +94,8 @@ class PersonSidebarFilter(SidebarFilter):
self.filter_note = gtk.Entry()
self.filter_gender = gtk.combo_box_new_text()
- for i in [ _('any'), _('male'), _('female'), _('unknown') ]:
- self.filter_gender.append_text(i)
+ map(self.filter_gender.append_text,
+ [ _('any'), _('male'), _('female'), _('unknown') ])
self.filter_gender.set_active(0)
self.filter_regex = gtk.CheckButton(_('Use regular expressions'))
diff --git a/src/GrampsCfg.py b/src/GrampsCfg.py
index c0fe345c3..8feeb0fa7 100644
--- a/src/GrampsCfg.py
+++ b/src/GrampsCfg.py
@@ -675,8 +675,7 @@ class GrampsPreferences(ManagedWindow.ManagedWindow):
# Date format:
obox = gtk.combo_box_new_text()
formats = DateHandler.get_date_formats()
- for item in formats:
- obox.append_text(item)
+ map(obox.append_text, formats)
active = config.get('preferences.date-format')
if active >= len(formats):
active = 0
@@ -689,8 +688,7 @@ class GrampsPreferences(ManagedWindow.ManagedWindow):
# Calendar format on report:
obox = gtk.combo_box_new_text()
- for item in gen.lib.Date.ui_calendar_names:
- obox.append_text(item)
+ map(obox.append_text, gen.lib.Date.ui_calendar_names)
active = config.get('preferences.calendar-format-report')
if active >= len(formats):
active = 0
@@ -704,8 +702,7 @@ class GrampsPreferences(ManagedWindow.ManagedWindow):
# Surname guessing:
obox = gtk.combo_box_new_text()
formats = _surname_styles
- for item in formats:
- obox.append_text(item)
+ map(obox.append_text, formats)
obox.set_active(config.get('behavior.surname-guessing'))
obox.connect('changed',
lambda obj: config.set('behavior.surname-guessing',
@@ -719,8 +716,7 @@ class GrampsPreferences(ManagedWindow.ManagedWindow):
obox = gtk.combo_box_new_text()
formats = [_("Active person's name and ID"),
_("Relationship to home person")]
- for item in formats:
- obox.append_text(item)
+ map(obox.append_text, formats)
active = config.get('interface.statusbar')
if active < 2:
obox.set_active(0)
diff --git a/src/Merge/_MergePerson.py b/src/Merge/_MergePerson.py
index af353608d..dab4a8bd6 100644
--- a/src/Merge/_MergePerson.py
+++ b/src/Merge/_MergePerson.py
@@ -457,10 +457,8 @@ class MergePeople(object):
self.p2.get_source_references())
# media
- for photo in self.p1.get_media_list():
- new.add_media_reference(photo)
- for photo in self.p2.get_media_list():
- new.add_media_reference(photo)
+ map(new.add_media_reference, self.p1.get_media_list())
+ map(new.add_media_reference, self.p2.get_media_list())
# note
new.set_note_list(self.p1.get_note_list() +
@@ -847,8 +845,7 @@ class MergePeople(object):
# merge family attributes
- for xdata in src_family.get_attribute_list():
- tgt_family.add_attribute(xdata)
+ map(tgt_family.add_attribute, src_family.get_attribute_list())
# merge family notes
tgt_family.set_note_list(tgt_family.get_note_list() +
@@ -860,8 +857,7 @@ class MergePeople(object):
# merge multimedia objects
- for photo in src_family.get_media_list():
- tgt_family.add_media_reference(photo)
+ map(tgt_family.add_media_reference, src_family.get_media_list())
def adjust_family_pointers(self, tgt_family, src_family, trans):
"""
diff --git a/src/Merge/_MergePlace.py b/src/Merge/_MergePlace.py
index dbb84bd43..0eb17807f 100644
--- a/src/Merge/_MergePlace.py
+++ b/src/Merge/_MergePlace.py
@@ -124,16 +124,13 @@ class MergePlaces(ManagedWindow.ManagedWindow):
self.p1.set_latitude(self.p2.get_latitude())
# Add URLs from P2 to P1
- for url in self.p2.get_url_list():
- self.p1.add_url(url)
+ map(self.p1.add_url, self.p2.get_url_list())
# Copy photos from P2 to P1
- for photo in self.p2.get_media_list():
- self.p1.add_media_reference(photo)
+ map(self.p1.add_media_reference, self.p2.get_media_list())
# Copy sources from P2 to P1
- for source in self.p2.get_source_references():
- self.p1.add_source_reference(source)
+ map(self.p1.add_source_reference, self.p2.get_source_references())
# Add notes from P2 to P1
self.p1.set_note_list(self.p1.get_note_list() +
diff --git a/src/Merge/_MergeSource.py b/src/Merge/_MergeSource.py
index ec567aaaf..80913080f 100644
--- a/src/Merge/_MergeSource.py
+++ b/src/Merge/_MergeSource.py
@@ -144,8 +144,7 @@ class MergeSources(ManagedWindow.ManagedWindow):
self.s1.set_gramps_id(self.s2.get_gramps_id())
# Copy photos from src2 to src1
- for photo in self.s2.get_media_list():
- self.s1.add_media_reference(photo)
+ map(self.s1.add_media_reference, self.s2.get_media_list())
# Add notes from S2 to S1
self.s1.set_note_list(self.s1.get_note_list() + self.s2.get_note_list())
diff --git a/src/Relationship.py b/src/Relationship.py
index 87811b1be..2300bd29c 100644
--- a/src/Relationship.py
+++ b/src/Relationship.py
@@ -1750,8 +1750,7 @@ class RelationshipCalculator(object):
subscribed
"""
dbstate.disconnect(self.state_signal_key)
- for key in self.signal_keys:
- dbstate.db.disconnect(key)
+ map(dbstate.db.disconnect, self.signal_keys)
self.storemap = False
self.stored_map = None
diff --git a/src/gen/db/base.py b/src/gen/db/base.py
index ee4e12834..111c21502 100644
--- a/src/gen/db/base.py
+++ b/src/gen/db/base.py
@@ -1601,7 +1601,8 @@ class DbWriteBase(object):
self.set_default_person_handle(None)
# loop through the family list
- for family_handle in filter(None, person.get_family_handle_list()):
+ for family_handle in person.get_family_handle_list():
+ if not family_handle: continue
family = self.get_family_from_handle(family_handle)
diff --git a/src/gen/lib/notebase.py b/src/gen/lib/notebase.py
index 06c6c5f87..e7b86189c 100644
--- a/src/gen/lib/notebase.py
+++ b/src/gen/lib/notebase.py
@@ -84,8 +84,7 @@ class NoteBase(object):
"""
if handle in self.note_list:
self.note_list.remove(handle)
- for item in self.get_note_child_list():
- item.remove_note(handle)
+ map(item.remove_note, self.get_note_child_list())
def get_note_child_list(self):
"""
diff --git a/src/gen/utils/callman.py b/src/gen/utils/callman.py
index df4e684f2..e595917f7 100644
--- a/src/gen/utils/callman.py
+++ b/src/gen/utils/callman.py
@@ -140,8 +140,7 @@ class CallbackManager(object):
This method should always be called before a the callback methods
become invalid.
"""
- for key in self.custom_signal_keys:
- self.database.disconnect(key)
+ map(self.database.disconnect, self.custom_signal_keys)
self.custom_signal_keys = []
for key, value in self.__callbacks.iteritems():
if not value[1] is None:
@@ -186,8 +185,7 @@ class CallbackManager(object):
for key in KEYS:
handles = ahandledict.get(key)
if handles:
- for handle in handles:
- self.__handles[key].remove(handle)
+ map(self.__handles[key].remove, handles)
def unregister_all(self):
"""
diff --git a/src/gui/editors/displaytabs/embeddedlist.py b/src/gui/editors/displaytabs/embeddedlist.py
index 221b095a6..1850cbfde 100644
--- a/src/gui/editors/displaytabs/embeddedlist.py
+++ b/src/gui/editors/displaytabs/embeddedlist.py
@@ -414,8 +414,7 @@ class EmbeddedList(ButtonTab):
# remove any existing columns, which would be stored in
# self.columns
- for column in self.columns:
- self.tree.remove_column(column)
+ map(self.tree.remove_column, self.columns)
self.columns = []
# loop through the values returned by column_order
diff --git a/src/gui/editors/displaytabs/nameembedlist.py b/src/gui/editors/displaytabs/nameembedlist.py
index 4111fa07d..40a3af727 100644
--- a/src/gui/editors/displaytabs/nameembedlist.py
+++ b/src/gui/editors/displaytabs/nameembedlist.py
@@ -125,12 +125,8 @@ class NameEmbedList(GroupEmbeddedList):
def set_default_name(self, name):
pname = self.person.get_primary_name()
self.person.set_primary_name(name)
- remove = []
- for altname in self.data:
- if altname.is_equal(name):
- remove.append(altname)
- for altname in remove:
- self.data.remove(altname)
+ remove = [altname for altname in self.data if altname.is_equal(name)]
+ map(self.data.remove, remove)
#only non empty name should move to alternative names
if not name.is_equal(gen.lib.Name()):
self.data.append(pname)
diff --git a/src/gui/editors/editfamily.py b/src/gui/editors/editfamily.py
index 41a04022e..08fe60576 100644
--- a/src/gui/editors/editfamily.py
+++ b/src/gui/editors/editfamily.py
@@ -166,8 +166,7 @@ class ChildEmbedList(EmbeddedList):
self.rebuild()
def build_columns(self):
- for column in self.columns:
- self.tree.remove_column(column)
+ map(self.tree.remove_column, self.columns)
self.columns = []
for pair in self.column_order():
diff --git a/src/gui/editors/editprimary.py b/src/gui/editors/editprimary.py
index 32318e55a..980eaf943 100644
--- a/src/gui/editors/editprimary.py
+++ b/src/gui/editors/editprimary.py
@@ -182,8 +182,9 @@ class EditPrimary(ManagedWindow.ManagedWindow, DbGUIElement):
"""
#cleanup callbackmanager of this editor
self._cleanup_callbacks()
- for tab in [tab for tab in self.__tabs if hasattr(tab, 'callman')]:
- tab._cleanup_callbacks()
+ for tab in self.__tabs:
+ if hasattr(tab, 'callman'):
+ tab._cleanup_callbacks()
def check_for_close(self, handles):
"""
diff --git a/src/gui/editors/objectentries.py b/src/gui/editors/objectentries.py
index 4f64fc968..672cf987f 100644
--- a/src/gui/editors/objectentries.py
+++ b/src/gui/editors/objectentries.py
@@ -212,8 +212,7 @@ class ObjEntry(object):
If True: remove icon and edit icon
"""
if self.add_edt is not None:
- for i in self.add_edt.get_children():
- self.add_edt.remove(i)
+ map(self.add_edt.remove, self.add_edt.get_children())
for i in self.share.get_children():
self.share.remove(i)
diff --git a/src/gui/filtereditor.py b/src/gui/filtereditor.py
index 6c43a2441..a84d6c032 100644
--- a/src/gui/filtereditor.py
+++ b/src/gui/filtereditor.py
@@ -1056,8 +1056,7 @@ class FilterEditor(ManagedWindow.ManagedWindow):
# Remove what we found
filters = self.filterdb.get_filters(space)
- for the_filter in filter_set:
- filters.remove(the_filter)
+ map(filters.remove, filter_set)
def _find_dependent_filters(self, space, gfilter, filter_set):
"""
diff --git a/src/gui/pluginmanager.py b/src/gui/pluginmanager.py
index 4d521e467..f15cf2261 100644
--- a/src/gui/pluginmanager.py
+++ b/src/gui/pluginmanager.py
@@ -81,9 +81,7 @@ class GuiPluginManager(gen.utils.Callback):
gen.utils.Callback.__init__(self)
self.basemgr = BasePluginManager.get_instance()
- self.__hidden_plugins = set([])
- for id in config.get('plugin.hiddenplugins'):
- self.__hidden_plugins.add(id)
+ self.__hidden_plugins = set(config.get('plugin.hiddenplugins'))
self.__hidden_changed()
def reload_plugins(self):
diff --git a/src/gui/viewmanager.py b/src/gui/viewmanager.py
index a928fdb9c..6e26c0642 100644
--- a/src/gui/viewmanager.py
+++ b/src/gui/viewmanager.py
@@ -1065,8 +1065,7 @@ class ViewManager(CLIManager):
Disconnects the previous page, removing the old action groups
and removes the old UI components.
"""
- for mergeid in self.merge_ids:
- self.uimanager.remove_ui(mergeid)
+ map(self.uimanager.remove_ui, self.merge_ids)
if self.active_page:
self.active_page.set_inactive()
diff --git a/src/gui/views/listview.py b/src/gui/views/listview.py
index 90af8fb17..f58ef2fed 100644
--- a/src/gui/views/listview.py
+++ b/src/gui/views/listview.py
@@ -207,8 +207,7 @@ class ListView(NavigationView):
callback=self.filter_toggle_action)
def build_columns(self):
- for column in self.columns:
- self.list.remove_column(column)
+ map(self.list.remove_column, self.columns)
self.columns = []
@@ -669,8 +668,7 @@ class ListView(NavigationView):
if self.active or \
(not self.dirty and not self._dirty_on_change_inactive):
cput = time.clock()
- for handle in handle_list:
- self.model.add_row_by_handle(handle)
+ map(self.model.add_row_by_handle, handle_list)
_LOG.debug(' ' + self.__class__.__name__ + ' row_add ' +
str(time.clock() - cput) + ' sec')
if self.active:
@@ -689,8 +687,7 @@ class ListView(NavigationView):
if self.active or \
(not self.dirty and not self._dirty_on_change_inactive):
cput = time.clock()
- for handle in handle_list:
- self.model.update_row_by_handle(handle)
+ map(self.model.update_row_by_handle, handle_list)
_LOG.debug(' ' + self.__class__.__name__ + ' row_update ' +
str(time.clock() - cput) + ' sec')
# Ensure row is still selected after a change of postion in tree.
diff --git a/src/plugins/Records.py b/src/plugins/Records.py
index caf908f2f..f70146fca 100644
--- a/src/plugins/Records.py
+++ b/src/plugins/Records.py
@@ -370,10 +370,9 @@ class RecordsReport(Report):
self.callname = menu.get_option_by_name('callname').get_value()
- self.include = {}
- for (text, varname, default) in RECORDS:
- self.include[varname] = menu.get_option_by_name(varname).get_value()
-
+ self.include = dict([varname,
+ menu.get_option_by_name(varname).get_value()]
+ for (_1, varname, _3) in RECORDS)
def write_report(self):
"""
diff --git a/src/plugins/docgen/RTFDoc.py b/src/plugins/docgen/RTFDoc.py
index 705055acd..8110927f2 100644
--- a/src/plugins/docgen/RTFDoc.py
+++ b/src/plugins/docgen/RTFDoc.py
@@ -163,11 +163,11 @@ class RTFDoc(BaseDoc,TextDoc):
else:
self.font_type = '\\f1\\fs%d\\cf%d\\cb%d' % (size,fgindex,bgindex)
if f.get_bold():
- self.font_type = self.font_type + "\\b"
+ self.font_type += "\\b"
if f.get_underline():
- self.font_type = self.font_type + "\\ul"
+ self.font_type += "\\ul"
if f.get_italic():
- self.font_type = self.font_type + "\\i"
+ self.font_type += "\\i"
# build paragraph information
@@ -228,7 +228,7 @@ class RTFDoc(BaseDoc,TextDoc):
else:
if self.text == "":
self.write_text(" ")
- self.text = self.text + '}'
+ self.text += '}'
#--------------------------------------------------------------------
#
@@ -261,10 +261,10 @@ class RTFDoc(BaseDoc,TextDoc):
self.f.write('}')
def start_superscript(self):
- self.text = self.text + '{{\*\updnprop5801}\up10 '
+ self.text += '{{\*\updnprop5801}\up10 '
def end_superscript(self):
- self.text = self.text + '}'
+ self.text += '}'
#--------------------------------------------------------------------
#
@@ -338,10 +338,10 @@ class RTFDoc(BaseDoc,TextDoc):
self.f.write('\\clbrdrr\\brdrs\\brdrw10\n')
table_width = float(self.paper.get_usable_width())
for cell in range(self.cell,self.cell+span):
- self.cell_percent = self.cell_percent + float(self.tbl_style.get_column_width(cell))
+ self.cell_percent += float(self.tbl_style.get_column_width(cell))
cell_width = twips((table_width * self.cell_percent)/100.0)
self.f.write('\\cellx%d\\pard\intbl\n' % cell_width)
- self.cell = self.cell+1
+ self.cell += 1
#--------------------------------------------------------------------
#
@@ -464,12 +464,12 @@ class RTFDoc(BaseDoc,TextDoc):
text = text.replace('\n','\n\\par ')
if self.opened == 0:
self.opened = 1
- self.text = self.text + '{%s ' % self.font_type
+ self.text += '{%s ' % self.font_type
for i in text:
if ord(i) > 127:
- self.text = self.text + '\\\'%2x' % ord(i)
+ self.text += '\\\'%2x' % ord(i)
elif i == '{' or i == '}' :
- self.text = self.text + '\\%s' % i
+ self.text += '\\%s' % i
else:
- self.text = self.text + i
+ self.text += i
diff --git a/src/plugins/drawreport/FanChart.py b/src/plugins/drawreport/FanChart.py
index 31ce7fab8..86c6d393b 100644
--- a/src/plugins/drawreport/FanChart.py
+++ b/src/plugins/drawreport/FanChart.py
@@ -187,17 +187,14 @@ class FanChart(Report):
return
self.map[index-1] = person_handle
- self.text[index-1] = []
-
subst = SubstKeywords(self.database,person_handle)
-
- for line in self.display:
- self.text[index-1].append(subst.replace(line))
+ self.text[index-1] = map(subst.replace, self.display)
style_sheet = self.doc.get_style_sheet()
self.font = style_sheet.get_paragraph_style('text_style').get_font()
for line in self.text[index-1]:
- self.box_width = max(self.box_width,self.doc.string_width(self.font,line))
+ self.box_width = max(self.box_width,
+ self.doc.string_width(self.font,line))
self.lines = max(self.lines,len(self.text[index-1]))
diff --git a/src/plugins/drawreport/StatisticsChart.py b/src/plugins/drawreport/StatisticsChart.py
index 9b0ad9fdc..85120b2bd 100644
--- a/src/plugins/drawreport/StatisticsChart.py
+++ b/src/plugins/drawreport/StatisticsChart.py
@@ -448,10 +448,8 @@ class Extract(object):
def get_event_ages(self, data):
"return ages at given (person,event_handles)"
- ages = []
person, event_handles = data
- for event_handle in event_handles:
- ages.append(self.estimate_age(person, event_handle))
+ ages = [self.estimate_age(person, h) for h in event_handles]
if ages:
return ages
return [_("Events missing")]
@@ -582,9 +580,7 @@ class Extract(object):
def get_event_handles(self, person):
"return list of event handles for given person or None"
- events = []
- for event_ref in person.get_event_ref_list():
- events.append(event_ref.ref)
+ events = [ref.ref for ref in person.get_event_ref_list()]
if events:
return (person, events)
@@ -842,9 +838,7 @@ class StatisticsChart(Report):
pad = row_h * 0.5
# check maximum value
- max_value = 0
- for key in lookup:
- max_value = max(data[key], max_value)
+ max_value = reduce(max, map(data.get, lookup), 0)
# horizontal area for the gfx bars
margin = 1.0
middle = width/2.0
diff --git a/src/plugins/export/ExportCsv.py b/src/plugins/export/ExportCsv.py
index 4033f7c52..472764c1d 100644
--- a/src/plugins/export/ExportCsv.py
+++ b/src/plugins/export/ExportCsv.py
@@ -140,8 +140,7 @@ class UnicodeWriter(object):
self.queue.truncate(0)
def writerows(self, rows):
- for row in rows:
- self.writerow(row)
+ map(self.writerow, rows)
def close(self):
self.stream.close()
@@ -253,8 +252,8 @@ class CSVWriter(object):
if not option_box.cfilter.is_empty():
self.db = gen.proxy.FilterProxyDb(self.db, option_box.cfilter)
- for p in self.db.iter_person_handles():
- self.plist[p] = 1
+ self.plist.update([p, 1] for p in self.db.iter_person_handles())
+
# get the families for which these people are spouses:
self.flist = {}
for key in self.plist:
diff --git a/src/plugins/export/ExportGeneWeb.py b/src/plugins/export/ExportGeneWeb.py
index 480a5ea38..a25b5c671 100644
--- a/src/plugins/export/ExportGeneWeb.py
+++ b/src/plugins/export/ExportGeneWeb.py
@@ -174,8 +174,7 @@ class GeneWebWriter(object):
if not option_box.cfilter.is_empty():
self.db = gen.proxy.FilterProxyDb(self.db, option_box.cfilter)
- for p in self.db.iter_person_handles():
- self.plist[p] = 1
+ self.plist.update([p, 1] for p in self.db.iter_person_handles())
self.flist = {}
for key in self.plist:
diff --git a/src/plugins/export/ExportVCalendar.py b/src/plugins/export/ExportVCalendar.py
index ef5d5e526..704464dc8 100644
--- a/src/plugins/export/ExportVCalendar.py
+++ b/src/plugins/export/ExportVCalendar.py
@@ -144,13 +144,13 @@ class CalendarWriter(object):
self.option_box.parse_options()
if self.option_box.cfilter is None:
- for p in self.db.iter_person_handles():
- self.plist[p] = 1
+ self.plist.udpate([p, 1]
+ for p in self.db.iter_person_handles())
else:
try:
- for p in self.option_box.cfilter.apply(self.db,
- self.db.iter_person_handles()):
- self.plist[p] = 1
+ self.plist.update([p, 1]
+ for p in self.option_box.cfilter.apply(
+ self.db, self.db.iter_person_handles()))
except Errors.FilterError, msg:
(m1, m2) = msg.messages()
ErrorDialog(m1, m2)
diff --git a/src/plugins/export/ExportVCard.py b/src/plugins/export/ExportVCard.py
index 5e2774237..68deefaf1 100644
--- a/src/plugins/export/ExportVCard.py
+++ b/src/plugins/export/ExportVCard.py
@@ -158,8 +158,7 @@ class CardWriter(object):
self.oldval = newval
def cl_setup(self):
- for p in self.db.iter_person_handles():
- self.plist[p] = 1
+ self.plist.update([p, 1] for p in self.db.iter_person_handles())
def writeln(self, text):
#self.g.write('%s\n' % (text.encode('iso-8859-1')))
diff --git a/src/plugins/export/ExportXml.py b/src/plugins/export/ExportXml.py
index d130f247b..e45fd5352 100644
--- a/src/plugins/export/ExportXml.py
+++ b/src/plugins/export/ExportXml.py
@@ -1078,8 +1078,7 @@ class GrampsXmlWriter(UpdateCallback):
self.g.write('%s\n'
% (" "*(index+1), longitude, lat))
self.dump_location(main_loc)
- for loc in place.get_alternate_locations():
- self.dump_location(loc)
+ map(self.dump_location, place.get_alternate_locations())
self.write_media_list(place.get_media_list(), index+1)
self.write_url_list(place.get_url_list())
self.write_note_list(place.get_note_list(), index+1)
diff --git a/src/plugins/gramplet/AgeStats.py b/src/plugins/gramplet/AgeStats.py
index 32bad170a..8d6ec1c48 100644
--- a/src/plugins/gramplet/AgeStats.py
+++ b/src/plugins/gramplet/AgeStats.py
@@ -25,6 +25,7 @@ This Gramplet shows textual distributions of age breakdowns of various types.
"""
import locale
+from collections import defaultdict
from gen.plug import Gramplet
from gen.ggettext import gettext as _
@@ -80,9 +81,9 @@ class AgeStatsGramplet(Gramplet):
def main(self):
self.clear_text()
- age_dict = {}
- mother_dict = {}
- father_dict = {}
+ age_dict = defaultdict(int)
+ mother_dict = defaultdict(int)
+ father_dict = defaultdict(int)
age_handles = [[]] * self.max_age
mother_handles = [[]] * self.max_mother_diff
father_handles = [[]] * self.max_father_diff
@@ -105,7 +106,7 @@ class AgeStatsGramplet(Gramplet):
if death_date and birth_date and birth_date.get_year() != 0:
age = death_date.get_year() - birth_date.get_year()
if age >= 0 and age < self.max_age:
- age_dict[age] = age_dict.get(age, 0) + 1
+ age_dict[age] += 1
age_handles[age].append(p.handle)
#else:
# print "Age out of range: %d for %s" % (age,
@@ -138,7 +139,7 @@ class AgeStatsGramplet(Gramplet):
if bdate and birth_date and birth_date.get_year() != 0:
diff = birth_date.get_year() - bdate.get_year()
if diff >= 0 and diff < self.max_father_diff:
- father_dict[diff] = father_dict.get(diff, 0) + 1
+ father_dict[diff] += 1
father_handles[diff].append(f_handle)
#else:
# print "Father diff out of range: %d for %s" % (diff,
@@ -153,7 +154,7 @@ class AgeStatsGramplet(Gramplet):
if bdate and birth_date and birth_date.get_year() != 0:
diff = birth_date.get_year() - bdate.get_year()
if diff >= 0 and diff < self.max_mother_diff:
- mother_dict[diff] = mother_dict.get(diff, 0) + 1
+ mother_dict[diff] += 1
mother_handles[diff].append(m_handle)
#else:
# print "Mother diff out of range: %d for %s" % (diff,
diff --git a/src/plugins/gramplet/GivenNameGramplet.py b/src/plugins/gramplet/GivenNameGramplet.py
index 0f4365943..df1d50683 100644
--- a/src/plugins/gramplet/GivenNameGramplet.py
+++ b/src/plugins/gramplet/GivenNameGramplet.py
@@ -20,6 +20,7 @@
# $Id$
#
#
+from collections import defaultdict
from gen.ggettext import gettext as _
from gen.plug import Gramplet
@@ -58,7 +59,7 @@ class GivenNameCloudGramplet(Gramplet):
def main(self):
self.set_text(_("Processing...") + "\n")
yield True
- givensubnames = {}
+ givensubnames = defaultdict(int)
representative_handle = {}
cnt = 0
@@ -67,7 +68,7 @@ class GivenNameCloudGramplet(Gramplet):
allnames = set(name.get_first_name().strip() for name in allnames)
for givenname in allnames:
for givensubname in givenname.split():
- givensubnames[givensubname] = givensubnames.get(givensubname, 0) + 1
+ givensubnames[givensubname] += 1
representative_handle[givensubname] = person.handle
cnt += 1
if not cnt % _YIELD_INTERVAL:
@@ -98,9 +99,9 @@ class GivenNameCloudGramplet(Gramplet):
line = 0
### All done!
# Now, find out how many we can display without going over top_size:
- totals = {}
+ totals = defaultdict(int)
for (count, givensubname) in cloud_names: # givensubname_sort:
- totals[count] = totals.get(count, 0) + 1
+ totals[count] += 1
sums = sorted(totals, reverse=True)
total = 0
include_greater_than = 0
diff --git a/src/plugins/gramplet/PluginManagerGramplet.py b/src/plugins/gramplet/PluginManagerGramplet.py
index 4af137eae..44e068ead 100644
--- a/src/plugins/gramplet/PluginManagerGramplet.py
+++ b/src/plugins/gramplet/PluginManagerGramplet.py
@@ -74,10 +74,10 @@ class PluginManagerGramplet(Gramplet):
row.append(line[1:].strip())
else:
state = "read"
- types = {}
- for row in rows:
- types[row[1]] = 1
+
+ types = dict([row[1], 1] for row in rows)
self.set_text("")
+
# name, type, ver, desc, use, rating, contact, download
for type in types:
self.render_text("%s Plugins\n" % _(type))
diff --git a/src/plugins/gramplet/SurnameCloudGramplet.py b/src/plugins/gramplet/SurnameCloudGramplet.py
index 5220146b0..21e375535 100644
--- a/src/plugins/gramplet/SurnameCloudGramplet.py
+++ b/src/plugins/gramplet/SurnameCloudGramplet.py
@@ -18,6 +18,8 @@
# $Id$
+from collections import defaultdict
+
#------------------------------------------------------------------------
#
# GRAMPS modules
@@ -78,7 +80,7 @@ class SurnameCloudGramplet(Gramplet):
def main(self):
self.set_text(_("Processing...") + "\n")
yield True
- surnames = {}
+ surnames = defaultdict(int)
representative_handle = {}
cnt = 0
@@ -86,7 +88,7 @@ class SurnameCloudGramplet(Gramplet):
allnames = [person.get_primary_name()] + person.get_alternate_names()
allnames = set([name.get_group_name().strip() for name in allnames])
for surname in allnames:
- surnames[surname] = surnames.get(surname, 0) + 1
+ surnames[surname] += 1
representative_handle[surname] = person.handle
cnt += 1
if not cnt % _YIELD_INTERVAL:
@@ -116,9 +118,9 @@ class SurnameCloudGramplet(Gramplet):
line = 0
### All done!
# Now, find out how many we can display without going over top_size:
- totals = {}
+ totals = defaultdict(int)
for (count, givensubname) in cloud_names: # givensubname_sort:
- totals[count] = totals.get(count, 0) + 1
+ totals[count] += 1
sums = sorted(totals, reverse=True)
total = 0
include_greater_than = 0
diff --git a/src/plugins/gramplet/TopSurnamesGramplet.py b/src/plugins/gramplet/TopSurnamesGramplet.py
index c082b544d..54f25df48 100644
--- a/src/plugins/gramplet/TopSurnamesGramplet.py
+++ b/src/plugins/gramplet/TopSurnamesGramplet.py
@@ -18,6 +18,8 @@
# $Id$
+from collections import defaultdict
+
#------------------------------------------------------------------------
#
# GRAMPS modules
@@ -62,7 +64,7 @@ class TopSurnamesGramplet(Gramplet):
def main(self):
self.set_text(_("Processing...") + "\n")
- surnames = {}
+ surnames = defaultdict(int)
representative_handle = {}
cnt = 0
@@ -70,7 +72,7 @@ class TopSurnamesGramplet(Gramplet):
allnames = [person.get_primary_name()] + person.get_alternate_names()
allnames = set([name.get_group_name().strip() for name in allnames])
for surname in allnames:
- surnames[surname] = surnames.get(surname, 0) + 1
+ surnames[surname] += 1
representative_handle[surname] = person.handle
cnt += 1
if not cnt % _YIELD_INTERVAL:
diff --git a/src/plugins/import/ImportCsv.py b/src/plugins/import/ImportCsv.py
index 10b12caaf..98d57bb10 100644
--- a/src/plugins/import/ImportCsv.py
+++ b/src/plugins/import/ImportCsv.py
@@ -124,8 +124,7 @@ class UnicodeWriter(object):
self.queue.truncate(0)
def writerows(self, rows):
- for row in rows:
- self.writerow(row)
+ map(self.writerow, rows)
def close(self):
self.stream.close()
diff --git a/src/plugins/lib/libcairodoc.py b/src/plugins/lib/libcairodoc.py
index 51019bdf6..bbd705fed 100644
--- a/src/plugins/lib/libcairodoc.py
+++ b/src/plugins/lib/libcairodoc.py
@@ -681,8 +681,7 @@ class GtkDocTable(GtkDocBaseElement):
new_table = GtkDocTable(self._style)
#add the split row
new_table.add_child(r2)
- for row in self._children[row_index+1:]:
- new_table.add_child(row)
+ map(new_table.add_child, self._children[row_index+1:])
del self._children[row_index+1:]
return (self, new_table), table_height
@@ -1253,9 +1252,8 @@ class CairoDoc(BaseDoc, TextDoc, DrawDoc):
# we need to remember the column width list from the table style.
# this is an ugly hack, but got no better idea.
- self._active_row_style = []
- for i in range(style.get_columns()):
- self._active_row_style.append(style.get_column_width(i))
+ self._active_row_style = map(style.get_column_width,
+ range(style.get_columns()))
def end_table(self):
self._active_element = self._active_element.get_parent()
diff --git a/src/plugins/lib/libgedcom.py b/src/plugins/lib/libgedcom.py
index 86b33f3bb..276934b3f 100644
--- a/src/plugins/lib/libgedcom.py
+++ b/src/plugins/lib/libgedcom.py
@@ -2188,9 +2188,7 @@ class GedcomParser(UpdateCallback):
amap = personalConstantAttributes
self.attrs = amap.values()
- self.gedattr = {}
- for val, key in amap.iteritems():
- self.gedattr[key] = val
+ self.gedattr = dict([key, val] for val, key in amap.iteritems())
self.search_paths = []
def parse_gedcom_file(self, use_trans=False):
@@ -4294,8 +4292,7 @@ class GedcomParser(UpdateCallback):
place_handle = place.handle
place.set_main_location(location)
- for note in note_list:
- place.add_note(note)
+ map(place.add_note, note_list)
state.event.set_place_handle(place_handle)
self.dbase.commit_place(place, self.trans)
diff --git a/src/plugins/lib/libgrdb.py b/src/plugins/lib/libgrdb.py
index 81fa631b8..27019a5d7 100644
--- a/src/plugins/lib/libgrdb.py
+++ b/src/plugins/lib/libgrdb.py
@@ -1715,8 +1715,7 @@ class DbGrdb(Callback):
self.emit(objtype + '-delete', (del_list, ))
def __do_del(self, del_list, func):
- for handle in del_list:
- func(handle)
+ map(func, del_list)
return del_list
def do_commit(self, add_list, db_map):
diff --git a/src/plugins/quickview/FilterByName.py b/src/plugins/quickview/FilterByName.py
index 96546350f..278e6af62 100644
--- a/src/plugins/quickview/FilterByName.py
+++ b/src/plugins/quickview/FilterByName.py
@@ -34,6 +34,7 @@ from gen.lib import Person
import DateHandler
import posixpath
+from collections import defaultdict
from gen.ggettext import sgettext as _
from gen.ggettext import ngettext
@@ -133,12 +134,12 @@ def run(database, document, filter_name, *args, **kwargs):
stab.row(family)
matches += 1
elif (filter_name == 'unique surnames'):
- namelist = {}
+ namelist = defaultdict(int)
for person in database.iter_people():
names = [person.get_primary_name()] + person.get_alternate_names()
surnames = list(set([name.get_group_name() for name in names]))
for surname in surnames:
- namelist[surname] = namelist.get(surname, 0) + 1
+ namelist[surname] += 1
stab.columns(_("Surname"), _("Count"))
for name in sorted(namelist):
stab.row(name, namelist[name])
diff --git a/src/plugins/quickview/all_relations.py b/src/plugins/quickview/all_relations.py
index 400e40042..63d94b852 100644
--- a/src/plugins/quickview/all_relations.py
+++ b/src/plugins/quickview/all_relations.py
@@ -315,7 +315,7 @@ class AllRelReport():
if isinstance(fam, list):
famstr = str(fam[0]+1)
for val in fam[1:] :
- famstr = famstr + ', ' + str(val+1)
+ famstr += ', ' + str(val+1)
else:
famstr = str(fam+1)
sdoc.paragraph(_FMT_DET2 % (' ', par_str, birth_str, famstr))
@@ -335,7 +335,6 @@ class AllRelReport():
sdoc.paragraph("")
sdoc.paragraph(_("The following problems were encountered:"))
- for msg in msg_list :
- sdoc.paragraph(msg)
+ map(sdoc.paragraph, msg_list)
sdoc.paragraph("")
sdoc.paragraph("")
diff --git a/src/plugins/textreport/EndOfLineReport.py b/src/plugins/textreport/EndOfLineReport.py
index f24541a1f..b5f4ffa0b 100644
--- a/src/plugins/textreport/EndOfLineReport.py
+++ b/src/plugins/textreport/EndOfLineReport.py
@@ -149,8 +149,7 @@ class EndOfLineReport(Report):
self.write_generation_row(generation)
for person_handle, pedigrees in handles.iteritems():
self.write_person_row(person_handle)
- for pedigree in pedigrees:
- self.write_pedigree_row(pedigree)
+ map(self.write_pedigree_row, pedigrees)
self.doc.end_table()
def write_generation_row(self, generation):
diff --git a/src/plugins/textreport/KinshipReport.py b/src/plugins/textreport/KinshipReport.py
index 9181c719a..fc4a9ce27 100644
--- a/src/plugins/textreport/KinshipReport.py
+++ b/src/plugins/textreport/KinshipReport.py
@@ -274,8 +274,7 @@ class KinshipReport(Report):
mark = IndexMark(cap_title, INDEX_TYPE_TOC, 2)
self.doc.write_text(subtitle, mark)
self.doc.end_paragraph()
- for person_handle in people_handles:
- self.write_person(person_handle)
+ map(self.write_person, people_handles)
def write_person(self, person_handle):
"""
diff --git a/src/plugins/tool/Check.py b/src/plugins/tool/Check.py
index 64404f4db..e43d5c8f2 100644
--- a/src/plugins/tool/Check.py
+++ b/src/plugins/tool/Check.py
@@ -1301,9 +1301,8 @@ class CheckIntegrity(object):
bad_handles = [ item[1] for item in handle_list
if item[0] == 'Note' and
item[1] not in known_handles ]
- for bad_handle in bad_handles:
- person.remove_note(bad_handle)
if bad_handles:
+ map(person.remove_note, bad_handles)
self.db.commit_person(person, self.trans)
new_bad_handles = [handle for handle in bad_handles if handle
not in self.invalid_note_references]
@@ -1318,9 +1317,8 @@ class CheckIntegrity(object):
bad_handles = [ item[1] for item in handle_list
if item[0] == 'Note' and
item[1] not in known_handles ]
- for bad_handle in bad_handles:
- family.remove_note(bad_handle)
if bad_handles:
+ map(family.remove_note, bad_handles)
self.db.commit_family(family, self.trans)
new_bad_handles = [handle for handle in bad_handles if handle
not in self.invalid_note_references]
@@ -1335,9 +1333,8 @@ class CheckIntegrity(object):
bad_handles = [ item[1] for item in handle_list
if item[0] == 'Note' and
item[1] not in known_handles ]
- for bad_handle in bad_handles:
- place.remove_note(bad_handle)
if bad_handles:
+ map(place.remove_note, bad_handles)
self.db.commit_place(place, self.trans)
new_bad_handles = [handle for handle in bad_handles if handle
not in self.invalid_note_references]
@@ -1355,6 +1352,7 @@ class CheckIntegrity(object):
for bad_handle in bad_handles:
source.remove_note(bad_handle)
if bad_handles:
+ map(source.remove_note, bad_handles)
self.db.commit_source(source, self.trans)
new_bad_handles = [handle for handle in bad_handles if handle
not in self.invalid_note_references]
@@ -1369,9 +1367,8 @@ class CheckIntegrity(object):
bad_handles = [ item[1] for item in handle_list
if item[0] == 'Note' and
item[1] not in known_handles ]
- for bad_handle in bad_handles:
- obj.remove_note(bad_handle)
if bad_handles:
+ map(obj.remove_note, bad_handles)
self.db.commit_media_object(obj, self.trans)
new_bad_handles = [handle for handle in bad_handles if handle
not in self.invalid_note_references]
@@ -1386,9 +1383,8 @@ class CheckIntegrity(object):
bad_handles = [ item[1] for item in handle_list
if item[0] == 'Note' and
item[1] not in known_handles ]
- for bad_handle in bad_handles:
- event.remove_note(bad_handle)
if bad_handles:
+ map(event.remove_note, bad_handles)
self.db.commit_event(event, self.trans)
new_bad_handles = [handle for handle in bad_handles if handle
not in self.invalid_note_references]
@@ -1403,9 +1399,8 @@ class CheckIntegrity(object):
bad_handles = [ item[1] for item in handle_list
if item[0] == 'Note' and
item[1] not in known_handles ]
- for bad_handle in bad_handles:
- repo.remove_note(bad_handle)
if bad_handles:
+ map(repo.remove_note, bad_handles)
self.db.commit_repository(repo, self.trans)
new_bad_handles = [handle for handle in bad_handles if handle
not in self.invalid_note_references]
diff --git a/src/plugins/tool/EventCmp.py b/src/plugins/tool/EventCmp.py
index bac13b119..98ca1d97c 100644
--- a/src/plugins/tool/EventCmp.py
+++ b/src/plugins/tool/EventCmp.py
@@ -103,10 +103,9 @@ class TableReport(object):
def set_row(self,val):
self.row = val + 2
- def write_table_head(self,data):
+ def write_table_head(self, data):
self.doc.start_row()
- for item in data:
- self.doc.write_cell(item)
+ map(self.doc.write_cell, data)
self.doc.end_row()
#------------------------------------------------------------------------
diff --git a/src/plugins/tool/PHPGedViewConnector.py b/src/plugins/tool/PHPGedViewConnector.py
index fe2801444..b5472fa25 100644
--- a/src/plugins/tool/PHPGedViewConnector.py
+++ b/src/plugins/tool/PHPGedViewConnector.py
@@ -129,8 +129,7 @@ class PHPGedViewConnector(object):
result = []
types = []
if type == self.TYPE_ALL:
- for entry in self.type_trans:
- types.append(entry)
+ types.extend(self.type_trans)
else:
types.append(type)
for entry in types:
diff --git a/src/plugins/view/familyview.py b/src/plugins/view/familyview.py
index 862624ba3..fe986999f 100644
--- a/src/plugins/view/familyview.py
+++ b/src/plugins/view/familyview.py
@@ -225,8 +225,8 @@ class FamilyView(ListView):
_('_Delete Item'), _('Cancel'))
if q.run():
self.uistate.set_busy_cursor(1)
- for handle in self.selected_handles():
- self.dbstate.db.remove_family_relationships(handle)
+ map(self.dbstate.db.remove_family_relationships,
+ self.selected_handles())
self.build_tree()
self.uistate.set_busy_cursor(0)
diff --git a/src/plugins/view/geoview.py b/src/plugins/view/geoview.py
index c81353f0b..7bf44da96 100644
--- a/src/plugins/view/geoview.py
+++ b/src/plugins/view/geoview.py
@@ -2039,8 +2039,7 @@ class GeoView(HtmlView):
self.vbox.destroy()
except: # pylint: disable-msg=W0704
pass # pylint: disable-msg=W0702
- for child in self.hpaned.get_children(): # cleanup
- self.hpaned.remove(child)
+ map(self.hpaned.remove, self.hpaned.get_children())
self.vbox = gtk.VBox()
self.hpaned.pack_start(self.vbox, True, True)
self.filter_sidebar = filter_class(self.dbstate, self.uistate,
diff --git a/src/plugins/view/grampletview.py b/src/plugins/view/grampletview.py
index 063d814e2..494630a4c 100644
--- a/src/plugins/view/grampletview.py
+++ b/src/plugins/view/grampletview.py
@@ -1241,11 +1241,8 @@ class GrampletView(PageView):
qr_menu = rg_menu.get_submenu()
if qr_menu is not None:
rg_menu.remove_submenu()
- names = []
- for gramplet in self.closed_gramplets:
- names.append(gramplet.title)
- for opts in self.closed_opts:
- names.append(opts["title"])
+ names = [gramplet.title for gramplet in self.closed_gramplets]
+ names.extend(opts["title"] for opts in self.closed_opts)
names.sort()
if len(names) > 0:
qr_menu = gtk.Menu()
diff --git a/src/plugins/view/relview.py b/src/plugins/view/relview.py
index 0e2cc8e91..cb43bbb70 100644
--- a/src/plugins/view/relview.py
+++ b/src/plugins/view/relview.py
@@ -405,10 +405,8 @@ class RelationshipView(NavigationView):
#reset the connects
self._change_db(db)
if self.child:
- for old_child in self.vbox.get_children():
- self.vbox.remove(old_child)
- for old_child in self.header.get_children():
- self.header.remove(old_child)
+ map(self.vbox.remove, self.vbox.get_children())
+ map(self.header.remove, self.header.get_children())
self.child = None
self.bookmarks.update_bookmarks(db.get_bookmarks())
if self.active:
@@ -547,9 +545,7 @@ class RelationshipView(NavigationView):
def write_title(self, person):
- for old_child in self.header.get_children():
- self.header.remove(old_child)
-
+ map(self.header.remove, self.header.get_children())
table = gtk.Table(2, 3)
table.set_col_spacings(12)
table.set_row_spacings(0)
diff --git a/src/plugins/webreport/WebCal.py b/src/plugins/webreport/WebCal.py
index 211f016a3..18bedd14b 100644
--- a/src/plugins/webreport/WebCal.py
+++ b/src/plugins/webreport/WebCal.py
@@ -525,9 +525,7 @@ class WebCalReport(Report):
# An optional link to a home page
navs.append((self.home_link, _('html|Home'), add_home))
-
- for month in range(1, 13):
- navs.append((month, month, True))
+ navs.extend((month, month, True) for month in range(1,13))
# Add a link for year_glance() if requested
navs.append(('fullyearlinked', _('Year Glance'), self.fullyear))