mercurial/error.py
author Pierre-Yves David <pierre-yves.david@octobus.net>
Thu, 04 Jan 2024 14:39:10 +0100
changeset 51337 ac8b798e602b
parent 51290 f4a0806081f2
child 51863 f4733654f144
permissions -rw-r--r--
delta-find: drop the temporary indent Now that the complicated change is made, we can do the noisy one.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8226
8b2cd04a6e97 put license and copyright info into comment blocks
Martin Geisler <mg@lazybytes.net>
parents: 8225
diff changeset
     1
# error.py - Mercurial exceptions
8b2cd04a6e97 put license and copyright info into comment blocks
Martin Geisler <mg@lazybytes.net>
parents: 8225
diff changeset
     2
#
46819
d4ba4d51f85f contributor: change mentions of mpm to olivia
Raphaël Gomès <rgomes@octobus.net>
parents: 46794
diff changeset
     3
# Copyright 2005-2008 Olivia Mackall <olivia@selenic.com>
8226
8b2cd04a6e97 put license and copyright info into comment blocks
Martin Geisler <mg@lazybytes.net>
parents: 8225
diff changeset
     4
#
8b2cd04a6e97 put license and copyright info into comment blocks
Martin Geisler <mg@lazybytes.net>
parents: 8225
diff changeset
     5
# This software may be used and distributed according to the terms of the
10263
25e572394f5c Update license to GPLv2+
Matt Mackall <mpm@selenic.com>
parents: 9423
diff changeset
     6
# GNU General Public License version 2 or any later version.
7633
08cabecfa8a8 errors: move revlog errors
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     7
8227
0a9542703300 turn some comments back into module docstrings
Martin Geisler <mg@lazybytes.net>
parents: 8226
diff changeset
     8
"""Mercurial exceptions.
0a9542703300 turn some comments back into module docstrings
Martin Geisler <mg@lazybytes.net>
parents: 8226
diff changeset
     9
0a9542703300 turn some comments back into module docstrings
Martin Geisler <mg@lazybytes.net>
parents: 8226
diff changeset
    10
This allows us to catch exceptions at higher levels without forcing
0a9542703300 turn some comments back into module docstrings
Martin Geisler <mg@lazybytes.net>
parents: 8226
diff changeset
    11
imports.
0a9542703300 turn some comments back into module docstrings
Martin Geisler <mg@lazybytes.net>
parents: 8226
diff changeset
    12
"""
0a9542703300 turn some comments back into module docstrings
Martin Geisler <mg@lazybytes.net>
parents: 8226
diff changeset
    13
25945
147bd9e238a1 error: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25484
diff changeset
    14
45882
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45877
diff changeset
    15
import difflib
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45877
diff changeset
    16
51285
9d3721552b6c pytype: import typing directly
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50660
diff changeset
    17
from typing import (
9d3721552b6c pytype: import typing directly
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50660
diff changeset
    18
    AnyStr,
9d3721552b6c pytype: import typing directly
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50660
diff changeset
    19
    Iterable,
9d3721552b6c pytype: import typing directly
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50660
diff changeset
    20
    List,
9d3721552b6c pytype: import typing directly
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50660
diff changeset
    21
    Optional,
9d3721552b6c pytype: import typing directly
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50660
diff changeset
    22
    Sequence,
9d3721552b6c pytype: import typing directly
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50660
diff changeset
    23
    Union,
9d3721552b6c pytype: import typing directly
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50660
diff changeset
    24
)
9d3721552b6c pytype: import typing directly
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50660
diff changeset
    25
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
    26
# Do not import anything but pycompat here, please
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
    27
from . import pycompat
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
    28
51285
9d3721552b6c pytype: import typing directly
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50660
diff changeset
    29
51287
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
    30
def _tobytes(exc) -> bytes:
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
    31
    """Byte-stringify exception in the same way as BaseException_str()"""
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
    32
    if not exc.args:
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
    33
        return b''
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
    34
    if len(exc.args) == 1:
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
    35
        return pycompat.bytestr(exc.args[0])
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
    36
    return b'(%s)' % b', '.join(b"'%s'" % pycompat.bytestr(a) for a in exc.args)
7633
08cabecfa8a8 errors: move revlog errors
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    37
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
    38
48946
642e31cb55f0 py3: use class X: instead of class X(object):
Gregory Szorc <gregory.szorc@gmail.com>
parents: 48889
diff changeset
    39
class Hint:
29509
945b4c14c570 error: make HintException a mix-in class not derived from BaseException (API)
Yuya Nishihara <yuya@tcha.org>
parents: 28141
diff changeset
    40
    """Mix-in to provide a hint of an error
945b4c14c570 error: make HintException a mix-in class not derived from BaseException (API)
Yuya Nishihara <yuya@tcha.org>
parents: 28141
diff changeset
    41
29510
19205a0e2bf1 error: make hintable exceptions reject unknown keyword arguments (API)
Yuya Nishihara <yuya@tcha.org>
parents: 29509
diff changeset
    42
    This should come first in the inheritance list to consume a hint and
19205a0e2bf1 error: make hintable exceptions reject unknown keyword arguments (API)
Yuya Nishihara <yuya@tcha.org>
parents: 29509
diff changeset
    43
    pass remaining arguments to the exception class.
29509
945b4c14c570 error: make HintException a mix-in class not derived from BaseException (API)
Yuya Nishihara <yuya@tcha.org>
parents: 28141
diff changeset
    44
    """
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
    45
25248
821e664924dc error: refactor common hint-pattern into a common base class
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 25242
diff changeset
    46
    def __init__(self, *args, **kw):
51288
8b2ea2246a5f pytype: convert type comment for inline variable too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51287
diff changeset
    47
        self.hint: Optional[bytes] = kw.pop('hint', None)
29510
19205a0e2bf1 error: make hintable exceptions reject unknown keyword arguments (API)
Yuya Nishihara <yuya@tcha.org>
parents: 29509
diff changeset
    48
        super(Hint, self).__init__(*args, **kw)
25248
821e664924dc error: refactor common hint-pattern into a common base class
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 25242
diff changeset
    49
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
    50
47292
5a75be916316 errors: create superclass for Abort exception
Martin von Zweigbergk <martinvonz@google.com>
parents: 47291
diff changeset
    51
class Error(Hint, Exception):
5a75be916316 errors: create superclass for Abort exception
Martin von Zweigbergk <martinvonz@google.com>
parents: 47291
diff changeset
    52
    """Base class for Mercurial errors."""
47290
5e736d2e9703 errors: move Abort earlier, so more exceptions can subclass it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47289
diff changeset
    53
47304
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
    54
    coarse_exit_code = None
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
    55
    detailed_exit_code = None
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
    56
51287
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
    57
    def __init__(self, message: bytes, hint: Optional[bytes] = None) -> None:
47290
5e736d2e9703 errors: move Abort earlier, so more exceptions can subclass it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47289
diff changeset
    58
        self.message = message
5e736d2e9703 errors: move Abort earlier, so more exceptions can subclass it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47289
diff changeset
    59
        self.hint = hint
5e736d2e9703 errors: move Abort earlier, so more exceptions can subclass it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47289
diff changeset
    60
        # Pass the message into the Exception constructor to help extensions
5e736d2e9703 errors: move Abort earlier, so more exceptions can subclass it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47289
diff changeset
    61
        # that look for exc.args[0].
5e736d2e9703 errors: move Abort earlier, so more exceptions can subclass it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47289
diff changeset
    62
        Exception.__init__(self, message)
5e736d2e9703 errors: move Abort earlier, so more exceptions can subclass it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47289
diff changeset
    63
5e736d2e9703 errors: move Abort earlier, so more exceptions can subclass it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47289
diff changeset
    64
    def __bytes__(self):
5e736d2e9703 errors: move Abort earlier, so more exceptions can subclass it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47289
diff changeset
    65
        return self.message
5e736d2e9703 errors: move Abort earlier, so more exceptions can subclass it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47289
diff changeset
    66
51287
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
    67
    def __str__(self) -> str:
48889
9baec00b4ca1 error: unconditionally define __str__
Gregory Szorc <gregory.szorc@gmail.com>
parents: 48875
diff changeset
    68
        # the output would be unreadable if the message was translated,
9baec00b4ca1 error: unconditionally define __str__
Gregory Szorc <gregory.szorc@gmail.com>
parents: 48875
diff changeset
    69
        # but do not replace it with encoding.strfromlocal(), which
9baec00b4ca1 error: unconditionally define __str__
Gregory Szorc <gregory.szorc@gmail.com>
parents: 48875
diff changeset
    70
        # may raise another exception.
9baec00b4ca1 error: unconditionally define __str__
Gregory Szorc <gregory.szorc@gmail.com>
parents: 48875
diff changeset
    71
        return pycompat.sysstr(self.__bytes__())
47290
5e736d2e9703 errors: move Abort earlier, so more exceptions can subclass it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47289
diff changeset
    72
51287
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
    73
    def format(self) -> bytes:
47290
5e736d2e9703 errors: move Abort earlier, so more exceptions can subclass it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47289
diff changeset
    74
        from .i18n import _
5e736d2e9703 errors: move Abort earlier, so more exceptions can subclass it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47289
diff changeset
    75
5e736d2e9703 errors: move Abort earlier, so more exceptions can subclass it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47289
diff changeset
    76
        message = _(b"abort: %s\n") % self.message
5e736d2e9703 errors: move Abort earlier, so more exceptions can subclass it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47289
diff changeset
    77
        if self.hint:
5e736d2e9703 errors: move Abort earlier, so more exceptions can subclass it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47289
diff changeset
    78
            message += _(b"(%s)\n") % self.hint
5e736d2e9703 errors: move Abort earlier, so more exceptions can subclass it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47289
diff changeset
    79
        return message
5e736d2e9703 errors: move Abort earlier, so more exceptions can subclass it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47289
diff changeset
    80
5e736d2e9703 errors: move Abort earlier, so more exceptions can subclass it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47289
diff changeset
    81
47292
5a75be916316 errors: create superclass for Abort exception
Martin von Zweigbergk <martinvonz@google.com>
parents: 47291
diff changeset
    82
class Abort(Error):
5a75be916316 errors: create superclass for Abort exception
Martin von Zweigbergk <martinvonz@google.com>
parents: 47291
diff changeset
    83
    """Raised if a command needs to print an error and exit."""
5a75be916316 errors: create superclass for Abort exception
Martin von Zweigbergk <martinvonz@google.com>
parents: 47291
diff changeset
    84
5a75be916316 errors: create superclass for Abort exception
Martin von Zweigbergk <martinvonz@google.com>
parents: 47291
diff changeset
    85
47295
dd339191f2dc errors: make StorageError subclass Error, attaching an exit code to it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47292
diff changeset
    86
class StorageError(Error):
39776
cb65d4b7e429 error: introduce StorageError
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39596
diff changeset
    87
    """Raised when an error occurs in a storage layer.
cb65d4b7e429 error: introduce StorageError
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39596
diff changeset
    88
cb65d4b7e429 error: introduce StorageError
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39596
diff changeset
    89
    Usually subclassed by a storage-specific exception.
cb65d4b7e429 error: introduce StorageError
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39596
diff changeset
    90
    """
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
    91
47304
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
    92
    detailed_exit_code = 50
39776
cb65d4b7e429 error: introduce StorageError
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39596
diff changeset
    93
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
    94
39776
cb65d4b7e429 error: introduce StorageError
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39596
diff changeset
    95
class RevlogError(StorageError):
45775
5bb900885311 errors: remove unnecessary override of __bytes__ in RevlogError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45682
diff changeset
    96
    pass
7633
08cabecfa8a8 errors: move revlog errors
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    97
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
    98
43034
294afb982a88 sidedata: add a function to read sidedata from revlog raw text
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 40972
diff changeset
    99
class SidedataHashError(RevlogError):
51287
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   100
    def __init__(self, key: int, expected: bytes, got: bytes) -> None:
46625
3941fe53670d error: add `hint` attribute to `SidedataHashError`
Raphaël Gomès <rgomes@octobus.net>
parents: 45942
diff changeset
   101
        self.hint = None
43034
294afb982a88 sidedata: add a function to read sidedata from revlog raw text
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 40972
diff changeset
   102
        self.sidedatakey = key
294afb982a88 sidedata: add a function to read sidedata from revlog raw text
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 40972
diff changeset
   103
        self.expecteddigest = expected
294afb982a88 sidedata: add a function to read sidedata from revlog raw text
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 40972
diff changeset
   104
        self.actualdigest = got
294afb982a88 sidedata: add a function to read sidedata from revlog raw text
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 40972
diff changeset
   105
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   106
23014
f00813325c5a repoview: add a FilteredIndexError class
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 23010
diff changeset
   107
class FilteredIndexError(IndexError):
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
   108
    __bytes__ = _tobytes
23014
f00813325c5a repoview: add a FilteredIndexError class
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 23010
diff changeset
   109
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   110
7633
08cabecfa8a8 errors: move revlog errors
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
   111
class LookupError(RevlogError, KeyError):
51287
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   112
    def __init__(self, name: bytes, index: bytes, message: bytes) -> None:
7633
08cabecfa8a8 errors: move revlog errors
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
   113
        self.name = name
24038
10d02cd18604 error: store filename and message on LookupError for later
Martin von Zweigbergk <martinvonz@google.com>
parents: 23415
diff changeset
   114
        self.index = index
24137
dcfdfd63bde4 error.LookupError: rename 'message' property to something else
Siddharth Agarwal <sid0@fb.com>
parents: 24120
diff changeset
   115
        # this can't be called 'message' because at least some installs of
dcfdfd63bde4 error.LookupError: rename 'message' property to something else
Siddharth Agarwal <sid0@fb.com>
parents: 24120
diff changeset
   116
        # Python 2.6+ complain about the 'message' property being deprecated
dcfdfd63bde4 error.LookupError: rename 'message' property to something else
Siddharth Agarwal <sid0@fb.com>
parents: 24120
diff changeset
   117
        self.lookupmessage = message
36541
c6a7b99f150a error: fix isinstnace check to use bytes instead of str
Augie Fackler <augie@google.com>
parents: 35105
diff changeset
   118
        if isinstance(name, bytes) and len(name) == 20:
46651
6fc57680cfd6 error: remove shortening of node in error message
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46625
diff changeset
   119
            from .node import hex
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   120
46651
6fc57680cfd6 error: remove shortening of node in error message
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46625
diff changeset
   121
            name = hex(name)
45503
bd5b2b29b82d py3: fix formatting of LookupError for workingctx
Yuya Nishihara <yuya@tcha.org>
parents: 45151
diff changeset
   122
        # if name is a binary node, it can be None
bd5b2b29b82d py3: fix formatting of LookupError for workingctx
Yuya Nishihara <yuya@tcha.org>
parents: 45151
diff changeset
   123
        RevlogError.__init__(
bd5b2b29b82d py3: fix formatting of LookupError for workingctx
Yuya Nishihara <yuya@tcha.org>
parents: 45151
diff changeset
   124
            self, b'%s@%s: %s' % (index, pycompat.bytestr(name), message)
bd5b2b29b82d py3: fix formatting of LookupError for workingctx
Yuya Nishihara <yuya@tcha.org>
parents: 45151
diff changeset
   125
        )
7633
08cabecfa8a8 errors: move revlog errors
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
   126
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
   127
    def __bytes__(self):
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
   128
        return RevlogError.__bytes__(self)
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
   129
7633
08cabecfa8a8 errors: move revlog errors
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
   130
    def __str__(self):
08cabecfa8a8 errors: move revlog errors
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
   131
        return RevlogError.__str__(self)
7636
e3f8c6d6b72e error: move ParseError
Matt Mackall <mpm@selenic.com>
parents: 7633
diff changeset
   132
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   133
38841
df0873ab5c14 revlog: use specialized exception for ambiguous prefix lookup
Martin von Zweigbergk <martinvonz@google.com>
parents: 38607
diff changeset
   134
class AmbiguousPrefixLookupError(LookupError):
df0873ab5c14 revlog: use specialized exception for ambiguous prefix lookup
Martin von Zweigbergk <martinvonz@google.com>
parents: 38607
diff changeset
   135
    pass
df0873ab5c14 revlog: use specialized exception for ambiguous prefix lookup
Martin von Zweigbergk <martinvonz@google.com>
parents: 38607
diff changeset
   136
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   137
23015
21c44c1aed87 repoview: add a FilteredLookupError class
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 23014
diff changeset
   138
class FilteredLookupError(LookupError):
21c44c1aed87 repoview: add a FilteredLookupError class
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 23014
diff changeset
   139
    pass
21c44c1aed87 repoview: add a FilteredLookupError class
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 23014
diff changeset
   140
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   141
18855
50c922c1b514 hgweb: show correct error message for i18n environment
Takumi IINO <trot.thunder@gmail.com>
parents: 15017
diff changeset
   142
class ManifestLookupError(LookupError):
50c922c1b514 hgweb: show correct error message for i18n environment
Takumi IINO <trot.thunder@gmail.com>
parents: 15017
diff changeset
   143
    pass
50c922c1b514 hgweb: show correct error message for i18n environment
Takumi IINO <trot.thunder@gmail.com>
parents: 15017
diff changeset
   144
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   145
11287
b901bb751999 error: change ParseError to CommandError
Matt Mackall <mpm@selenic.com>
parents: 10263
diff changeset
   146
class CommandError(Exception):
7636
e3f8c6d6b72e error: move ParseError
Matt Mackall <mpm@selenic.com>
parents: 7633
diff changeset
   147
    """Exception raised on errors in parsing the command line."""
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   148
51287
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   149
    def __init__(self, command: Optional[bytes], message: bytes) -> None:
45678
bd2df58366b1 errors: name arguments to CommandError constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45677
diff changeset
   150
        self.command = command
bd2df58366b1 errors: name arguments to CommandError constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45677
diff changeset
   151
        self.message = message
bd2df58366b1 errors: name arguments to CommandError constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45677
diff changeset
   152
        super(CommandError, self).__init__()
bd2df58366b1 errors: name arguments to CommandError constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45677
diff changeset
   153
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
   154
    __bytes__ = _tobytes
7637
1d54e2f6c0b7 error: move repo errors
Matt Mackall <mpm@selenic.com>
parents: 7636
diff changeset
   155
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   156
45677
bdd2cdf9e248 errors: move UnknownCommand and AmbiguousCommand near CommandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45503
diff changeset
   157
class UnknownCommand(Exception):
bdd2cdf9e248 errors: move UnknownCommand and AmbiguousCommand near CommandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45503
diff changeset
   158
    """Exception raised if command is not in the command table."""
