error: implement __str__ on RevlogError to fix some output defects on Py3
We open-code encoding.unimethod here to avoid cycles, and do a local
import of encoding when someone str()s a RevlogError. It's not my
favorite solution, but it gets the job done.
Differential Revision: https://phab.mercurial-scm.org/D5426
--- a/mercurial/error.py Fri Dec 14 12:00:38 2018 -0500
+++ b/mercurial/error.py Fri Dec 14 12:01:47 2018 -0500
@@ -44,6 +44,14 @@
class RevlogError(StorageError):
__bytes__ = _tobytes
+ def __str__(self):
+ # avoid cycle, and directly implement unimethod for this
+ # __str__ to allow delaying the import of encoding until
+ # someone actually wants the __str__ of a RevlogError (which
+ # should be very rare).
+ from . import encoding
+ return encoding.unifromlocal(_tobytes(self))
+
class FilteredIndexError(IndexError):
__bytes__ = _tobytes