mercurial/error.py
changeset 47290 5e736d2e9703
parent 47289 33c0c25d0b0f
child 47291 d9c71bbe20f7
equal deleted inserted replaced
47289:33c0c25d0b0f 47290:5e736d2e9703
    49     def __init__(self, *args, **kw):
    49     def __init__(self, *args, **kw):
    50         self.hint = kw.pop('hint', None)
    50         self.hint = kw.pop('hint', None)
    51         super(Hint, self).__init__(*args, **kw)
    51         super(Hint, self).__init__(*args, **kw)
    52 
    52 
    53 
    53 
       
    54 class Abort(Hint, Exception):
       
    55     """Raised if a command needs to print an error and exit."""
       
    56 
       
    57     def __init__(self, message, hint=None, detailed_exit_code=None):
       
    58         # type: (bytes, Optional[bytes]) -> None
       
    59         self.message = message
       
    60         self.hint = hint
       
    61         self.detailed_exit_code = detailed_exit_code
       
    62         # Pass the message into the Exception constructor to help extensions
       
    63         # that look for exc.args[0].
       
    64         Exception.__init__(self, message)
       
    65 
       
    66     def __bytes__(self):
       
    67         return self.message
       
    68 
       
    69     if pycompat.ispy3:
       
    70 
       
    71         def __str__(self):
       
    72             # the output would be unreadable if the message was translated,
       
    73             # but do not replace it with encoding.strfromlocal(), which
       
    74             # may raise another exception.
       
    75             return pycompat.sysstr(self.__bytes__())
       
    76 
       
    77     def format(self):
       
    78         # type: () -> bytes
       
    79         from .i18n import _
       
    80 
       
    81         message = _(b"abort: %s\n") % self.message
       
    82         if self.hint:
       
    83             message += _(b"(%s)\n") % self.hint
       
    84         return message
       
    85 
       
    86 
    54 class StorageError(Hint, Exception):
    87 class StorageError(Hint, Exception):
    55     """Raised when an error occurs in a storage layer.
    88     """Raised when an error occurs in a storage layer.
    56 
    89 
    57     Usually subclassed by a storage-specific exception.
    90     Usually subclassed by a storage-specific exception.
    58     """
    91     """
   178             _(
   211             _(
   179                 b"unresolved conflicts (see 'hg resolve', then 'hg %s --continue')"
   212                 b"unresolved conflicts (see 'hg resolve', then 'hg %s --continue')"
   180             )
   213             )
   181             % opname,
   214             % opname,
   182         )
   215         )
   183 
       
   184 
       
   185 class Abort(Hint, Exception):
       
   186     """Raised if a command needs to print an error and exit."""
       
   187 
       
   188     def __init__(self, message, hint=None, detailed_exit_code=None):
       
   189         # type: (bytes, Optional[bytes]) -> None
       
   190         self.message = message
       
   191         self.hint = hint
       
   192         self.detailed_exit_code = detailed_exit_code
       
   193         # Pass the message into the Exception constructor to help extensions
       
   194         # that look for exc.args[0].
       
   195         Exception.__init__(self, message)
       
   196 
       
   197     def __bytes__(self):
       
   198         return self.message
       
   199 
       
   200     if pycompat.ispy3:
       
   201 
       
   202         def __str__(self):
       
   203             # the output would be unreadable if the message was translated,
       
   204             # but do not replace it with encoding.strfromlocal(), which
       
   205             # may raise another exception.
       
   206             return pycompat.sysstr(self.__bytes__())
       
   207 
       
   208     def format(self):
       
   209         # type: () -> bytes
       
   210         from .i18n import _
       
   211 
       
   212         message = _(b"abort: %s\n") % self.message
       
   213         if self.hint:
       
   214             message += _(b"(%s)\n") % self.hint
       
   215         return message
       
   216 
   216 
   217 
   217 
   218 class InputError(Abort):
   218 class InputError(Abort):
   219     """Indicates that the user made an error in their input.
   219     """Indicates that the user made an error in their input.
   220 
   220