bdd2cdf9e248 errors: move UnknownCommand and AmbiguousCommand near CommandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45503
diff changeset
   159
51287
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   160
    def __init__(
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   161
        self,
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   162
        command: bytes,
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   163
        all_commands: Optional[List[bytes]] = None,
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   164
    ) -> None:
45680
bb1a988ef4a5 errors: name arguments to UnknownCommand constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45679
diff changeset
   165
        self.command = command
bb1a988ef4a5 errors: name arguments to UnknownCommand constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45679
diff changeset
   166
        self.all_commands = all_commands
bb1a988ef4a5 errors: name arguments to UnknownCommand constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45679
diff changeset
   167
        super(UnknownCommand, self).__init__()
bb1a988ef4a5 errors: name arguments to UnknownCommand constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45679
diff changeset
   168
45677
bdd2cdf9e248 errors: move UnknownCommand and AmbiguousCommand near CommandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45503
diff changeset
   169
    __bytes__ = _tobytes
bdd2cdf9e248 errors: move UnknownCommand and AmbiguousCommand near CommandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45503
diff changeset
   170
bdd2cdf9e248 errors: move UnknownCommand and AmbiguousCommand near CommandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45503
diff changeset
   171
bdd2cdf9e248 errors: move UnknownCommand and AmbiguousCommand near CommandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45503
diff changeset
   172
class AmbiguousCommand(Exception):
bdd2cdf9e248 errors: move UnknownCommand and AmbiguousCommand near CommandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45503
diff changeset
   173
    """Exception raised if command shortcut matches more than one command."""
bdd2cdf9e248 errors: move UnknownCommand and AmbiguousCommand near CommandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45503
diff changeset
   174
51287
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   175
    def __init__(self, prefix: bytes, matches: List[bytes]) -> None:
45679
65e2b64670b5 errors: name arguments to AmbiguousCommand constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45678
diff changeset
   176
        self.prefix = prefix
65e2b64670b5 errors: name arguments to AmbiguousCommand constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45678
diff changeset
   177
        self.matches = matches
65e2b64670b5 errors: name arguments to AmbiguousCommand constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45678
diff changeset
   178
        super(AmbiguousCommand, self).__init__()
65e2b64670b5 errors: name arguments to AmbiguousCommand constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45678
diff changeset
   179
45677
bdd2cdf9e248 errors: move UnknownCommand and AmbiguousCommand near CommandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45503
diff changeset
   180
    __bytes__ = _tobytes
bdd2cdf9e248 errors: move UnknownCommand and AmbiguousCommand near CommandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45503
diff changeset
   181
bdd2cdf9e248 errors: move UnknownCommand and AmbiguousCommand near CommandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45503
diff changeset
   182
45825
8f07f5a9c3de worker: raise exception instead of calling sys.exit() with child's code
Martin von Zweigbergk <martinvonz@google.com>
parents: 45776
diff changeset
   183
class WorkerError(Exception):
8f07f5a9c3de worker: raise exception instead of calling sys.exit() with child's code
Martin von Zweigbergk <martinvonz@google.com>
parents: 45776
diff changeset
   184
    """Exception raised when a worker process dies."""
8f07f5a9c3de worker: raise exception instead of calling sys.exit() with child's code
Martin von Zweigbergk <martinvonz@google.com>
parents: 45776
diff changeset
   185
51287
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   186
    def __init__(self, status_code: int) -> None:
45825
8f07f5a9c3de worker: raise exception instead of calling sys.exit() with child's code
Martin von Zweigbergk <martinvonz@google.com>
parents: 45776
diff changeset
   187
        self.status_code = status_code
45903
64faa55716f4 tests: make test-worker.t pass on py2
Martin von Zweigbergk <martinvonz@google.com>
parents: 45894
diff changeset
   188
        # Pass status code to superclass just so it becomes part of __bytes__
64faa55716f4 tests: make test-worker.t pass on py2
Martin von Zweigbergk <martinvonz@google.com>
parents: 45894
diff changeset
   189
        super(WorkerError, self).__init__(status_code)
64faa55716f4 tests: make test-worker.t pass on py2
Martin von Zweigbergk <martinvonz@google.com>
parents: 45894
diff changeset
   190
64faa55716f4 tests: make test-worker.t pass on py2
Martin von Zweigbergk <martinvonz@google.com>
parents: 45894
diff changeset
   191
    __bytes__ = _tobytes
45825
8f07f5a9c3de worker: raise exception instead of calling sys.exit() with child's code
Martin von Zweigbergk <martinvonz@google.com>
parents: 45776
diff changeset
   192
8f07f5a9c3de worker: raise exception instead of calling sys.exit() with child's code
Martin von Zweigbergk <martinvonz@google.com>
parents: 45776
diff changeset
   193
47291
d9c71bbe20f7 errors: make InterventionRequired subclass Abort
Martin von Zweigbergk <martinvonz@google.com>
parents: 47290
diff changeset
   194
class InterventionRequired(Abort):
18931
3c224e0949de error: introduce new InterventionRequired exception
Augie Fackler <raf@durin42.com>
parents: 18855
diff changeset
   195
    """Exception raised when a command requires human intervention."""
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   196
47304
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
   197
    coarse_exit_code = 1
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
   198
    detailed_exit_code = 240
47291
d9c71bbe20f7 errors: make InterventionRequired subclass Abort
Martin von Zweigbergk <martinvonz@google.com>
parents: 47290
diff changeset
   199
51287
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   200
    def format(self) -> bytes:
47291
d9c71bbe20f7 errors: make InterventionRequired subclass Abort
Martin von Zweigbergk <martinvonz@google.com>
parents: 47290
diff changeset
   201
        from .i18n import _
d9c71bbe20f7 errors: make InterventionRequired subclass Abort
Martin von Zweigbergk <martinvonz@google.com>
parents: 47290
diff changeset
   202
d9c71bbe20f7 errors: make InterventionRequired subclass Abort
Martin von Zweigbergk <martinvonz@google.com>
parents: 47290
diff changeset
   203
        message = _(b"%s\n") % self.message
d9c71bbe20f7 errors: make InterventionRequired subclass Abort
Martin von Zweigbergk <martinvonz@google.com>
parents: 47290
diff changeset
   204
        if self.hint:
d9c71bbe20f7 errors: make InterventionRequired subclass Abort
Martin von Zweigbergk <martinvonz@google.com>
parents: 47290
diff changeset
   205
            message += _(b"(%s)\n") % self.hint
d9c71bbe20f7 errors: make InterventionRequired subclass Abort
Martin von Zweigbergk <martinvonz@google.com>
parents: 47290
diff changeset
   206
        return message
18931
3c224e0949de error: introduce new InterventionRequired exception
Augie Fackler <raf@durin42.com>
parents: 18855
diff changeset
   207
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   208
45151
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43506
diff changeset
   209
class ConflictResolutionRequired(InterventionRequired):
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43506
diff changeset
   210
    """Exception raised when a continuable command required merge conflict resolution."""
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43506
diff changeset
   211
51287
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   212
    def __init__(self, opname: bytes) -> None:
45151
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43506
diff changeset
   213
        from .i18n import _
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43506
diff changeset
   214
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43506
diff changeset
   215
        self.opname = opname
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43506
diff changeset
   216
        InterventionRequired.__init__(
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43506
diff changeset
   217
            self,
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43506
diff changeset
   218
            _(
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43506
diff changeset
   219
                b"unresolved conflicts (see 'hg resolve', then 'hg %s --continue')"
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43506
diff changeset
   220
            )
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43506
diff changeset
   221
            % opname,
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43506
diff changeset
   222
        )
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43506
diff changeset
   223
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43506
diff changeset
   224
45827
8d72e29ad1e0 errors: introduce InputError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45825
diff changeset
   225
class InputError(Abort):
8d72e29ad1e0 errors: introduce InputError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45825
diff changeset
   226
    """Indicates that the user made an error in their input.
8d72e29ad1e0 errors: introduce InputError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45825
diff changeset
   227
8d72e29ad1e0 errors: introduce InputError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45825
diff changeset
   228
    Examples: Invalid command, invalid flags, invalid revision.
8d72e29ad1e0 errors: introduce InputError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45825
diff changeset
   229
    """
8d72e29ad1e0 errors: introduce InputError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45825
diff changeset
   230
47304
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
   231
    detailed_exit_code = 10
47289
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
   232
45827
8d72e29ad1e0 errors: introduce InputError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45825
diff changeset
   233
45840
527ce85c2e60 errors: introduce StateError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45827
diff changeset
   234
class StateError(Abort):
527ce85c2e60 errors: introduce StateError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45827
diff changeset
   235
    """Indicates that the operation might work if retried in a different state.
527ce85c2e60 errors: introduce StateError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45827
diff changeset
   236
527ce85c2e60 errors: introduce StateError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45827
diff changeset
   237
    Examples: Unresolved merge conflicts, unfinished operations.
527ce85c2e60 errors: introduce StateError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45827
diff changeset
   238
    """
527ce85c2e60 errors: introduce StateError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45827
diff changeset
   239
47304
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
   240
    detailed_exit_code = 20
47289
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
   241
45840
527ce85c2e60 errors: introduce StateError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45827
diff changeset
   242
45877
ac362d5a7893 errors: introduce CanceledError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45840
diff changeset
   243
