[merge] Use reduce more often
diff --git a/Lib/fontTools/merge.py b/Lib/fontTools/merge.py
index c2e6b1e..b576b59 100644
--- a/Lib/fontTools/merge.py
+++ b/Lib/fontTools/merge.py
@@ -31,7 +31,8 @@
# TODO When we correctly merge hinting data, update these values:
# maxFunctionDefs, maxInstructionDefs, maxSizeOfInstructions
# TODO Assumes that all tables have format 1.0; safe assumption.
- for key in set(sum((vars(table).keys() for table in m.tables), [])):
+ allKeys = reduce(set.union, (vars(table).keys() for table in m.tables), set())
+ for key in allKeys:
setattr(self, key, max(getattr(table, key) for table in m.tables))
return True
@@ -45,7 +46,8 @@
for table in m.tables:
setattr(table, key, -getattr(table, key))
# Get max over members
- for key in set(sum((vars(table).keys() for table in m.tables), [])):
+ allKeys = reduce(set.union, (vars(table).keys() for table in m.tables), set())
+ for key in allKeys:
setattr(self, key, max(getattr(table, key) for table in m.tables))
# Negate them back
for key in minMembers:
@@ -63,7 +65,8 @@
for table in m.tables:
setattr(table, key, -getattr(table, key))
# Get max over members
- for key in set(sum((vars(table).keys() for table in m.tables), [])):
+ allKeys = reduce(set.union, (vars(table).keys() for table in m.tables), set())
+ for key in allKeys:
setattr(self, key, max(getattr(table, key) for table in m.tables))
# Negate them back
for key in minMembers:
@@ -78,7 +81,8 @@
# TODO Bitwise ops for UnicodeRange/CodePageRange.
# TODO Pretty much all fields generated here have bogus values.
# Get max over members
- for key in set(sum((vars(table).keys() for table in m.tables), [])):
+ allKeys = reduce(set.union, (vars(table).keys() for table in m.tables), set())
+ for key in allKeys:
setattr(self, key, max(getattr(table, key) for table in m.tables))
return True
@@ -91,11 +95,11 @@
for table in m.tables:
setattr(table, key, -getattr(table, key))
# Get max over members
- keys = set(sum((vars(table).keys() for table in m.tables), []))
- if 'mapping' in keys:
- keys.remove('mapping')
- keys.remove('extraNames')
- for key in keys:
+ allKeys = reduce(set.union, (vars(table).keys() for table in m.tables), set())
+ if 'mapping' in allKeys:
+ allKeys.remove('mapping')
+ allKeys.remove('extraNames')
+ for key in allKeys:
setattr(self, key, max(getattr(table, key) for table in m.tables))
# Negate them back
for key in minMembers: