From 425e1afd367ad832f7ce22edab23d026911bda0e Mon Sep 17 00:00:00 2001 From: Cosimo Lupo Date: Thu, 21 Oct 2021 14:38:52 +0200 Subject: [PATCH] subset: move _add_method and _uniq_sort to subset/util submodule --- Lib/fontTools/subset/__init__.py | 21 +-------------------- Lib/fontTools/subset/cff.py | 20 +------------------- Lib/fontTools/subset/util.py | 25 +++++++++++++++++++++++++ 3 files changed, 27 insertions(+), 39 deletions(-) create mode 100644 Lib/fontTools/subset/util.py diff --git a/Lib/fontTools/subset/__init__.py b/Lib/fontTools/subset/__init__.py index c0f67e367..b98e9ee22 100644 --- a/Lib/fontTools/subset/__init__.py +++ b/Lib/fontTools/subset/__init__.py @@ -8,6 +8,7 @@ from fontTools.ttLib.tables import otTables from fontTools.otlLib.maxContextCalc import maxCtxFont from fontTools.pens.basePen import NullPen from fontTools.misc.loggingTools import Timer +from fontTools.subset.util import _add_method, _uniq_sort from fontTools.subset.cff import * import sys import struct @@ -363,26 +364,6 @@ log.glyphs = MethodType(_log_glyphs, log) timer = Timer(logger=logging.getLogger("fontTools.subset.timer")) -def _add_method(*clazzes): - """Returns a decorator function that adds a new method to one or - more classes.""" - def wrapper(method): - done = [] - for clazz in clazzes: - if clazz in done: continue # Support multiple names of a clazz - done.append(clazz) - assert clazz.__name__ != 'DefaultTable', \ - 'Oops, table class not found.' - assert not hasattr(clazz, method.__name__), \ - "Oops, class '%s' has method '%s'." % (clazz.__name__, - method.__name__) - setattr(clazz, method.__name__, method) - return None - return wrapper - -def _uniq_sort(l): - return sorted(set(l)) - def _dict_subset(d, glyphs): return {g:d[g] for g in glyphs} diff --git a/Lib/fontTools/subset/cff.py b/Lib/fontTools/subset/cff.py index b59c6b96d..ae59d4453 100644 --- a/Lib/fontTools/subset/cff.py +++ b/Lib/fontTools/subset/cff.py @@ -3,26 +3,8 @@ from fontTools import ttLib from fontTools.pens.basePen import NullPen from fontTools.misc.roundTools import otRound from fontTools.varLib.varStore import VarStoreInstancer +from fontTools.subset.util import _add_method, _uniq_sort -def _add_method(*clazzes): - """Returns a decorator function that adds a new method to one or - more classes.""" - def wrapper(method): - done = [] - for clazz in clazzes: - if clazz in done: continue # Support multiple names of a clazz - done.append(clazz) - assert clazz.__name__ != 'DefaultTable', \ - 'Oops, table class not found.' - assert not hasattr(clazz, method.__name__), \ - "Oops, class '%s' has method '%s'." % (clazz.__name__, - method.__name__) - setattr(clazz, method.__name__, method) - return None - return wrapper - -def _uniq_sort(l): - return sorted(set(l)) class _ClosureGlyphsT2Decompiler(psCharStrings.SimpleT2Decompiler): diff --git a/Lib/fontTools/subset/util.py b/Lib/fontTools/subset/util.py new file mode 100644 index 000000000..d20e925d7 --- /dev/null +++ b/Lib/fontTools/subset/util.py @@ -0,0 +1,25 @@ +"""Private utility methods used by the subset modules""" + + +def _add_method(*clazzes): + """Returns a decorator function that adds a new method to one or + more classes.""" + + def wrapper(method): + done = [] + for clazz in clazzes: + if clazz in done: + continue # Support multiple names of a clazz + done.append(clazz) + assert clazz.__name__ != "DefaultTable", "Oops, table class not found." + assert not hasattr( + clazz, method.__name__ + ), "Oops, class '%s' has method '%s'." % (clazz.__name__, method.__name__) + setattr(clazz, method.__name__, method) + return None + + return wrapper + + +def _uniq_sort(l): + return sorted(set(l))