class CanceledError(Abort):
ac362d5a7893 errors: introduce CanceledError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45840
diff changeset
   244
    """Indicates that the user canceled the operation.
ac362d5a7893 errors: introduce CanceledError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45840
diff changeset
   245
ac362d5a7893 errors: introduce CanceledError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45840
diff changeset
   246
    Examples: Close commit editor with error status, quit chistedit.
ac362d5a7893 errors: introduce CanceledError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45840
diff changeset
   247
    """
ac362d5a7893 errors: introduce CanceledError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45840
diff changeset
   248
47304
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
   249
    detailed_exit_code = 250
47289
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
   250
45877
ac362d5a7893 errors: introduce CanceledError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45840
diff changeset
   251
45915
8f50dc096cf4 errors: introduce SecurityError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45903
diff changeset
   252
class SecurityError(Abort):
8f50dc096cf4 errors: introduce SecurityError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45903
diff changeset
   253
    """Indicates that some aspect of security failed.
8f50dc096cf4 errors: introduce SecurityError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45903
diff changeset
   254
8f50dc096cf4 errors: introduce SecurityError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45903
diff changeset
   255
    Examples: Bad server credentials, expired local credentials for network
8f50dc096cf4 errors: introduce SecurityError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45903
diff changeset
   256
    filesystem, mismatched GPG signature, DoS protection.
8f50dc096cf4 errors: introduce SecurityError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45903
diff changeset
   257
    """
8f50dc096cf4 errors: introduce SecurityError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45903
diff changeset
   258
47304
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
   259
    detailed_exit_code = 150
47289
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
   260
45915
8f50dc096cf4 errors: introduce SecurityError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45903
diff changeset
   261
26692
8d1cfd77b64f hook: raise a separate exception for when loading a hook fails
Siddharth Agarwal <sid0@fb.com>
parents: 26683
diff changeset
   262
class HookLoadError(Abort):
8d1cfd77b64f hook: raise a separate exception for when loading a hook fails
Siddharth Agarwal <sid0@fb.com>
parents: 26683
diff changeset
   263
    """raised when loading a hook fails, aborting an operation
8d1cfd77b64f hook: raise a separate exception for when loading a hook fails
Siddharth Agarwal <sid0@fb.com>
parents: 26683
diff changeset
   264
8d1cfd77b64f hook: raise a separate exception for when loading a hook fails
Siddharth Agarwal <sid0@fb.com>
parents: 26683
diff changeset
   265
    Exists to allow more specialized catching."""
8d1cfd77b64f hook: raise a separate exception for when loading a hook fails
Siddharth Agarwal <sid0@fb.com>
parents: 26683
diff changeset
   266
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   267
23415
cdbb85489c41 hook: raise a more specialized HookAbort exception when a hook fails
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 23016
diff changeset
   268
class HookAbort(Abort):
cdbb85489c41 hook: raise a more specialized HookAbort exception when a hook fails
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 23016
diff changeset
   269
    """raised when a validation hook fails, aborting an operation
cdbb85489c41 hook: raise a more specialized HookAbort exception when a hook fails
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 23016
diff changeset
   270
cdbb85489c41 hook: raise a more specialized HookAbort exception when a hook fails
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 23016
diff changeset
   271
    Exists to allow more specialized catching."""
cdbb85489c41 hook: raise a more specialized HookAbort exception when a hook fails
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 23016
diff changeset
   272
47304
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
   273
    detailed_exit_code = 40
47289
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
   274
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   275
11288
2123aad24d56 error: add new ParseError for various parsing errors
Matt Mackall <mpm@selenic.com>
parents: 11287
diff changeset
   276
class ConfigError(Abort):
22359
e3714b927af5 error: use docstrings, not bare strings, for error classes
Mike Edgar <adgar@google.com>
parents: 21747
diff changeset
   277
    """Exception raised when parsing config files"""
8144
fca54469480e ui: introduce new config parser
Matt Mackall <mpm@selenic.com>
parents: 7947
diff changeset
   278
47304
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
   279
    detailed_exit_code = 30
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
   280
51287
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   281
    def __init__(
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   282
        self,
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   283
        message: bytes,
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   284
        location: Optional[bytes] = None,
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   285
        hint: Optional[bytes] = None,
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   286
    ) -> None:
47304
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
   287
        super(ConfigError, self).__init__(message, hint=hint)
45894
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45891
diff changeset
   288
        self.location = location
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45891
diff changeset
   289
51287
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   290
    def format(self) -> bytes:
45894
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45891
diff changeset
   291
        from .i18n import _
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45891
diff changeset
   292
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45891
diff changeset
   293
        if self.location is not None:
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45891
diff changeset
   294
            message = _(b"config error at %s: %s\n") % (
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45891
diff changeset
   295
                pycompat.bytestr(self.location),
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45891
diff changeset
   296
                self.message,
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45891
diff changeset
   297
            )
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45891
diff changeset
   298
        else:
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45891
diff changeset
   299
            message = _(b"config error: %s\n") % self.message
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45891
diff changeset
   300
        if self.hint:
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45891
diff changeset
   301
            message += _(b"(%s)\n") % self.hint
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45891
diff changeset
   302
        return message
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45891
diff changeset
   303
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   304
26683
634666c48b7d update: introduce a 'UpdateAbort' exception
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26640
diff changeset
   305
class UpdateAbort(Abort):
634666c48b7d update: introduce a 'UpdateAbort' exception
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26640
diff changeset
   306
    """Raised when an update is aborted for destination issue"""
634666c48b7d update: introduce a 'UpdateAbort' exception
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26640
diff changeset
   307
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   308
28141
13bb8de97f87 destutil: add more precise error classes for destmerge
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 27628
diff changeset
   309
class MergeDestAbort(Abort):
13bb8de97f87 destutil: add more precise error classes for destmerge
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 27628
diff changeset
   310
    """Raised when an update is aborted for destination issues"""
13bb8de97f87 destutil: add more precise error classes for destmerge
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 27628
diff changeset
   311
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   312
28141
13bb8de97f87 destutil: add more precise error classes for destmerge
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 27628
diff changeset
   313
class NoMergeDestAbort(MergeDestAbort):
13bb8de97f87 destutil: add more precise error classes for destmerge
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 27628
diff changeset
   314
    """Raised when an update is aborted because there is nothing to merge"""
13bb8de97f87 destutil: add more precise error classes for destmerge
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 27628
diff changeset
   315
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   316
28141
13bb8de97f87 destutil: add more precise error classes for destmerge
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 27628
diff changeset
   317
class ManyMergeDestAbort(MergeDestAbort):
30332
318a24b52eeb spelling: fixes of non-dictionary words
Mads Kiilerich <madski@unity3d.com>
parents: 29536
diff changeset
   318
    """Raised when an update is aborted because destination is ambiguous"""
28141
13bb8de97f87 destutil: add more precise error classes for destmerge
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 27628
diff changeset
   319
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   320
26896
5e46123e6c35 error: add structured exception for EOF at prompt
Siddharth Agarwal <sid0@fb.com>
parents: 26693
diff changeset
   321
class ResponseExpected(Abort):
5e46123e6c35 error: add structured exception for EOF at prompt
Siddharth Agarwal <sid0@fb.com>
parents: 26693
diff changeset
   322
    """Raised when an EOF is received for a prompt"""
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   323
26896
5e46123e6c35 error: add structured exception for EOF at prompt
Siddharth Agarwal <sid0@fb.com>
parents: 26693
diff changeset
   324
    def __init__(self):
5e46123e6c35 error: add structured exception for EOF at prompt
Siddharth Agarwal <sid0@fb.com>
parents: 26693
diff changeset
   325
        from .i18n import _
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   326
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
   327
        Abort.__init__(self, _(b'response expected'))
26896
5e46123e6c35 error: add structured exception for EOF at prompt
Siddharth Agarwal <sid0@fb.com>
parents: 26693
diff changeset
   328
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   329
46976
f9482db16cef errors: introduce a class for remote errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 46975
diff changeset
   330
class RemoteError(Abort):
f9482db16cef errors: introduce a class for remote errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 46975
diff changeset
   331
    """Exception raised when interacting with a remote repo fails"""
f9482db16cef errors: introduce a class for remote errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 46975
diff changeset
   332
47304
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
   333
    detailed_exit_code = 100
47289
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
   334
46976
f9482db16cef errors: introduce a class for remote errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 46975
diff changeset
   335
f9482db16cef errors: introduce a class for remote errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 46975
diff changeset
   336
class OutOfBandError(RemoteError):
22359
e3714b927af5 error: use docstrings, not bare strings, for error classes
Mike Edgar <adgar@google.com>
parents: 21747
diff changeset
   337
    """Exception raised when a remote repo reports failure"""
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   338
51287
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   339
    def __init__(
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   340
        self,
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   341
        message: Optional[bytes] = None,
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   342
        hint: Optional[bytes] = None,
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   343
    ):
46975
14ddb1dca2c0 errors: make OutOfBandError extend Abort
Martin von Zweigbergk <martinvonz@google.com>
parents: 46899
diff changeset
   344
        from .i18n import _
14ddb1dca2c0 errors: make OutOfBandError extend Abort
Martin von Zweigbergk <martinvonz@google.com>
parents: 46899
diff changeset
   345
46981
abd18d6306f1 errors: remove unnecessary varargs handling from OutOfBandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 46976
diff changeset
   346
        if message:
