mercurial/error.py
changeset 29509 945b4c14c570
parent 28141 13bb8de97f87
child 29510 19205a0e2bf1
equal deleted inserted replaced
29508:d65ec41b6384 29509:945b4c14c570
    13 
    13 
    14 from __future__ import absolute_import
    14 from __future__ import absolute_import
    15 
    15 
    16 # Do not import anything here, please
    16 # Do not import anything here, please
    17 
    17 
    18 class HintException(Exception):
    18 class Hint(object):
       
    19     """Mix-in to provide a hint of an error
       
    20 
       
    21     This should come first in the inheritance list to consume **kw and pass
       
    22     only *args to the exception class.
       
    23     """
    19     def __init__(self, *args, **kw):
    24     def __init__(self, *args, **kw):
    20         Exception.__init__(self, *args)
    25         super(Hint, self).__init__(*args)
    21         self.hint = kw.get('hint')
    26         self.hint = kw.get('hint')
    22 
    27 
    23 class RevlogError(HintException):
    28 class RevlogError(Hint, Exception):
    24     pass
    29     pass
    25 
    30 
    26 class FilteredIndexError(IndexError):
    31 class FilteredIndexError(IndexError):
    27     pass
    32     pass
    28 
    33 
    48     pass
    53     pass
    49 
    54 
    50 class CommandError(Exception):
    55 class CommandError(Exception):
    51     """Exception raised on errors in parsing the command line."""
    56     """Exception raised on errors in parsing the command line."""
    52 
    57 
    53 class InterventionRequired(HintException):
    58 class InterventionRequired(Hint, Exception):
    54     """Exception raised when a command requires human intervention."""
    59     """Exception raised when a command requires human intervention."""
    55 
    60 
    56 class Abort(HintException):
    61 class Abort(Hint, Exception):
    57     """Raised if a command needs to print an error and exit."""
    62     """Raised if a command needs to print an error and exit."""
    58 
    63 
    59 class HookLoadError(Abort):
    64 class HookLoadError(Abort):
    60     """raised when loading a hook fails, aborting an operation
    65     """raised when loading a hook fails, aborting an operation
    61 
    66 
    85     """Raised when an EOF is received for a prompt"""
    90     """Raised when an EOF is received for a prompt"""
    86     def __init__(self):
    91     def __init__(self):
    87         from .i18n import _
    92         from .i18n import _
    88         Abort.__init__(self, _('response expected'))
    93         Abort.__init__(self, _('response expected'))
    89 
    94 
    90 class OutOfBandError(HintException):
    95 class OutOfBandError(Hint, Exception):
    91     """Exception raised when a remote repo reports failure"""
    96     """Exception raised when a remote repo reports failure"""
    92 
    97 
    93 class ParseError(HintException):
    98 class ParseError(Hint, Exception):
    94     """Raised when parsing config files and {rev,file}sets (msg[, pos])"""
    99     """Raised when parsing config files and {rev,file}sets (msg[, pos])"""
    95 
   100 
    96 class UnknownIdentifier(ParseError):
   101 class UnknownIdentifier(ParseError):
    97     """Exception raised when a {rev,file}set references an unknown identifier"""
   102     """Exception raised when a {rev,file}set references an unknown identifier"""
    98 
   103 
   100         from .i18n import _
   105         from .i18n import _
   101         ParseError.__init__(self, _("unknown identifier: %s") % function)
   106         ParseError.__init__(self, _("unknown identifier: %s") % function)
   102         self.function = function
   107         self.function = function
   103         self.symbols = symbols
   108         self.symbols = symbols
   104 
   109 
   105 class RepoError(HintException):
   110 class RepoError(Hint, Exception):
   106     pass
   111     pass
   107 
   112 
   108 class RepoLookupError(RepoError):
   113 class RepoLookupError(RepoError):
   109     pass
   114     pass
   110 
   115