diff options
Diffstat (limited to 'Lib/fontTools/varLib/errors.py')
-rw-r--r-- | Lib/fontTools/varLib/errors.py | 34 |
1 files changed, 16 insertions, 18 deletions
diff --git a/Lib/fontTools/varLib/errors.py b/Lib/fontTools/varLib/errors.py index 5840070f..c5a149cb 100644 --- a/Lib/fontTools/varLib/errors.py +++ b/Lib/fontTools/varLib/errors.py @@ -12,7 +12,7 @@ class VarLibValidationError(VarLibError): class VarLibMergeError(VarLibError): """Raised when input data cannot be merged into a variable font.""" - def __init__(self, merger, **kwargs): + def __init__(self, merger=None, **kwargs): self.merger = merger if not kwargs: kwargs = {} @@ -28,17 +28,17 @@ class VarLibMergeError(VarLibError): return self.__doc__ def _master_name(self, ix): - ttf = self.merger.ttfs[ix] - if ( - "name" in ttf - and ttf["name"].getDebugName(1) - and ttf["name"].getDebugName(2) - ): - return ttf["name"].getDebugName(1) + " " + ttf["name"].getDebugName(2) - elif hasattr(ttf.reader, "file") and hasattr(ttf.reader.file, "name"): - return ttf.reader.file.name - else: - return "master number %i" % ix + if self.merger is not None: + ttf = self.merger.ttfs[ix] + if ( + "name" in ttf + and ttf["name"].getDebugName(1) + and ttf["name"].getDebugName(2) + ): + return ttf["name"].getDebugName(1) + " " + ttf["name"].getDebugName(2) + elif hasattr(ttf.reader, "file") and hasattr(ttf.reader.file, "name"): + return ttf.reader.file.name + return f"master number {ix}" @property def offender(self): @@ -76,7 +76,7 @@ class ShouldBeConstant(VarLibMergeError): @property def details(self): - if self.stack[0] != ".FeatureCount": + if self.stack[0] != ".FeatureCount" or self.merger is None: return super().details offender_index, offender = self.offender bad_ttf = self.merger.ttfs[offender_index] @@ -102,13 +102,12 @@ class FoundANone(VarLibMergeError): @property def offender(self): - cause = self.argv[0] - index = [x is None for x in cause["got"]].index(True) + index = [x is None for x in self.cause["got"]].index(True) return index, self._master_name(index) @property def details(self): - cause, stack = self.args[0], self.args[1:] + cause, stack = self.cause, self.stack return f"{stack[0]}=={cause['got']}\n" @@ -137,8 +136,7 @@ class UnsupportedFormat(VarLibMergeError): @property def reason(self): - cause, stack = self.args[0], self.args[1:] - return self.__doc__ % cause["subtable"] + return self.__doc__ % self.cause["subtable"] class UnsupportedFormat(UnsupportedFormat): |