46975
14ddb1dca2c0 errors: make OutOfBandError extend Abort
Martin von Zweigbergk <martinvonz@google.com>
parents: 46899
diff changeset
   347
            # Abort.format() adds a trailing newline
46981
abd18d6306f1 errors: remove unnecessary varargs handling from OutOfBandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 46976
diff changeset
   348
            message = _(b"remote error:\n%s") % message.rstrip(b'\n')
46975
14ddb1dca2c0 errors: make OutOfBandError extend Abort
Martin von Zweigbergk <martinvonz@google.com>
parents: 46899
diff changeset
   349
        else:
14ddb1dca2c0 errors: make OutOfBandError extend Abort
Martin von Zweigbergk <martinvonz@google.com>
parents: 46899
diff changeset
   350
            message = _(b"remote error")
46981
abd18d6306f1 errors: remove unnecessary varargs handling from OutOfBandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 46976
diff changeset
   351
        super(OutOfBandError, self).__init__(message, hint=hint)
15017
f4522df38c65 wireproto: add out-of-band error class to allow remote repo to report errors
Andrew Pritchard <andrewp@fogcreek.com>
parents: 14761
diff changeset
   352
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   353
45887
7eb221b9af6c errors: make ParseError a subtype of Abort
Martin von Zweigbergk <martinvonz@google.com>
parents: 45885
diff changeset
   354
class ParseError(Abort):
24040
7f375d2de945 error: update docstring on ParseError
Augie Fackler <augie@google.com>
parents: 24038
diff changeset
   355
    """Raised when parsing config files and {rev,file}sets (msg[, pos])"""
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   356
47304
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
   357
    detailed_exit_code = 10
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
   358
51287
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   359
    def __init__(
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   360
        self,
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   361
        message: bytes,
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   362
        location: Optional[Union[bytes, int]] = None,
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   363
        hint: Optional[bytes] = None,
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   364
    ):
47304
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
   365
        super(ParseError, self).__init__(message, hint=hint)
45776
0fc8b066928a errors: name arguments to ParseError constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45775
diff changeset
   366
        self.location = location
0fc8b066928a errors: name arguments to ParseError constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45775
diff changeset
   367
51287
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   368
    def format(self) -> bytes:
45884
98399dd1b96c errors: make formatparse() an instance method on ParseError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45883
diff changeset
   369
        from .i18n import _
98399dd1b96c errors: make formatparse() an instance method on ParseError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45883
diff changeset
   370
98399dd1b96c errors: make formatparse() an instance method on ParseError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45883
diff changeset
   371
        if self.location is not None:
98399dd1b96c errors: make formatparse() an instance method on ParseError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45883
diff changeset
   372
            message = _(b"hg: parse error at %s: %s\n") % (
98399dd1b96c errors: make formatparse() an instance method on ParseError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45883
diff changeset
   373
                pycompat.bytestr(self.location),
98399dd1b96c errors: make formatparse() an instance method on ParseError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45883
diff changeset
   374
                self.message,
98399dd1b96c errors: make formatparse() an instance method on ParseError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45883
diff changeset
   375
            )
98399dd1b96c errors: make formatparse() an instance method on ParseError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45883
diff changeset
   376
        else:
98399dd1b96c errors: make formatparse() an instance method on ParseError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45883
diff changeset
   377
            message = _(b"hg: parse error: %s\n") % self.message
98399dd1b96c errors: make formatparse() an instance method on ParseError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45883
diff changeset
   378
        if self.hint:
98399dd1b96c errors: make formatparse() an instance method on ParseError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45883
diff changeset
   379
            message += _(b"(%s)\n") % self.hint
98399dd1b96c errors: make formatparse() an instance method on ParseError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45883
diff changeset
   380
        return message
98399dd1b96c errors: make formatparse() an instance method on ParseError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45883
diff changeset
   381
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   382
34251
61714510220d error: move patch.PatchError so it can easily implement __bytes__ (API)
Yuya Nishihara <yuya@tcha.org>
parents: 32616
diff changeset
   383
class PatchError(Exception):
61714510220d error: move patch.PatchError so it can easily implement __bytes__ (API)
Yuya Nishihara <yuya@tcha.org>
parents: 32616
diff changeset
   384
    __bytes__ = _tobytes
61714510220d error: move patch.PatchError so it can easily implement __bytes__ (API)
Yuya Nishihara <yuya@tcha.org>
parents: 32616
diff changeset
   385
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   386
48363
6a454e7053a1 errors: return more detailed errors when failing to parse or apply patch
Martin von Zweigbergk <martinvonz@google.com>
parents: 48284
diff changeset
   387
class PatchParseError(PatchError):
6a454e7053a1 errors: return more detailed errors when failing to parse or apply patch
Martin von Zweigbergk <martinvonz@google.com>
parents: 48284
diff changeset
   388
    __bytes__ = _tobytes
6a454e7053a1 errors: return more detailed errors when failing to parse or apply patch
Martin von Zweigbergk <martinvonz@google.com>
parents: 48284
diff changeset
   389
6a454e7053a1 errors: return more detailed errors when failing to parse or apply patch
Martin von Zweigbergk <martinvonz@google.com>
parents: 48284
diff changeset
   390
6a454e7053a1 errors: return more detailed errors when failing to parse or apply patch
Martin von Zweigbergk <martinvonz@google.com>
parents: 48284
diff changeset
   391
class PatchApplicationError(PatchError):
6a454e7053a1 errors: return more detailed errors when failing to parse or apply patch
Martin von Zweigbergk <martinvonz@google.com>
parents: 48284
diff changeset
   392
    __bytes__ = _tobytes
6a454e7053a1 errors: return more detailed errors when failing to parse or apply patch
Martin von Zweigbergk <martinvonz@google.com>
parents: 48284
diff changeset
   393
6a454e7053a1 errors: return more detailed errors when failing to parse or apply patch
Martin von Zweigbergk <martinvonz@google.com>
parents: 48284
diff changeset
   394
51287
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   395
def getsimilar(symbols: Iterable[bytes], value: bytes) -> List[bytes]:
45882
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45877
diff changeset
   396
    sim = lambda x: difflib.SequenceMatcher(None, value, x).ratio()
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45877
diff changeset
   397
    # The cutoff for similarity here is pretty arbitrary. It should
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45877
diff changeset
   398
    # probably be investigated and tweaked.
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45877
diff changeset
   399
    return [s for s in symbols if sim(s) > 0.6]
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45877
diff changeset
   400
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45877
diff changeset
   401
51287
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   402
def similarity_hint(similar: List[bytes]) -> Optional[bytes]:
45882
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45877
diff changeset
   403
    from .i18n import _
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45877
diff changeset
   404
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45877
diff changeset
   405
    if len(similar) == 1:
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45877
diff changeset
   406
        return _(b"did you mean %s?") % similar[0]
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45877
diff changeset
   407
    elif similar:
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45877
diff changeset
   408
        ss = b", ".join(sorted(similar))
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45877
diff changeset
   409
        return _(b"did you mean one of %s?") % ss
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45877
diff changeset
   410
    else:
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45877
diff changeset
   411
        return None
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45877
diff changeset
   412
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45877
diff changeset
   413
24217
d2b81256db1e error: add a new UnknownIdentifier error type
Augie Fackler <augie@google.com>
parents: 24190
diff changeset
   414
class UnknownIdentifier(ParseError):
d2b81256db1e error: add a new UnknownIdentifier error type
Augie Fackler <augie@google.com>
parents: 24190
diff changeset
   415
    """Exception raised when a {rev,file}set references an unknown identifier"""
d2b81256db1e error: add a new UnknownIdentifier error type
Augie Fackler <augie@google.com>
parents: 24190
diff changeset
   416
51287
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   417
    def __init__(self, function: bytes, symbols: Iterable[bytes]) -> None:
25945
147bd9e238a1 error: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25484
diff changeset
   418
        from .i18n import _
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   419
45883
1817b66897ad errors: create "similarity hint" for UnknownIdentifier eagerly in constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45882
diff changeset
   420
        similar = getsimilar(symbols, function)
1817b66897ad errors: create "similarity hint" for UnknownIdentifier eagerly in constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45882
diff changeset
   421
        hint = similarity_hint(similar)
1817b66897ad errors: create "similarity hint" for UnknownIdentifier eagerly in constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45882
diff changeset
   422
1817b66897ad errors: create "similarity hint" for UnknownIdentifier eagerly in constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45882
diff changeset
   423
        ParseError.__init__(
1817b66897ad errors: create "similarity hint" for UnknownIdentifier eagerly in constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45882
diff changeset
   424
            self, _(b"unknown identifier: %s") % function, hint=hint
1817b66897ad errors: create "similarity hint" for UnknownIdentifier eagerly in constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45882
diff changeset
   425
        )
24217
d2b81256db1e error: add a new UnknownIdentifier error type
Augie Fackler <augie@google.com>
parents: 24190
diff changeset
   426
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   427
29509
945b4c14c570 error: make HintException a mix-in class not derived from BaseException (API)
Yuya Nishihara <yuya@tcha.org>
parents: 28141
diff changeset
   428
class RepoError(Hint, Exception):
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
   429
    __bytes__ = _tobytes
7637
1d54e2f6c0b7 error: move repo errors
Matt Mackall <mpm@selenic.com>
parents: 7636
diff changeset
   430
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   431
9423
1444a42f6052 Make distinct lookup error for localrepo.lookup
Matt Mackall <mpm@selenic.com>
parents: 8227
diff changeset
   432
