diff --git a/implementations/python/preserves/binary.py b/implementations/python/preserves/binary.py index 0cf2a7b..25745ad 100644 --- a/implementations/python/preserves/binary.py +++ b/implementations/python/preserves/binary.py @@ -202,8 +202,12 @@ class Encoder(BinaryCodec): except TypeError: i = None if i is None: - raise TypeError('Cannot preserves-encode: ' + repr(v)) - self.encodevalues(5, i) + self.cannot_encode(v) + else: + self.encodevalues(5, i) + + def cannot_encode(self, v): + raise TypeError('Cannot preserves-encode: ' + repr(v)) def encode(v, **kwargs): e = Encoder(**kwargs) diff --git a/implementations/python/preserves/text.py b/implementations/python/preserves/text.py index bb368bb..8b1ddfe 100644 --- a/implementations/python/preserves/text.py +++ b/implementations/python/preserves/text.py @@ -391,8 +391,12 @@ class Formatter(TextCodec): except TypeError: i = None if i is None: - raise TypeError('Cannot preserves-format: ' + repr(v)) - self.write_seq('[', ']', i) + self.cannot_format(v) + else: + self.write_seq('[', ']', i) + + def cannot_format(self, v): + raise TypeError('Cannot preserves-format: ' + repr(v)) def stringify(v, **kwargs): e = Formatter(**kwargs)