aboutsummaryrefslogtreecommitdiff
path: root/Lib/fontTools/varLib/errors.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/fontTools/varLib/errors.py')
-rw-r--r--Lib/fontTools/varLib/errors.py34
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):