class RepoLookupError(RepoError):
1444a42f6052 Make distinct lookup error for localrepo.lookup
Matt Mackall <mpm@selenic.com>
parents: 8227
diff changeset
   433
    pass
1444a42f6052 Make distinct lookup error for localrepo.lookup
Matt Mackall <mpm@selenic.com>
parents: 8227
diff changeset
   434
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   435
23016
2bd51e61c65e repoview: add a FilteredRepoLookupError
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 23015
diff changeset
   436
class FilteredRepoLookupError(RepoLookupError):
2bd51e61c65e repoview: add a FilteredRepoLookupError
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 23015
diff changeset
   437
    pass
2bd51e61c65e repoview: add a FilteredRepoLookupError
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 23015
diff changeset
   438
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   439
7637
1d54e2f6c0b7 error: move repo errors
Matt Mackall <mpm@selenic.com>
parents: 7636
diff changeset
   440
class CapabilityError(RepoError):
1d54e2f6c0b7 error: move repo errors
Matt Mackall <mpm@selenic.com>
parents: 7636
diff changeset
   441
    pass
7640
7197812e8d44 error: move lock errors
Matt Mackall <mpm@selenic.com>
parents: 7637
diff changeset
   442
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   443
13447
931a72e00efa introduce new RequirementError (issue2649)
Adrian Buehlmann <adrian@cadifra.com>
parents: 11574
diff changeset
   444
class RequirementError(RepoError):
931a72e00efa introduce new RequirementError (issue2649)
Adrian Buehlmann <adrian@cadifra.com>
parents: 11574
diff changeset
   445
    """Exception raised if .hg/requires has an unknown entry."""
931a72e00efa introduce new RequirementError (issue2649)
Adrian Buehlmann <adrian@cadifra.com>
parents: 11574
diff changeset
   446
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   447
31959
b445a3f00528 stdio: add machinery to identify failed stdout/stderr writes
Bryan O'Sullivan <bryano@fb.com>
parents: 31503
diff changeset
   448
class StdioError(IOError):
b445a3f00528 stdio: add machinery to identify failed stdout/stderr writes
Bryan O'Sullivan <bryano@fb.com>
parents: 31503
diff changeset
   449
    """Raised if I/O to stdout or stderr fails"""
b445a3f00528 stdio: add machinery to identify failed stdout/stderr writes
Bryan O'Sullivan <bryano@fb.com>
parents: 31503
diff changeset
   450
51287
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   451
    def __init__(self, err: IOError) -> None:
31959
b445a3f00528 stdio: add machinery to identify failed stdout/stderr writes
Bryan O'Sullivan <bryano@fb.com>
parents: 31503
diff changeset
   452
        IOError.__init__(self, err.errno, err.strerror)
b445a3f00528 stdio: add machinery to identify failed stdout/stderr writes
Bryan O'Sullivan <bryano@fb.com>
parents: 31503
diff changeset
   453
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
   454
    # no __bytes__() because error message is derived from the standard IOError
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
   455
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   456
26985
039a53c87370 error: add a structured exception for unsupported merge records
Siddharth Agarwal <sid0@fb.com>
parents: 26896
diff changeset
   457
class UnsupportedMergeRecords(Abort):
51287
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   458
    def __init__(self, recordtypes: Iterable[bytes]) -> None:
26985
039a53c87370 error: add a structured exception for unsupported merge records
Siddharth Agarwal <sid0@fb.com>
parents: 26896
diff changeset
   459
        from .i18n import _
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   460
26985
039a53c87370 error: add a structured exception for unsupported merge records
Siddharth Agarwal <sid0@fb.com>
parents: 26896
diff changeset
   461
        self.recordtypes = sorted(recordtypes)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
   462
        s = b' '.join(self.recordtypes)
