Use dict comprehension now that we don't support Python 2.6

This commit is contained in:
Behdad Esfahbod 2015-06-11 17:05:15 -07:00
parent 9fe2b3fb15
commit 37e6e6a380
6 changed files with 52 additions and 53 deletions

View File

@ -12,7 +12,7 @@ class ExtendCodec(codecs.Codec):
self.name = name
self.base_encoding = base_encoding
self.mapping = mapping
self.reverse = dict((v,k) for k,v in mapping.items())
self.reverse = {v:k for k,v in mapping.items()}
self.max_len = max(len(v) for v in mapping.values())
self.info = codecs.CodecInfo(name=self.name, encode=self.encode, decode=self.decode)
codecs.register_error(name, self.error)

View File

@ -463,8 +463,8 @@ def merge(self, m, tables):
for i,(table,dups) in enumerate(zip(tables, m.duplicateGlyphsPerFont)):
if not dups: continue
assert (table is not None and table is not NotImplemented), "Have duplicates to resolve for font %d but no GSUB" % (i + 1)
lookupMap = dict((id(v),v) for v in table.table.LookupList.Lookup)
featureMap = dict((id(v),v) for v in table.table.FeatureList.FeatureRecord)
lookupMap = {id(v):v for v in table.table.LookupList.Lookup}
featureMap = {id(v):v for v in table.table.FeatureList.FeatureRecord}
synthFeature = None
synthLookup = None
for script in table.table.ScriptList.ScriptRecord:
@ -830,14 +830,14 @@ class Merger(object):
if not t: continue
if t.table.LookupList:
lookupMap = dict((i,id(v)) for i,v in enumerate(t.table.LookupList.Lookup))
lookupMap = {i:id(v) for i,v in enumerate(t.table.LookupList.Lookup)}
t.table.LookupList.mapLookups(lookupMap)
if t.table.FeatureList:
# XXX Handle present FeatureList but absent LookupList
t.table.FeatureList.mapLookups(lookupMap)
if t.table.FeatureList and t.table.ScriptList:
featureMap = dict((i,id(v)) for i,v in enumerate(t.table.FeatureList.FeatureRecord))
featureMap = {i:id(v) for i,v in enumerate(t.table.FeatureList.FeatureRecord)}
t.table.ScriptList.mapFeatures(featureMap)
# TODO GDEF/Lookup MarkFilteringSets
@ -855,7 +855,7 @@ class Merger(object):
if not t: continue
if t.table.LookupList:
lookupMap = dict((id(v),i) for i,v in enumerate(t.table.LookupList.Lookup))
lookupMap = {id(v):i for i,v in enumerate(t.table.LookupList.Lookup)}
t.table.LookupList.mapLookups(lookupMap)
if t.table.FeatureList:
# XXX Handle present FeatureList but absent LookupList
@ -863,7 +863,7 @@ class Merger(object):
if t.table.FeatureList and t.table.ScriptList:
# XXX Handle present ScriptList but absent FeatureList
featureMap = dict((id(v),i) for i,v in enumerate(t.table.FeatureList.FeatureRecord))
featureMap = {id(v):i for i,v in enumerate(t.table.FeatureList.FeatureRecord)}
t.table.ScriptList.mapFeatures(featureMap)
# TODO GDEF/Lookup MarkFilteringSets

View File

@ -83,7 +83,7 @@ cffDictOperandEncoding[255] = read_reserved
realNibbles = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'.', 'E', 'E-', None, '-']
realNibblesDict = dict((v,i) for i,v in enumerate(realNibbles))
realNibblesDict = {v:i for i,v in enumerate(realNibbles)}
class ByteCodeBase(object):

View File

@ -369,7 +369,7 @@ def intersect_class(self, glyphs, klass):
@_add_method(otTables.ClassDef)
def subset(self, glyphs, remap=False):
"""Returns ascending list of remaining classes."""
self.classDefs = dict((g,v) for g,v in self.classDefs.items() if g in glyphs)
self.classDefs = {g:v for g,v in self.classDefs.items() if g in glyphs}
# Note: while class 0 has the special meaning of "not matched",
# if no glyph will ever /not match/, we can optimize class 0 out too.
indices = _uniq_sort(
@ -382,8 +382,7 @@ def subset(self, glyphs, remap=False):
@_add_method(otTables.ClassDef)
def remap(self, class_map):
"""Remaps classes."""
self.classDefs = dict((g,class_map.index(v))
for g,v in self.classDefs.items())
self.classDefs = {g:class_map.index(v) for g,v in self.classDefs.items()}
@_add_method(otTables.SingleSubst)
def closure_glyphs(self, s, cur_glyphs):
@ -391,8 +390,8 @@ def closure_glyphs(self, s, cur_glyphs):
@_add_method(otTables.SingleSubst)
def subset_glyphs(self, s):
self.mapping = dict((g,v) for g,v in self.mapping.items()
if g in s.glyphs and v in s.glyphs)
self.mapping = {g:v for g,v in self.mapping.items()
if g in s.glyphs and v in s.glyphs}
return bool(self.mapping)
@_add_method(otTables.MultipleSubst)
@ -419,10 +418,10 @@ def closure_glyphs(self, s, cur_glyphs):
@_add_method(otTables.AlternateSubst)
def subset_glyphs(self, s):
self.alternates = dict((g,vlist)
for g,vlist in self.alternates.items()
if g in s.glyphs and
all(v in s.glyphs for v in vlist))
self.alternates = {g:vlist
for g,vlist in self.alternates.items()
if g in s.glyphs and
all(v in s.glyphs for v in vlist)}
return bool(self.alternates)
@_add_method(otTables.LigatureSubst)
@ -434,13 +433,13 @@ def closure_glyphs(self, s, cur_glyphs):
@_add_method(otTables.LigatureSubst)
def subset_glyphs(self, s):
self.ligatures = dict((g,v) for g,v in self.ligatures.items()
if g in s.glyphs)
self.ligatures = dict((g,[seq for seq in seqs
if seq.LigGlyph in s.glyphs and
all(c in s.glyphs for c in seq.Component)])
for g,seqs in self.ligatures.items())
self.ligatures = dict((g,v) for g,v in self.ligatures.items() if v)
self.ligatures = {g:v for g,v in self.ligatures.items()
if g in s.glyphs}
self.ligatures = {g:[seq for seq in seqs
if seq.LigGlyph in s.glyphs and
all(c in s.glyphs for c in seq.Component)]
for g,seqs in self.ligatures.items()}
self.ligatures = {g:v for g,v in self.ligatures.items() if v}
return bool(self.ligatures)
@_add_method(otTables.ReverseChainSingleSubst)
@ -1482,12 +1481,12 @@ def subset_glyphs(self, s):
table.LigCaretList.LigGlyphCount = len(table.LigCaretList.LigGlyph)
if table.MarkAttachClassDef:
table.MarkAttachClassDef.classDefs = \
dict((g,v) for g,v in table.MarkAttachClassDef.classDefs.items()
if g in glyphs)
{g:v for g,v in table.MarkAttachClassDef.classDefs.items()
if g in glyphs}
if table.GlyphClassDef:
table.GlyphClassDef.classDefs = \
dict((g,v) for g,v in table.GlyphClassDef.classDefs.items()
if g in glyphs)
{g:v for g,v in table.GlyphClassDef.classDefs.items()
if g in glyphs}
if table.AttachList:
indices = table.AttachList.Coverage.subset(glyphs)
GlyphCount = table.AttachList.GlyphCount
@ -1538,31 +1537,31 @@ def prune_pre_subset(self, options):
def subset_glyphs(self, s):
glyphs = s.glyphs_gsubed
for t in self.kernTables:
t.kernTable = dict(((a,b),v) for (a,b),v in t.kernTable.items()
if a in glyphs and b in glyphs)
t.kernTable = {(a,b):v for (a,b),v in t.kernTable.items()
if a in glyphs and b in glyphs}
self.kernTables = [t for t in self.kernTables if t.kernTable]
return bool(self.kernTables)
@_add_method(ttLib.getTableClass('vmtx'))
def subset_glyphs(self, s):
self.metrics = dict((g,v) for g,v in self.metrics.items() if g in s.glyphs)
self.metrics = {g:v for g,v in self.metrics.items() if g in s.glyphs}
return bool(self.metrics)
@_add_method(ttLib.getTableClass('hmtx'))
def subset_glyphs(self, s):
self.metrics = dict((g,v) for g,v in self.metrics.items() if g in s.glyphs)
self.metrics = {g:v for g,v in self.metrics.items() if g in s.glyphs}
return True # Required table
@_add_method(ttLib.getTableClass('hdmx'))
def subset_glyphs(self, s):
self.hdmx = dict((sz,dict((g,v) for g,v in l.items() if g in s.glyphs))
for sz,l in self.hdmx.items())
self.hdmx = {sz:{g:v for g,v in l.items() if g in s.glyphs}
for sz,l in self.hdmx.items()}
return bool(self.hdmx)
@_add_method(ttLib.getTableClass('VORG'))
def subset_glyphs(self, s):
self.VOriginRecords = dict((g,v) for g,v in self.VOriginRecords.items()
if g in s.glyphs)
self.VOriginRecords = {g:v for g,v in self.VOriginRecords.items()
if g in s.glyphs}
self.numVertOriginYMetrics = len(self.VOriginRecords)
return True # Never drop; has default metrics
@ -1632,7 +1631,7 @@ def prune_pre_subset(self, options):
@_add_method(ttLib.getTableClass('glyf'))
def subset_glyphs(self, s):
self.glyphs = dict((g,v) for g,v in self.glyphs.items() if g in s.glyphs)
self.glyphs = {g:v for g,v in self.glyphs.items() if g in s.glyphs}
indices = [i for i,g in enumerate(self.glyphOrder) if g in s.glyphs]
for v in self.glyphs.values():
if hasattr(v, "data"):
@ -1695,13 +1694,13 @@ def subset_glyphs(self, s):
#sel.format = None
sel.format = 3
sel.gidArray = [sel.gidArray[i] for i in indices]
cs.charStrings = dict((g,indices.index(v))
for g,v in cs.charStrings.items()
if g in s.glyphs)
cs.charStrings = {g:indices.index(v)
for g,v in cs.charStrings.items()
if g in s.glyphs}
else:
cs.charStrings = dict((g,v)
for g,v in cs.charStrings.items()
if g in s.glyphs)
cs.charStrings = {g:v
for g,v in cs.charStrings.items()
if g in s.glyphs}
font.charset = [g for g in font.charset if g in s.glyphs]
font.numGlyphs = len(font.charset)
@ -2129,16 +2128,16 @@ def subset_glyphs(self, s):
if t.format == 14:
# TODO(behdad) We drop all the default-UVS mappings
# for glyphs_requested. I don't think we care about that...
t.uvsDict = dict((v,[(u,g) for u,g in l
if g in s.glyphs or u in s.unicodes_requested])
for v,l in t.uvsDict.items())
t.uvsDict = dict((v,l) for v,l in t.uvsDict.items() if l)
t.uvsDict = {v:[(u,g) for u,g in l
if g in s.glyphs or u in s.unicodes_requested]
for v,l in t.uvsDict.items()}
t.uvsDict = {v:l for v,l in t.uvsDict.items() if l}
elif t.isUnicode():
t.cmap = dict((u,g) for u,g in t.cmap.items()
if g in s.glyphs_requested or u in s.unicodes_requested)
t.cmap = {u:g for u,g in t.cmap.items()
if g in s.glyphs_requested or u in s.unicodes_requested}
else:
t.cmap = dict((u,g) for u,g in t.cmap.items()
if g in s.glyphs_requested)
t.cmap = {u:g for u,g in t.cmap.items()
if g in s.glyphs_requested}
self.tables = [t for t in self.tables
if (t.cmap if t.format != 14 else t.uvsDict)]
self.numSubTables = len(self.tables)

View File

@ -55,7 +55,7 @@ class table__g_v_a_r(DefaultTable.DefaultTable):
axisTags = [axis.AxisTag for axis in ttFont["fvar"].table.VariationAxis]
sharedCoords = self.compileSharedCoords_(axisTags)
sharedCoordIndices = dict([(coord, i) for i, coord in enumerate(sharedCoords)])
sharedCoordIndices = {coord:i for i, coord in enumerate(sharedCoords)}
sharedCoordSize = sum([len(c) for c in sharedCoords])
compiledGlyphs = self.compileGlyphs_(ttFont, axisTags, sharedCoordIndices)

View File

@ -363,7 +363,7 @@ class GlyphVariationTest(unittest.TestCase):
# Make sure we are not affected by https://github.com/behdad/fonttools/issues/286
data = deHexStr("7F B9 80 35")
values, _ = GlyphVariation.decompileCoord_(["wght", "wdth"], data, 0)
axisValues = dict([(axis, (val, val, val)) for axis, val in values.items()])
axisValues = {axis:(val, val, val) for axis, val in values.items()}
gvar = GlyphVariation(axisValues, [None] * 4)
self.assertEqual("7F B9 80 35", hexencode(gvar.compileCoord(["wght", "wdth"])))