--- a/mercurial/error.py Wed Jul 06 22:53:22 2016 -0700
+++ b/mercurial/error.py Sat Jul 09 14:28:30 2016 +0900
@@ -15,12 +15,17 @@
# Do not import anything here, please
-class HintException(Exception):
+class Hint(object):
+ """Mix-in to provide a hint of an error
+
+ This should come first in the inheritance list to consume **kw and pass
+ only *args to the exception class.
+ """
def __init__(self, *args, **kw):
- Exception.__init__(self, *args)
+ super(Hint, self).__init__(*args)
self.hint = kw.get('hint')
-class RevlogError(HintException):
+class RevlogError(Hint, Exception):
pass
class FilteredIndexError(IndexError):
@@ -50,10 +55,10 @@
class CommandError(Exception):
"""Exception raised on errors in parsing the command line."""
-class InterventionRequired(HintException):
+class InterventionRequired(Hint, Exception):
"""Exception raised when a command requires human intervention."""
-class Abort(HintException):
+class Abort(Hint, Exception):
"""Raised if a command needs to print an error and exit."""
class HookLoadError(Abort):
@@ -87,10 +92,10 @@
from .i18n import _
Abort.__init__(self, _('response expected'))
-class OutOfBandError(HintException):
+class OutOfBandError(Hint, Exception):
"""Exception raised when a remote repo reports failure"""
-class ParseError(HintException):
+class ParseError(Hint, Exception):
"""Raised when parsing config files and {rev,file}sets (msg[, pos])"""
class UnknownIdentifier(ParseError):
@@ -102,7 +107,7 @@
self.function = function
self.symbols = symbols
-class RepoError(HintException):
+class RepoError(Hint, Exception):
pass
class RepoLookupError(RepoError):