[merge] py23
diff --git a/Lib/fontTools/merge.py b/Lib/fontTools/merge.py
index b576b59..a45bde8 100644
--- a/Lib/fontTools/merge.py
+++ b/Lib/fontTools/merge.py
@@ -5,12 +5,14 @@
"""Font merger.
"""
+from __future__ import print_function, division
+from fontTools.misc.py23 import *
+from fontTools import ttLib, cffLib
+from fontTools.ttLib.tables import otTables
+from functools import reduce
import sys
import time
-import fontTools
-from fontTools import misc, ttLib, cffLib
-from fontTools.ttLib.tables import otTables
def _add_method(*clazzes):
"""Returns a decorator function that adds a new method to one or
@@ -18,10 +20,10 @@
def wrapper(method):
for clazz in clazzes:
assert clazz.__name__ != 'DefaultTable', 'Oops, table class not found.'
- assert not hasattr(clazz, method.func_name), \
+ assert not hasattr(clazz, method.__name__), \
"Oops, class '%s' has method '%s'." % (clazz.__name__,
- method.func_name)
- setattr(clazz, method.func_name, method)
+ method.__name__)
+ setattr(clazz, method.__name__, method)
return None
return wrapper
@@ -31,7 +33,7 @@
# TODO When we correctly merge hinting data, update these values:
# maxFunctionDefs, maxInstructionDefs, maxSizeOfInstructions
# TODO Assumes that all tables have format 1.0; safe assumption.
- allKeys = reduce(set.union, (vars(table).keys() for table in m.tables), set())
+ allKeys = reduce(set.union, (list(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
@@ -46,7 +48,7 @@
for table in m.tables:
setattr(table, key, -getattr(table, key))
# Get max over members
- allKeys = reduce(set.union, (vars(table).keys() for table in m.tables), set())
+ allKeys = reduce(set.union, (list(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
@@ -65,7 +67,7 @@
for table in m.tables:
setattr(table, key, -getattr(table, key))
# Get max over members
- allKeys = reduce(set.union, (vars(table).keys() for table in m.tables), set())
+ allKeys = reduce(set.union, (list(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
@@ -81,7 +83,7 @@
# TODO Bitwise ops for UnicodeRange/CodePageRange.
# TODO Pretty much all fields generated here have bogus values.
# Get max over members
- allKeys = reduce(set.union, (vars(table).keys() for table in m.tables), set())
+ allKeys = reduce(set.union, (list(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
@@ -95,7 +97,7 @@
for table in m.tables:
setattr(table, key, -getattr(table, key))
# Get max over members
- allKeys = reduce(set.union, (vars(table).keys() for table in m.tables), set())
+ allKeys = reduce(set.union, (list(vars(table).keys()) for table in m.tables), set())
if 'mapping' in allKeys:
allKeys.remove('mapping')
allKeys.remove('extraNames')
@@ -244,7 +246,7 @@
self.set(**kwargs)
def set(self, **kwargs):
- for k,v in kwargs.iteritems():
+ for k,v in kwargs.items():
if not hasattr(self, k):
raise self.UnknownOptionError("Unknown option '%s'" % k)
setattr(self, k, v)
@@ -340,7 +342,7 @@
font.setGlyphOrder(glyphOrder)
mega.setGlyphOrder(megaGlyphOrder)
- allTags = reduce(set.union, (font.keys() for font in fonts), set())
+ allTags = reduce(set.union, (list(font.keys()) for font in fonts), set())
allTags.remove('GlyphOrder')
for tag in allTags:
@@ -376,7 +378,7 @@
mega = []
for n,glyphOrder in enumerate(glyphOrders):
for i,glyphName in enumerate(glyphOrder):
- glyphName += "#" + `n`
+ glyphName += "#" + repr(n)
glyphOrder[i] = glyphName
mega.append(glyphName)
return mega
@@ -401,14 +403,14 @@
def __call__(self, *things):
if not self.verbose:
return
- print ' '.join(str(x) for x in things)
+ print(' '.join(str(x) for x in things))
def lapse(self, *things):
if not self.timing:
return
new_time = time.time()
- print "Took %0.3fs to %s" %(new_time - self.last_time,
- ' '.join(str(x) for x in things))
+ print("Took %0.3fs to %s" %(new_time - self.last_time,
+ ' '.join(str(x) for x in things)))
self.last_time = new_time
def font(self, font, file=sys.stdout):
@@ -441,7 +443,7 @@
args = options.parse_opts(args)
if len(args) < 1:
- print >>sys.stderr, "usage: pyftmerge font..."
+ print("usage: pyftmerge font...", file=sys.stderr)
sys.exit(1)
merger = Merger(options=options, log=log)