# HG changeset patch # User Augie Fackler # Date 2018-12-14 17:01:47 # Node ID f732889abe0ecde2931ed51bf3452b84580c1831 # Parent a314eafd7c8ddbe00564206e8f4092a4705db66a 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 diff --git a/mercurial/error.py b/mercurial/error.py --- a/mercurial/error.py +++ b/mercurial/error.py @@ -44,6 +44,14 @@ class StorageError(Hint, Exception): 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