26985
039a53c87370 error: add a structured exception for unsupported merge records
Siddharth Agarwal <sid0@fb.com>
parents: 26896
diff changeset
   463
        Abort.__init__(
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   464
            self,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
   465
            _(b'unsupported merge state records: %s') % s,
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   466
            hint=_(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
   467
                b'see https://mercurial-scm.org/wiki/MergeStateRecords for '
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
   468
                b'more information'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   469
            ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   470
        )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   471
26985
039a53c87370 error: add a structured exception for unsupported merge records
Siddharth Agarwal <sid0@fb.com>
parents: 26896
diff changeset
   472
32596
19df975eb555 obsolete: raise richer exception on unknown version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 32402
diff changeset
   473
class UnknownVersion(Abort):
45942
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45915
diff changeset
   474
    """generic exception for aborting from an encounter with an unknown version"""
32596
19df975eb555 obsolete: raise richer exception on unknown version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 32402
diff changeset
   475
51287
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   476
    def __init__(
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   477
        self,
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   478
        msg: bytes,
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   479
        hint: Optional[bytes] = None,
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   480
        version: Optional[bytes] = None,
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   481
    ) -> None:
32596
19df975eb555 obsolete: raise richer exception on unknown version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 32402
diff changeset
   482
        self.version = version
19df975eb555 obsolete: raise richer exception on unknown version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 32402
diff changeset
   483
        super(UnknownVersion, self).__init__(msg, hint=hint)
19df975eb555 obsolete: raise richer exception on unknown version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 32402
diff changeset
   484
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   485
7640
7197812e8d44 error: move lock errors
Matt Mackall <mpm@selenic.com>
parents: 7637
diff changeset
   486
class LockError(IOError):
51287
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   487
    def __init__(
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   488
        self,
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   489
        errno: int,
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   490
        strerror: str,
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   491
        filename: bytes,
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   492
        desc: Optional[bytes],
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   493
    ) -> None:
7640
7197812e8d44 error: move lock errors
Matt Mackall <mpm@selenic.com>
parents: 7637
diff changeset
   494
        IOError.__init__(self, errno, strerror, filename)
7197812e8d44 error: move lock errors
Matt Mackall <mpm@selenic.com>
parents: 7637
diff changeset
   495
        self.desc = desc
7197812e8d44 error: move lock errors
Matt Mackall <mpm@selenic.com>
parents: 7637
diff changeset
   496
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
   497
    # no __bytes__() because error message is derived from the standard IOError
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
   498
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   499
7640
7197812e8d44 error: move lock errors
Matt Mackall <mpm@selenic.com>
parents: 7637
diff changeset
   500
class LockHeld(LockError):
51287
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   501
    def __init__(
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   502
        self,
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   503
        errno: int,
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   504
        filename: bytes,
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   505
        desc: Optional[bytes],
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   506
        locker,
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   507
    ):
51286
81224afd938d lock: properly convert error to bytes
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51285
diff changeset
   508
        LockError.__init__(self, errno, 'Lock held', filename, desc)
51287
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   509
        self.filename: bytes = filename
7640
7197812e8d44 error: move lock errors
Matt Mackall <mpm@selenic.com>
parents: 7637
diff changeset
   510
        self.locker = locker
7197812e8d44 error: move lock errors
Matt Mackall <mpm@selenic.com>
parents: 7637
diff changeset
   511
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   512
7640
7197812e8d44 error: move lock errors
Matt Mackall <mpm@selenic.com>
parents: 7637
diff changeset
   513
class LockUnavailable(LockError):
7197812e8d44 error: move lock errors
Matt Mackall <mpm@selenic.com>
parents: 7637
diff changeset
   514
    pass
7641
d2f753830f80 error: move UnexpectedOutput (now ResponseError)
Matt Mackall <mpm@selenic.com>
parents: 7640
diff changeset
   515
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   516
26355
f51713b8c6fa error: add an exception to indicate lock inheritance API contract violations
Siddharth Agarwal <sid0@fb.com>
parents: 25945
diff changeset
   517
# LockError is for errors while acquiring the lock -- this is unrelated
26438
024644b1900b error: make lock inheritance contract violations a subclass of RuntimeError
Siddharth Agarwal <sid0@fb.com>
parents: 26394
diff changeset
   518
class LockInheritanceContractViolation(RuntimeError):
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
   519
    __bytes__ = _tobytes
26355
f51713b8c6fa error: add an exception to indicate lock inheritance API contract violations
Siddharth Agarwal <sid0@fb.com>
parents: 25945
diff changeset
   520
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   521
7641
d2f753830f80 error: move UnexpectedOutput (now ResponseError)
Matt Mackall <mpm@selenic.com>
parents: 7640
diff changeset
   522
class ResponseError(Exception):
d2f753830f80 error: move UnexpectedOutput (now ResponseError)
Matt Mackall <mpm@selenic.com>
parents: 7640
diff changeset
   523
    """Raised to print an error with part of output and exit."""
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   524
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
   525
    __bytes__ = _tobytes
7641
d2f753830f80 error: move UnexpectedOutput (now ResponseError)
Matt Mackall <mpm@selenic.com>
parents: 7640
diff changeset
   526
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   527
7644
182b7114d35a error: move SignalInterrupt
Matt Mackall <mpm@selenic.com>
parents: 7643
diff changeset
   528
# derived from KeyboardInterrupt to simplify some breakout code
182b7114d35a error: move SignalInterrupt
Matt Mackall <mpm@selenic.com>
parents: 7643
diff changeset
   529
class SignalInterrupt(KeyboardInterrupt):
182b7114d35a error: move SignalInterrupt
Matt Mackall <mpm@selenic.com>
parents: 7643
diff changeset
   530
    """Exception raised on SIGTERM and SIGHUP."""
7646
e62a456b8dc5 error: move SignatureError
Matt Mackall <mpm@selenic.com>
parents: 7644
diff changeset
   531
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   532
7646
e62a456b8dc5 error: move SignatureError
Matt Mackall <mpm@selenic.com>
parents: 7644
diff changeset
   533
class SignatureError(Exception):
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
   534
    __bytes__ = _tobytes
21184
28d76afa1568 bundle2: fix raising errors during heads checking
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 18931
diff changeset
   535
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   536
21184
28d76afa1568 bundle2: fix raising errors during heads checking
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 18931
diff changeset
   537
class PushRaced(RuntimeError):
28d76afa1568 bundle2: fix raising errors during heads checking
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 18931
diff changeset
   538
    """An exception raised during unbundling that indicate a push race"""
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   539
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
   540
    __bytes__ = _tobytes
21184
28d76afa1568 bundle2: fix raising errors during heads checking
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 18931
diff changeset
   541
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   542
32340
9c023179e8d0 error: add hint to ProgrammingError
Yuya Nishihara <yuya@tcha.org>
parents: 32023
diff changeset
   543
class ProgrammingError(Hint, RuntimeError):
30585
0f865311ae3f error: make it clear that ProgrammingError is for mercurial developers
Jun Wu <quark@fb.com>
parents: 30573
diff changeset
   544
    """Raised if a mercurial (core or extension) developer made a mistake"""
39579
921aeb9ac508 error: ensure ProgrammingError message is always a str
Augie Fackler <augie@google.com>
parents: 39559
diff changeset
   545
51287
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   546
    def __init__(self, msg: AnyStr, *args, **kwargs):
39596
409c42d6a570 py3: use sysstr() to convert ProgrammingError bytes with no unicode error risk
Yuya Nishihara <yuya@tcha.org>
parents: 39579
diff changeset
   547
        # On Python 3, turn the message back into a string since this is
409c42d6a570 py3: use sysstr() to convert ProgrammingError bytes with no unicode error risk
Yuya Nishihara <yuya@tcha.org>
parents: 39579
diff changeset
   548
        # an internal-only error that won't be printed except in a
409c42d6a570 py3: use sysstr() to convert ProgrammingError bytes with no unicode error risk
Yuya Nishihara <yuya@tcha.org>
parents: 39579
diff changeset
   549
        # stack traces.
409c42d6a570 py3: use sysstr() to convert ProgrammingError bytes with no unicode error risk
Yuya Nishihara <yuya@tcha.org>
parents: 39579
diff changeset
   550
        msg = pycompat.sysstr(msg)
39579
921aeb9ac508 error: ensure ProgrammingError message is always a str
Augie Fackler <augie@google.com>
parents: 39559
diff changeset
   551
        super(ProgrammingError, self).__init__(msg, *args, **kwargs)
921aeb9ac508 error: ensure ProgrammingError message is always a str
Augie Fackler <augie@google.com>
parents: 39559
diff changeset
   552
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
   553
    __bytes__ = _tobytes
30573
b0ebab239f90 error: add ProgrammingError
Jun Wu <quark@fb.com>
parents: 30332
diff changeset
   554
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   555
32402
c8e10565a113 error: add a new exception named WdirUnsupported
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32340
diff changeset
   556
class WdirUnsupported(Exception):
c8e10565a113 error: add a new exception named WdirUnsupported
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32340
diff changeset
   557
    """An exception which is raised when 'wdir()' is not supported"""
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   558
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
   559
    __bytes__ = _tobytes
32402
c8e10565a113 error: add a new exception named WdirUnsupported
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32340
diff changeset
   560
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   561
21618
7568f5c1c801 bundle2: move exception classes into the error module
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21184
diff changeset
   562
# bundle2 related errors
7568f5c1c801 bundle2: move exception classes into the error module
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21184
diff changeset
   563
class BundleValueError(ValueError):
21621
b6eb56a9335d bundle2: introduce a ``params`` attribute to BundleValueError
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21620
diff changeset
   564
    """error raised when bundle2 cannot be processed"""
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   565
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
   566
    __bytes__ = _tobytes
21620
6eaa71b2a3cc bundle2: introduce a parttype attribute to BundleValueError
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21618
diff changeset
   567
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   568
26393
cff70549a959 bundle2: rename error exception class for unsupported feature
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26355
diff changeset
   569
class BundleUnknownFeatureError(BundleValueError):
26394
e75da738add5 bundle2: allow to specify unsupported value on error
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26393
diff changeset
   570
    def __init__(self, parttype=None, params=(), values=()):
21620
6eaa71b2a3cc bundle2: introduce a parttype attribute to BundleValueError
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21618
diff changeset
   571
        self.parttype = parttype
21621
b6eb56a9335d bundle2: introduce a ``params`` attribute to BundleValueError
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21620
diff changeset
   572
        self.params = params
26394
e75da738add5 bundle2: allow to specify unsupported value on error
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26393
diff changeset
   573
        self.values = values
21627
3e8bcc90f07c bundle2: support None parttype in BundleValueError
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21621
diff changeset
   574
        if self.parttype is None:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
   575
            msg = b'Stream Parameter'
21627
3e8bcc90f07c bundle2: support None parttype in BundleValueError
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21621
diff changeset
   576
        else:
3e8bcc90f07c bundle2: support None parttype in BundleValueError
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21621
diff changeset
   577
            msg = parttype
26394
e75da738add5 bundle2: allow to specify unsupported value on error
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26393
diff changeset
   578
        entries = self.params
e75da738add5 bundle2: allow to specify unsupported value on error
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26393
diff changeset
   579
        if self.params and self.values:
e75da738add5 bundle2: allow to specify unsupported value on error
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26393
diff changeset
   580
            assert len(self.params) == len(self.values)
e75da738add5 bundle2: allow to specify unsupported value on error
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26393
diff changeset
   581
            entries = []
e75da738add5 bundle2: allow to specify unsupported value on error
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26393
diff changeset
   582
            for idx, par in enumerate(self.params):
e75da738add5 bundle2: allow to specify unsupported value on error
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26393
diff changeset
   583
                val = self.values[idx]
e75da738add5 bundle2: allow to specify unsupported value on error
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26393
diff changeset
   584
                if val is None:
e75da738add5 bundle2: allow to specify unsupported value on error
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26393
diff changeset
   585
                    entries.append(val)
e75da738add5 bundle2: allow to specify unsupported value on error
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26393
diff changeset
   586
                else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
   587
                    entries.append(b"%s=%r" % (par, pycompat.maybebytestr(val)))
26394
e75da738add5 bundle2: allow to specify unsupported value on error
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26393
diff changeset
   588
        if entries:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
   589
            msg = b'%s - %s' % (msg, b', '.join(entries))
46899
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
   590
        ValueError.__init__(self, msg)  # TODO: convert to str?
21618
7568f5c1c801 bundle2: move exception classes into the error module
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21184
diff changeset
   591
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   592
21618
7568f5c1c801 bundle2: move exception classes into the error module
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21184
diff changeset
   593
class ReadOnlyPartError(RuntimeError):
7568f5c1c801 bundle2: move exception classes into the error module
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21184
diff changeset
   594
    """error raised when code tries to alter a part being generated"""
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   595
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
   596
    __bytes__ = _tobytes
21618
7568f5c1c801 bundle2: move exception classes into the error module
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21184
diff changeset
   597
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   598
25484
a5192774e925 bundle2: introduce a PushkeyFail error to abort unbundle on pushkey error
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25249
diff changeset
   599
class PushkeyFailed(Abort):
a5192774e925 bundle2: introduce a PushkeyFail error to abort unbundle on pushkey error
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25249
diff changeset
   600
    """error raised when a pushkey part failed to update a value"""
a5192774e925 bundle2: introduce a PushkeyFail error to abort unbundle on pushkey error
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25249
diff changeset
   601
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   602
    def __init__(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   603
        self, partid, namespace=None, key=None, new=None, old=None, ret=None
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   604
    ):
25484
a5192774e925 bundle2: introduce a PushkeyFail error to abort unbundle on pushkey error
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25249
diff changeset
   605
        self.partid = partid
a5192774e925 bundle2: introduce a PushkeyFail error to abort unbundle on pushkey error
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25249
diff changeset
   606
        self.namespace = namespace
a5192774e925 bundle2: introduce a PushkeyFail error to abort unbundle on pushkey error
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25249
diff changeset
   607
        self.key = key
a5192774e925 bundle2: introduce a PushkeyFail error to abort unbundle on pushkey error
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25249
diff changeset
   608
        self.new = new
a5192774e925 bundle2: introduce a PushkeyFail error to abort unbundle on pushkey error
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25249
diff changeset
   609
        self.old = old
a5192774e925 bundle2: introduce a PushkeyFail error to abort unbundle on pushkey error
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25249
diff changeset
   610
        self.ret = ret
a5192774e925 bundle2: introduce a PushkeyFail error to abort unbundle on pushkey error
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25249
diff changeset
   611
        # no i18n expected to be processed into a better message
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   612
        Abort.__init__(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
   613
            self, b'failed to update value for "%s/%s"' % (namespace, key)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   614
        )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   615
25484
a5192774e925 bundle2: introduce a PushkeyFail error to abort unbundle on pushkey error
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25249
diff changeset
   616
39777
b63dee7bd0d9 global: replace most uses of RevlogError with StorageError (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39776
diff changeset
   617
class CensoredNodeError(StorageError):
24190
903c7e8c97ad changegroup: emit full-replacement deltas if either revision is censored
Mike Edgar <adgar@google.com>
parents: 24137
diff changeset
   618
    """error raised when content verification fails on a censored node
22595
244478687edd error: add CensoredNodeError, will be thrown when content deliberately erased
Mike Edgar <adgar@google.com>
parents: 22359
diff changeset
   619
24190
903c7e8c97ad changegroup: emit full-replacement deltas if either revision is censored
Mike Edgar <adgar@google.com>
parents: 24137
diff changeset
   620
    Also contains the tombstone data substituted for the uncensored data.
903c7e8c97ad changegroup: emit full-replacement deltas if either revision is censored
Mike Edgar <adgar@google.com>
parents: 24137
diff changeset
   621
    """
903c7e8c97ad changegroup: emit full-replacement deltas if either revision is censored
Mike Edgar <adgar@google.com>
parents: 24137
diff changeset
   622
51287
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   623
    def __init__(self, filename: bytes, node: bytes, tombstone: bytes):
25945
147bd9e238a1 error: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25484
diff changeset
   624
        from .node import short
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   625
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
   626
        StorageError.__init__(self, b'%s:%s' % (filename, short(node)))
24190
903c7e8c97ad changegroup: emit full-replacement deltas if either revision is censored
Mike Edgar <adgar@google.com>
parents: 24137
diff changeset
   627
        self.tombstone = tombstone
24120
a450e0a2ba0a revlog: in addgroup, reject ill-formed deltas based on censored nodes
Mike Edgar <adgar@google.com>
parents: 24040
diff changeset
   628
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   629
39777
b63dee7bd0d9 global: replace most uses of RevlogError with StorageError (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39776
diff changeset
   630
class CensoredBaseError(StorageError):
24120
a450e0a2ba0a revlog: in addgroup, reject ill-formed deltas based on censored nodes
Mike Edgar <adgar@google.com>
parents: 24040
diff changeset
   631
    """error raised when a delta is rejected because its base is censored
a450e0a2ba0a revlog: in addgroup, reject ill-formed deltas based on censored nodes
Mike Edgar <adgar@google.com>
parents: 24040
diff changeset
   632
a450e0a2ba0a revlog: in addgroup, reject ill-formed deltas based on censored nodes
Mike Edgar <adgar@google.com>
parents: 24040
diff changeset
   633
    A delta based on a censored revision must be formed as single patch
a450e0a2ba0a revlog: in addgroup, reject ill-formed deltas based on censored nodes
Mike Edgar <adgar@google.com>
parents: 24040
diff changeset
   634
    operation which replaces the entire base with new content. This ensures
a450e0a2ba0a revlog: in addgroup, reject ill-formed deltas based on censored nodes
Mike Edgar <adgar@google.com>
parents: 24040
diff changeset
   635
    the delta may be applied by clones which have not censored the base.
a450e0a2ba0a revlog: in addgroup, reject ill-formed deltas based on censored nodes
Mike Edgar <adgar@google.com>
parents: 24040
diff changeset
   636
    """
26640
b13fdcc4e700 exchange: refactor bundle specification parsing
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26438
diff changeset
   637
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   638
26640
b13fdcc4e700 exchange: refactor bundle specification parsing
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26438
diff changeset
   639
class InvalidBundleSpecification(Exception):
b13fdcc4e700 exchange: refactor bundle specification parsing
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26438
diff changeset
   640
    """error raised when a bundle specification is invalid.
b13fdcc4e700 exchange: refactor bundle specification parsing
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26438
diff changeset
   641
b13fdcc4e700 exchange: refactor bundle specification parsing
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26438
diff changeset
   642
    This is used for syntax errors as opposed to support errors.
b13fdcc4e700 exchange: refactor bundle specification parsing
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26438
diff changeset
   643
    """
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   644
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
   645
    __bytes__ = _tobytes
26640
b13fdcc4e700 exchange: refactor bundle specification parsing
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26438
diff changeset
   646
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   647
26640
b13fdcc4e700 exchange: refactor bundle specification parsing
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26438
diff changeset
   648
class UnsupportedBundleSpecification(Exception):
b13fdcc4e700 exchange: refactor bundle specification parsing
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26438
diff changeset
   649
    """error raised when a bundle specification is not supported."""
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   650
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
   651
    __bytes__ = _tobytes
29536
b17a6e3cd2ac shelve: make unshelve be able to abort in any case
Kostia Balytskyi <ikostia@fb.com>
parents: 29510
diff changeset
   652
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   653
29536
b17a6e3cd2ac shelve: make unshelve be able to abort in any case
Kostia Balytskyi <ikostia@fb.com>
parents: 29510
diff changeset
   654
class CorruptedState(Exception):
b17a6e3cd2ac shelve: make unshelve be able to abort in any case
Kostia Balytskyi <ikostia@fb.com>
parents: 29510
diff changeset
   655
    """error raised when a command is not able to read its state from file"""
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   656
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
   657
    __bytes__ = _tobytes
32002
bf855efe5664 httppeer: wrap HTTPResponse.read() globally
Gregory Szorc <gregory.szorc@gmail.com>
parents: 31959
diff changeset
   658
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   659
50660
bf16ef96defe rust-dirstate: fall back to v1 if reading v2 failed
Raphaël Gomès <rgomes@octobus.net>
parents: 50329
diff changeset
   660
class CorruptedDirstate(Exception):
bf16ef96defe rust-dirstate: fall back to v1 if reading v2 failed
Raphaël Gomès <rgomes@octobus.net>
parents: 50329
diff changeset
   661
    """error raised the dirstate appears corrupted on-disk. It may be due to
bf16ef96defe rust-dirstate: fall back to v1 if reading v2 failed
Raphaël Gomès <rgomes@octobus.net>
parents: 50329
diff changeset
   662
    a dirstate version mismatch (i.e. expecting v2 and finding v1 on disk)."""
bf16ef96defe rust-dirstate: fall back to v1 if reading v2 failed
Raphaël Gomès <rgomes@octobus.net>
parents: 50329
diff changeset
   663
bf16ef96defe rust-dirstate: fall back to v1 if reading v2 failed
Raphaël Gomès <rgomes@octobus.net>
parents: 50329
diff changeset
   664
    __bytes__ = _tobytes
bf16ef96defe rust-dirstate: fall back to v1 if reading v2 failed
Raphaël Gomès <rgomes@octobus.net>
parents: 50329
diff changeset
   665
bf16ef96defe rust-dirstate: fall back to v1 if reading v2 failed
Raphaël Gomès <rgomes@octobus.net>
parents: 50329
diff changeset
   666
32023
a29580905771 error: rename RichIOError to PeerTransportError
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32002
diff changeset
   667
class PeerTransportError(Abort):
a29580905771 error: rename RichIOError to PeerTransportError
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32002
diff changeset
   668
    """Transport-level I/O error when communicating with a peer repo."""
35105
795bfa2a9103 error: add InMemoryMergeConflictsError
Phil Cohen <phillco@fb.com>
parents: 34251
diff changeset
   669
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   670
35105
795bfa2a9103 error: add InMemoryMergeConflictsError
Phil Cohen <phillco@fb.com>
parents: 34251
diff changeset
   671
class InMemoryMergeConflictsError(Exception):
795bfa2a9103 error: add InMemoryMergeConflictsError
Phil Cohen <phillco@fb.com>
parents: 34251
diff changeset
   672
    """Exception raised when merge conflicts arose during an in-memory merge."""
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   673
35105
795bfa2a9103 error: add InMemoryMergeConflictsError
Phil Cohen <phillco@fb.com>
parents: 34251
diff changeset
   674
    __bytes__ = _tobytes
39559
07b58266bce3 wireprotov2: implement commands as a generator of objects
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38841
diff changeset
   675
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   676
39559
07b58266bce3 wireprotov2: implement commands as a generator of objects
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38841
diff changeset
   677
class WireprotoCommandError(Exception):
07b58266bce3 wireprotov2: implement commands as a generator of objects
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38841
diff changeset
   678
    """Represents an error during execution of a wire protocol command.
07b58266bce3 wireprotov2: implement commands as a generator of objects
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38841
diff changeset
   679
07b58266bce3 wireprotov2: implement commands as a generator of objects
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38841
diff changeset
   680
    Should only be thrown by wire protocol version 2 commands.
07b58266bce3 wireprotov2: implement commands as a generator of objects
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38841
diff changeset
   681
07b58266bce3 wireprotov2: implement commands as a generator of objects
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38841
diff changeset
   682
    The error is a formatter string and an optional iterable of arguments.
07b58266bce3 wireprotov2: implement commands as a generator of objects
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38841
diff changeset
   683
    """
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
   684
51287
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   685
    def __init__(
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   686
        self,
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   687
        message: bytes,
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   688
        args: Optional[Sequence[bytes]] = None,
f15cb5111a1e pytype: move some type comment to proper annotation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51286
diff changeset
   689
    ) -> None:
39559
07b58266bce3 wireprotov2: implement commands as a generator of objects
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38841
diff changeset
   690
        self.message = message
07b58266bce3 wireprotov2: implement commands as a generator of objects
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38841
diff changeset
   691
        self.messageargs = args