annotate mercurial/error.py @ 51255:24d3298189d7

rust-index: document safety invariants being upheld for every `unsafe` block We've added a lot of `unsafe` code that shares Rust structs with Python. While this is unfortunate, it is also unavoidable, so let's at least systematically explain why each call to `unsafe` is sound. If any of the unsafe code ends up being wrong (because everyone screws up at some point), this change at least continues the unspoken rule of always explaining the need for `unsafe`, so we at least get a chance to think.
author Raphaël Gomès <rgomes@octobus.net>
date Thu, 23 Nov 2023 03:41:58 +0100
parents bf16ef96defe
children 9d3721552b6c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
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
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
17 # 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
18 from . import pycompat
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
19
46681
ae62ab82a345 typing: ensure that error.Abort is given bytes
Matt Harbison <matt_harbison@yahoo.com>
parents: 45942
diff changeset
20 if pycompat.TYPE_CHECKING:
ae62ab82a345 typing: ensure that error.Abort is given bytes
Matt Harbison <matt_harbison@yahoo.com>
parents: 45942
diff changeset
21 from typing import (
46899
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
22 Any,
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
23 AnyStr,
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
24 Iterable,
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
25 List,
46681
ae62ab82a345 typing: ensure that error.Abort is given bytes
Matt Harbison <matt_harbison@yahoo.com>
parents: 45942
diff changeset
26 Optional,
46899
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
27 Sequence,
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
28 Union,
46681
ae62ab82a345 typing: ensure that error.Abort is given bytes
Matt Harbison <matt_harbison@yahoo.com>
parents: 45942
diff changeset
29 )
ae62ab82a345 typing: ensure that error.Abort is given bytes
Matt Harbison <matt_harbison@yahoo.com>
parents: 45942
diff changeset
30
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
31
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
32 def _tobytes(exc):
48284
9de0823705b4 typing: add more type hints to the errors module
Matt Harbison <matt_harbison@yahoo.com>
parents: 47304
diff changeset
33 # type: (...) -> bytes
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
34 """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
35 if not exc.args:
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
36 return b''
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
37 if len(exc.args) == 1:
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
38 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
39 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
40
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
41
48946
642e31cb55f0 py3: use class X: instead of class X(object):
Gregory Szorc <gregory.szorc@gmail.com>
parents: 48889
diff changeset
42 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
43 """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
44
29510
19205a0e2bf1 error: make hintable exceptions reject unknown keyword arguments (API)
Yuya Nishihara <yuya@tcha.org>
parents: 29509
diff changeset
45 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
46 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
47 """
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
48
25248
821e664924dc error: refactor common hint-pattern into a common base class
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 25242
diff changeset
49 def __init__(self, *args, **kw):
48284
9de0823705b4 typing: add more type hints to the errors module
Matt Harbison <matt_harbison@yahoo.com>
parents: 47304
diff changeset
50 self.hint = kw.pop('hint', None) # type: Optional[bytes]
29510
19205a0e2bf1 error: make hintable exceptions reject unknown keyword arguments (API)
Yuya Nishihara <yuya@tcha.org>
parents: 29509
diff changeset
51 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
52
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
53
47292
5a75be916316 errors: create superclass for Abort exception
Martin von Zweigbergk <martinvonz@google.com>
parents: 47291
diff changeset
54 class Error(Hint, Exception):
5a75be916316 errors: create superclass for Abort exception
Martin von Zweigbergk <martinvonz@google.com>
parents: 47291
diff changeset
55 """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
56
47304
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
57 coarse_exit_code = None
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
58 detailed_exit_code = None
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
59
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
60 def __init__(self, message, hint=None):
47290
5e736d2e9703 errors: move Abort earlier, so more exceptions can subclass it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47289
diff changeset
61 # type: (bytes, Optional[bytes]) -> None
5e736d2e9703 errors: move Abort earlier, so more exceptions can subclass it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47289
diff changeset
62 self.message = message
5e736d2e9703 errors: move Abort earlier, so more exceptions can subclass it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47289
diff changeset
63 self.hint = hint
5e736d2e9703 errors: move Abort earlier, so more exceptions can subclass it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47289
diff changeset
64 # 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
65 # 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
66 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
67
5e736d2e9703 errors: move Abort earlier, so more exceptions can subclass it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47289
diff changeset
68 def __bytes__(self):
5e736d2e9703 errors: move Abort earlier, so more exceptions can subclass it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47289
diff changeset
69 return self.message
5e736d2e9703 errors: move Abort earlier, so more exceptions can subclass it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47289
diff changeset
70
48889
9baec00b4ca1 error: unconditionally define __str__
Gregory Szorc <gregory.szorc@gmail.com>
parents: 48875
diff changeset
71 def __str__(self):
9baec00b4ca1 error: unconditionally define __str__
Gregory Szorc <gregory.szorc@gmail.com>
parents: 48875
diff changeset
72 # type: () -> str
9baec00b4ca1 error: unconditionally define __str__
Gregory Szorc <gregory.szorc@gmail.com>
parents: 48875
diff changeset
73 # 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
74 # but do not replace it with encoding.strfromlocal(), which
9baec00b4ca1 error: unconditionally define __str__
Gregory Szorc <gregory.szorc@gmail.com>
parents: 48875
diff changeset
75 # may raise another exception.
9baec00b4ca1 error: unconditionally define __str__
Gregory Szorc <gregory.szorc@gmail.com>
parents: 48875
diff changeset
76 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
77
5e736d2e9703 errors: move Abort earlier, so more exceptions can subclass it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47289
diff changeset
78 def format(self):
5e736d2e9703 errors: move Abort earlier, so more exceptions can subclass it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47289
diff changeset
79 # type: () -> bytes
5e736d2e9703 errors: move Abort earlier, so more exceptions can subclass it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47289
diff changeset
80 from .i18n import _
5e736d2e9703 errors: move Abort earlier, so more exceptions can subclass it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47289
diff changeset
81
5e736d2e9703 errors: move Abort earlier, so more exceptions can subclass it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47289
diff changeset
82 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
83 if self.hint:
5e736d2e9703 errors: move Abort earlier, so more exceptions can subclass it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47289
diff changeset
84 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
85 return message
5e736d2e9703 errors: move Abort earlier, so more exceptions can subclass it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47289
diff changeset
86
5e736d2e9703 errors: move Abort earlier, so more exceptions can subclass it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47289
diff changeset
87
47292
5a75be916316 errors: create superclass for Abort exception
Martin von Zweigbergk <martinvonz@google.com>
parents: 47291
diff changeset
88 class Abort(Error):
5a75be916316 errors: create superclass for Abort exception
Martin von Zweigbergk <martinvonz@google.com>
parents: 47291
diff changeset
89 """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
90
5a75be916316 errors: create superclass for Abort exception
Martin von Zweigbergk <martinvonz@google.com>
parents: 47291
diff changeset
91
47295
dd339191f2dc errors: make StorageError subclass Error, attaching an exit code to it
Martin von Zweigbergk <martinvonz@google.com>
parents: 47292
diff changeset
92 class StorageError(Error):
39776
cb65d4b7e429 error: introduce StorageError
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39596
diff changeset
93 """Raised when an error occurs in a storage layer.
cb65d4b7e429 error: introduce StorageError
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39596
diff changeset
94
cb65d4b7e429 error: introduce StorageError
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39596
diff changeset
95 Usually subclassed by a storage-specific exception.
cb65d4b7e429 error: introduce StorageError
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39596
diff changeset
96 """
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
97
47304
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
98 detailed_exit_code = 50
39776
cb65d4b7e429 error: introduce StorageError
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39596
diff changeset
99
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
100
39776
cb65d4b7e429 error: introduce StorageError
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39596
diff changeset
101 class RevlogError(StorageError):
45775
5bb900885311 errors: remove unnecessary override of __bytes__ in RevlogError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45682
diff changeset
102 pass
7633
08cabecfa8a8 errors: move revlog errors
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
103
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
104
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
105 class SidedataHashError(RevlogError):
294afb982a88 sidedata: add a function to read sidedata from revlog raw text
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 40972
diff changeset
106 def __init__(self, key, expected, got):
48284
9de0823705b4 typing: add more type hints to the errors module
Matt Harbison <matt_harbison@yahoo.com>
parents: 47304
diff changeset
107 # type: (int, bytes, bytes) -> None
46625
3941fe53670d error: add `hint` attribute to `SidedataHashError`
Raphaël Gomès <rgomes@octobus.net>
parents: 45942
diff changeset
108 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
109 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
110 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
111 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
112
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
113
23014
f00813325c5a repoview: add a FilteredIndexError class
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 23010
diff changeset
114 class FilteredIndexError(IndexError):
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
115 __bytes__ = _tobytes
23014
f00813325c5a repoview: add a FilteredIndexError class
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 23010
diff changeset
116
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
117
7633
08cabecfa8a8 errors: move revlog errors
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
118 class LookupError(RevlogError, KeyError):
08cabecfa8a8 errors: move revlog errors
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
119 def __init__(self, name, index, message):
48284
9de0823705b4 typing: add more type hints to the errors module
Matt Harbison <matt_harbison@yahoo.com>
parents: 47304
diff changeset
120 # type: (bytes, bytes, bytes) -> None
7633
08cabecfa8a8 errors: move revlog errors
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
121 self.name = name
24038
10d02cd18604 error: store filename and message on LookupError for later
Martin von Zweigbergk <martinvonz@google.com>
parents: 23415
diff changeset
122 self.index = index
24137
dcfdfd63bde4 error.LookupError: rename 'message' property to something else
Siddharth Agarwal <sid0@fb.com>
parents: 24120
diff changeset
123 # 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
124 # 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
125 self.lookupmessage = message
36541
c6a7b99f150a error: fix isinstnace check to use bytes instead of str
Augie Fackler <augie@google.com>
parents: 35105
diff changeset
126 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
127 from .node import hex
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
128
46651
6fc57680cfd6 error: remove shortening of node in error message
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46625
diff changeset
129 name = hex(name)
45503
bd5b2b29b82d py3: fix formatting of LookupError for workingctx
Yuya Nishihara <yuya@tcha.org>
parents: 45151
diff changeset
130 # 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
131 RevlogError.__init__(
bd5b2b29b82d py3: fix formatting of LookupError for workingctx
Yuya Nishihara <yuya@tcha.org>
parents: 45151
diff changeset
132 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
133 )
7633
08cabecfa8a8 errors: move revlog errors
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
134
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
135 def __bytes__(self):
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
136 return RevlogError.__bytes__(self)
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
137
7633
08cabecfa8a8 errors: move revlog errors
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
138 def __str__(self):
08cabecfa8a8 errors: move revlog errors
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
139 return RevlogError.__str__(self)
7636
e3f8c6d6b72e error: move ParseError
Matt Mackall <mpm@selenic.com>
parents: 7633
diff changeset
140
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
141
38841
df0873ab5c14 revlog: use specialized exception for ambiguous prefix lookup
Martin von Zweigbergk <martinvonz@google.com>
parents: 38607
diff changeset
142 class AmbiguousPrefixLookupError(LookupError):
df0873ab5c14 revlog: use specialized exception for ambiguous prefix lookup
Martin von Zweigbergk <martinvonz@google.com>
parents: 38607
diff changeset
143 pass
df0873ab5c14 revlog: use specialized exception for ambiguous prefix lookup
Martin von Zweigbergk <martinvonz@google.com>
parents: 38607
diff changeset
144
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
145
23015
21c44c1aed87 repoview: add a FilteredLookupError class
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 23014
diff changeset
146 class FilteredLookupError(LookupError):
21c44c1aed87 repoview: add a FilteredLookupError class
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 23014
diff changeset
147 pass
21c44c1aed87 repoview: add a FilteredLookupError class
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 23014
diff changeset
148
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
149
18855
50c922c1b514 hgweb: show correct error message for i18n environment
Takumi IINO <trot.thunder@gmail.com>
parents: 15017
diff changeset
150 class ManifestLookupError(LookupError):
50c922c1b514 hgweb: show correct error message for i18n environment
Takumi IINO <trot.thunder@gmail.com>
parents: 15017
diff changeset
151 pass
50c922c1b514 hgweb: show correct error message for i18n environment
Takumi IINO <trot.thunder@gmail.com>
parents: 15017
diff changeset
152
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
153
11287
b901bb751999 error: change ParseError to CommandError
Matt Mackall <mpm@selenic.com>
parents: 10263
diff changeset
154 class CommandError(Exception):
7636
e3f8c6d6b72e error: move ParseError
Matt Mackall <mpm@selenic.com>
parents: 7633
diff changeset
155 """Exception raised on errors in parsing the command line."""
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
156
45678
bd2df58366b1 errors: name arguments to CommandError constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45677
diff changeset
157 def __init__(self, command, message):
50329
3dbc7b1ecaba typing: correct the signature of error.CommandError
Matt Harbison <matt_harbison@yahoo.com>
parents: 48946
diff changeset
158 # type: (Optional[bytes], bytes) -> None
45678
bd2df58366b1 errors: name arguments to CommandError constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45677
diff changeset
159 self.command = command
bd2df58366b1 errors: name arguments to CommandError constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45677
diff changeset
160 self.message = message
bd2df58366b1 errors: name arguments to CommandError constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45677
diff changeset
161 super(CommandError, self).__init__()
bd2df58366b1 errors: name arguments to CommandError constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45677
diff changeset
162
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
163 __bytes__ = _tobytes
7637
1d54e2f6c0b7 error: move repo errors
Matt Mackall <mpm@selenic.com>
parents: 7636
diff changeset
164
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
165
45677
bdd2cdf9e248 errors: move UnknownCommand and AmbiguousCommand near CommandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45503
diff changeset
166 class UnknownCommand(Exception):
bdd2cdf9e248 errors: move UnknownCommand and AmbiguousCommand near CommandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45503
diff changeset
167 """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
168
45680
bb1a988ef4a5 errors: name arguments to UnknownCommand constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45679
diff changeset
169 def __init__(self, command, all_commands=None):
46899
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
170 # type: (bytes, Optional[List[bytes]]) -> None
45680
bb1a988ef4a5 errors: name arguments to UnknownCommand constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45679
diff changeset
171 self.command = command
bb1a988ef4a5 errors: name arguments to UnknownCommand constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45679
diff changeset
172 self.all_commands = all_commands
bb1a988ef4a5 errors: name arguments to UnknownCommand constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45679
diff changeset
173 super(UnknownCommand, self).__init__()
bb1a988ef4a5 errors: name arguments to UnknownCommand constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45679
diff changeset
174
45677
bdd2cdf9e248 errors: move UnknownCommand and AmbiguousCommand near CommandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45503
diff changeset
175 __bytes__ = _tobytes
bdd2cdf9e248 errors: move UnknownCommand and AmbiguousCommand near CommandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45503
diff changeset
176
bdd2cdf9e248 errors: move UnknownCommand and AmbiguousCommand near CommandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45503
diff changeset
177
bdd2cdf9e248 errors: move UnknownCommand and AmbiguousCommand near CommandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45503
diff changeset
178 class AmbiguousCommand(Exception):
bdd2cdf9e248 errors: move UnknownCommand and AmbiguousCommand near CommandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45503
diff changeset
179 """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
180
45679
65e2b64670b5 errors: name arguments to AmbiguousCommand constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45678
diff changeset
181 def __init__(self, prefix, matches):
46899
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
182 # type: (bytes, List[bytes]) -> None
45679
65e2b64670b5 errors: name arguments to AmbiguousCommand constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45678
diff changeset
183 self.prefix = prefix
65e2b64670b5 errors: name arguments to AmbiguousCommand constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45678
diff changeset
184 self.matches = matches
65e2b64670b5 errors: name arguments to AmbiguousCommand constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45678
diff changeset
185 super(AmbiguousCommand, self).__init__()
65e2b64670b5 errors: name arguments to AmbiguousCommand constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45678
diff changeset
186
45677
bdd2cdf9e248 errors: move UnknownCommand and AmbiguousCommand near CommandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45503
diff changeset
187 __bytes__ = _tobytes
bdd2cdf9e248 errors: move UnknownCommand and AmbiguousCommand near CommandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45503
diff changeset
188
bdd2cdf9e248 errors: move UnknownCommand and AmbiguousCommand near CommandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45503
diff changeset
189
45825
8f07f5a9c3de worker: raise exception instead of calling sys.exit() with child's code
Martin von Zweigbergk <martinvonz@google.com>
parents: 45776
diff changeset
190 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
191 """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
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 def __init__(self, status_code):
46899
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
194 # type: (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
195 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
196 # 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
197 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
198
64faa55716f4 tests: make test-worker.t pass on py2
Martin von Zweigbergk <martinvonz@google.com>
parents: 45894
diff changeset
199 __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
200
8f07f5a9c3de worker: raise exception instead of calling sys.exit() with child's code
Martin von Zweigbergk <martinvonz@google.com>
parents: 45776
diff changeset
201
47291
d9c71bbe20f7 errors: make InterventionRequired subclass Abort
Martin von Zweigbergk <martinvonz@google.com>
parents: 47290
diff changeset
202 class InterventionRequired(Abort):
18931
3c224e0949de error: introduce new InterventionRequired exception
Augie Fackler <raf@durin42.com>
parents: 18855
diff changeset
203 """Exception raised when a command requires human intervention."""
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
204
47304
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
205 coarse_exit_code = 1
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
206 detailed_exit_code = 240
47291
d9c71bbe20f7 errors: make InterventionRequired subclass Abort
Martin von Zweigbergk <martinvonz@google.com>
parents: 47290
diff changeset
207
d9c71bbe20f7 errors: make InterventionRequired subclass Abort
Martin von Zweigbergk <martinvonz@google.com>
parents: 47290
diff changeset
208 def format(self):
d9c71bbe20f7 errors: make InterventionRequired subclass Abort
Martin von Zweigbergk <martinvonz@google.com>
parents: 47290
diff changeset
209 # type: () -> bytes
d9c71bbe20f7 errors: make InterventionRequired subclass Abort
Martin von Zweigbergk <martinvonz@google.com>
parents: 47290
diff changeset
210 from .i18n import _
d9c71bbe20f7 errors: make InterventionRequired subclass Abort
Martin von Zweigbergk <martinvonz@google.com>
parents: 47290
diff changeset
211
d9c71bbe20f7 errors: make InterventionRequired subclass Abort
Martin von Zweigbergk <martinvonz@google.com>
parents: 47290
diff changeset
212 message = _(b"%s\n") % self.message
d9c71bbe20f7 errors: make InterventionRequired subclass Abort
Martin von Zweigbergk <martinvonz@google.com>
parents: 47290
diff changeset
213 if self.hint:
d9c71bbe20f7 errors: make InterventionRequired subclass Abort
Martin von Zweigbergk <martinvonz@google.com>
parents: 47290
diff changeset
214 message += _(b"(%s)\n") % self.hint
d9c71bbe20f7 errors: make InterventionRequired subclass Abort
Martin von Zweigbergk <martinvonz@google.com>
parents: 47290
diff changeset
215 return message
18931
3c224e0949de error: introduce new InterventionRequired exception
Augie Fackler <raf@durin42.com>
parents: 18855
diff changeset
216
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
217
45151
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43506
diff changeset
218 class ConflictResolutionRequired(InterventionRequired):
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43506
diff changeset
219 """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
220
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43506
diff changeset
221 def __init__(self, opname):
46899
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
222 # type: (bytes) -> None
45151
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43506
diff changeset
223 from .i18n import _
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43506
diff changeset
224
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43506
diff changeset
225 self.opname = opname
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43506
diff changeset
226 InterventionRequired.__init__(
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43506
diff changeset
227 self,
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43506
diff changeset
228 _(
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43506
diff changeset
229 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
230 )
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43506
diff changeset
231 % opname,
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43506
diff changeset
232 )
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43506
diff changeset
233
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43506
diff changeset
234
45827
8d72e29ad1e0 errors: introduce InputError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45825
diff changeset
235 class InputError(Abort):
8d72e29ad1e0 errors: introduce InputError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45825
diff changeset
236 """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
237
8d72e29ad1e0 errors: introduce InputError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45825
diff changeset
238 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
239 """
8d72e29ad1e0 errors: introduce InputError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45825
diff changeset
240
47304
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
241 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
242
45827
8d72e29ad1e0 errors: introduce InputError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45825
diff changeset
243
45840
527ce85c2e60 errors: introduce StateError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45827
diff changeset
244 class StateError(Abort):
527ce85c2e60 errors: introduce StateError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45827
diff changeset
245 """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
246
527ce85c2e60 errors: introduce StateError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45827
diff changeset
247 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
248 """
527ce85c2e60 errors: introduce StateError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45827
diff changeset
249
47304
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
250 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
251
45840
527ce85c2e60 errors: introduce StateError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45827
diff changeset
252
45877
ac362d5a7893 errors: introduce CanceledError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45840
diff changeset
253 class CanceledError(Abort):
ac362d5a7893 errors: introduce CanceledError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45840
diff changeset
254 """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
255
ac362d5a7893 errors: introduce CanceledError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45840
diff changeset
256 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
257 """
ac362d5a7893 errors: introduce CanceledError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45840
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 = 250
47289
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
260
45877
ac362d5a7893 errors: introduce CanceledError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45840
diff changeset
261
45915
8f50dc096cf4 errors: introduce SecurityError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45903
diff changeset
262 class SecurityError(Abort):
8f50dc096cf4 errors: introduce SecurityError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45903
diff changeset
263 """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
264
8f50dc096cf4 errors: introduce SecurityError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45903
diff changeset
265 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
266 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
267 """
8f50dc096cf4 errors: introduce SecurityError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45903
diff changeset
268
47304
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
269 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
270
45915
8f50dc096cf4 errors: introduce SecurityError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45903
diff changeset
271
26692
8d1cfd77b64f hook: raise a separate exception for when loading a hook fails
Siddharth Agarwal <sid0@fb.com>
parents: 26683
diff changeset
272 class HookLoadError(Abort):
8d1cfd77b64f hook: raise a separate exception for when loading a hook fails
Siddharth Agarwal <sid0@fb.com>
parents: 26683
diff changeset
273 """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
274
8d1cfd77b64f hook: raise a separate exception for when loading a hook fails
Siddharth Agarwal <sid0@fb.com>
parents: 26683
diff changeset
275 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
276
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
277
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
278 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
279 """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
280
cdbb85489c41 hook: raise a more specialized HookAbort exception when a hook fails
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 23016
diff changeset
281 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
282
47304
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
283 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
284
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
285
11288
2123aad24d56 error: add new ParseError for various parsing errors
Matt Mackall <mpm@selenic.com>
parents: 11287
diff changeset
286 class ConfigError(Abort):
22359
e3714b927af5 error: use docstrings, not bare strings, for error classes
Mike Edgar <adgar@google.com>
parents: 21747
diff changeset
287 """Exception raised when parsing config files"""
8144
fca54469480e ui: introduce new config parser
Matt Mackall <mpm@selenic.com>
parents: 7947
diff changeset
288
47304
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
289 detailed_exit_code = 30
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
290
45894
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45891
diff changeset
291 def __init__(self, message, location=None, hint=None):
46899
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
292 # type: (bytes, Optional[bytes], Optional[bytes]) -> None
47304
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
293 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
294 self.location = location
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45891
diff changeset
295
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45891
diff changeset
296 def format(self):
46899
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
297 # type: () -> bytes
45894
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45891
diff changeset
298 from .i18n import _
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45891
diff changeset
299
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45891
diff changeset
300 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
301 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
302 pycompat.bytestr(self.location),
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45891
diff changeset
303 self.message,
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45891
diff changeset
304 )
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45891
diff changeset
305 else:
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45891
diff changeset
306 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
307 if self.hint:
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45891
diff changeset
308 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
309 return message
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45891
diff changeset
310
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
311
26683
634666c48b7d update: introduce a 'UpdateAbort' exception
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26640
diff changeset
312 class UpdateAbort(Abort):
634666c48b7d update: introduce a 'UpdateAbort' exception
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26640
diff changeset
313 """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
314
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
315
28141
13bb8de97f87 destutil: add more precise error classes for destmerge
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 27628
diff changeset
316 class MergeDestAbort(Abort):
13bb8de97f87 destutil: add more precise error classes for destmerge
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 27628
diff changeset
317 """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
318
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
319
28141
13bb8de97f87 destutil: add more precise error classes for destmerge
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 27628
diff changeset
320 class NoMergeDestAbort(MergeDestAbort):
13bb8de97f87 destutil: add more precise error classes for destmerge
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 27628
diff changeset
321 """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
322
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
323
28141
13bb8de97f87 destutil: add more precise error classes for destmerge
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 27628
diff changeset
324 class ManyMergeDestAbort(MergeDestAbort):
30332
318a24b52eeb spelling: fixes of non-dictionary words
Mads Kiilerich <madski@unity3d.com>
parents: 29536
diff changeset
325 """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
326
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
327
26896
5e46123e6c35 error: add structured exception for EOF at prompt
Siddharth Agarwal <sid0@fb.com>
parents: 26693
diff changeset
328 class ResponseExpected(Abort):
5e46123e6c35 error: add structured exception for EOF at prompt
Siddharth Agarwal <sid0@fb.com>
parents: 26693
diff changeset
329 """Raised when an EOF is received for a prompt"""
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
330
26896
5e46123e6c35 error: add structured exception for EOF at prompt
Siddharth Agarwal <sid0@fb.com>
parents: 26693
diff changeset
331 def __init__(self):
5e46123e6c35 error: add structured exception for EOF at prompt
Siddharth Agarwal <sid0@fb.com>
parents: 26693
diff changeset
332 from .i18n import _
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
333
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
334 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
335
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
336
46976
f9482db16cef errors: introduce a class for remote errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 46975
diff changeset
337 class RemoteError(Abort):
f9482db16cef errors: introduce a class for remote errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 46975
diff changeset
338 """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
339
47304
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
340 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
341
46976
f9482db16cef errors: introduce a class for remote errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 46975
diff changeset
342
f9482db16cef errors: introduce a class for remote errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 46975
diff changeset
343 class OutOfBandError(RemoteError):
22359
e3714b927af5 error: use docstrings, not bare strings, for error classes
Mike Edgar <adgar@google.com>
parents: 21747
diff changeset
344 """Exception raised when a remote repo reports failure"""
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
345
46981
abd18d6306f1 errors: remove unnecessary varargs handling from OutOfBandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 46976
diff changeset
346 def __init__(self, message=None, hint=None):
48284
9de0823705b4 typing: add more type hints to the errors module
Matt Harbison <matt_harbison@yahoo.com>
parents: 47304
diff changeset
347 # type: (Optional[bytes], Optional[bytes]) -> None
46975
14ddb1dca2c0 errors: make OutOfBandError extend Abort
Martin von Zweigbergk <martinvonz@google.com>
parents: 46899
diff changeset
348 from .i18n import _
14ddb1dca2c0 errors: make OutOfBandError extend Abort
Martin von Zweigbergk <martinvonz@google.com>
parents: 46899
diff changeset
349
46981
abd18d6306f1 errors: remove unnecessary varargs handling from OutOfBandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 46976
diff changeset
350 if message:
46975
14ddb1dca2c0 errors: make OutOfBandError extend Abort
Martin von Zweigbergk <martinvonz@google.com>
parents: 46899
diff changeset
351 # 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
352 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
353 else:
14ddb1dca2c0 errors: make OutOfBandError extend Abort
Martin von Zweigbergk <martinvonz@google.com>
parents: 46899
diff changeset
354 message = _(b"remote error")
46981
abd18d6306f1 errors: remove unnecessary varargs handling from OutOfBandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 46976
diff changeset
355 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
356
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
357
45887
7eb221b9af6c errors: make ParseError a subtype of Abort
Martin von Zweigbergk <martinvonz@google.com>
parents: 45885
diff changeset
358 class ParseError(Abort):
24040
7f375d2de945 error: update docstring on ParseError
Augie Fackler <augie@google.com>
parents: 24038
diff changeset
359 """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
360
47304
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
361 detailed_exit_code = 10
73f52278a158 errors: make exit codes class variables instead
Martin von Zweigbergk <martinvonz@google.com>
parents: 47295
diff changeset
362
45776
0fc8b066928a errors: name arguments to ParseError constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45775
diff changeset
363 def __init__(self, message, location=None, hint=None):
46899
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
364 # type: (bytes, Optional[Union[bytes, int]], Optional[bytes]) -> None
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
45884
98399dd1b96c errors: make formatparse() an instance method on ParseError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45883
diff changeset
368 def format(self):
46899
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
369 # type: () -> bytes
45884
98399dd1b96c errors: make formatparse() an instance method on ParseError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45883
diff changeset
370 from .i18n import _
98399dd1b96c errors: make formatparse() an instance method on ParseError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45883
diff changeset
371
98399dd1b96c errors: make formatparse() an instance method on ParseError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45883
diff changeset
372 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
373 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
374 pycompat.bytestr(self.location),
98399dd1b96c errors: make formatparse() an instance method on ParseError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45883
diff changeset
375 self.message,
98399dd1b96c errors: make formatparse() an instance method on ParseError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45883
diff changeset
376 )
98399dd1b96c errors: make formatparse() an instance method on ParseError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45883
diff changeset
377 else:
98399dd1b96c errors: make formatparse() an instance method on ParseError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45883
diff changeset
378 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
379 if self.hint:
98399dd1b96c errors: make formatparse() an instance method on ParseError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45883
diff changeset
380 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
381 return message
98399dd1b96c errors: make formatparse() an instance method on ParseError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45883
diff changeset
382
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
383
34251
61714510220d error: move patch.PatchError so it can easily implement __bytes__ (API)
Yuya Nishihara <yuya@tcha.org>
parents: 32616
diff changeset
384 class PatchError(Exception):
61714510220d error: move patch.PatchError so it can easily implement __bytes__ (API)
Yuya Nishihara <yuya@tcha.org>
parents: 32616
diff changeset
385 __bytes__ = _tobytes
61714510220d error: move patch.PatchError so it can easily implement __bytes__ (API)
Yuya Nishihara <yuya@tcha.org>
parents: 32616
diff changeset
386
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
387
48363
6a454e7053a1 errors: return more detailed errors when failing to parse or apply patch
Martin von Zweigbergk <martinvonz@google.com>
parents: 48284
diff changeset
388 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
389 __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
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
6a454e7053a1 errors: return more detailed errors when failing to parse or apply patch
Martin von Zweigbergk <martinvonz@google.com>
parents: 48284
diff changeset
392 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
393 __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
394
6a454e7053a1 errors: return more detailed errors when failing to parse or apply patch
Martin von Zweigbergk <martinvonz@google.com>
parents: 48284
diff changeset
395
45882
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45877
diff changeset
396 def getsimilar(symbols, value):
46899
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
397 # type: (Iterable[bytes], bytes) -> List[bytes]
45882
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45877
diff changeset
398 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
399 # 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
400 # probably be investigated and tweaked.
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45877
diff changeset
401 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
402
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45877
diff changeset
403
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45877
diff changeset
404 def similarity_hint(similar):
46899
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
405 # type: (List[bytes]) -> Optional[bytes]
45882
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45877
diff changeset
406 from .i18n import _
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45877
diff changeset
407
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45877
diff changeset
408 if len(similar) == 1:
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45877
diff changeset
409 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
410 elif similar:
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45877
diff changeset
411 ss = b", ".join(sorted(similar))
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45877
diff changeset
412 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
413 else:
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45877
diff changeset
414 return None
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45877
diff changeset
415
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45877
diff changeset
416
24217
d2b81256db1e error: add a new UnknownIdentifier error type
Augie Fackler <augie@google.com>
parents: 24190
diff changeset
417 class UnknownIdentifier(ParseError):
d2b81256db1e error: add a new UnknownIdentifier error type
Augie Fackler <augie@google.com>
parents: 24190
diff changeset
418 """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
419
d2b81256db1e error: add a new UnknownIdentifier error type
Augie Fackler <augie@google.com>
parents: 24190
diff changeset
420 def __init__(self, function, symbols):
46899
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
421 # type: (bytes, Iterable[bytes]) -> None
25945
147bd9e238a1 error: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25484
diff changeset
422 from .i18n import _
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
423
45883
1817b66897ad errors: create "similarity hint" for UnknownIdentifier eagerly in constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45882
diff changeset
424 similar = getsimilar(symbols, function)
1817b66897ad errors: create "similarity hint" for UnknownIdentifier eagerly in constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45882
diff changeset
425 hint = similarity_hint(similar)
1817b66897ad errors: create "similarity hint" for UnknownIdentifier eagerly in constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45882
diff changeset
426
1817b66897ad errors: create "similarity hint" for UnknownIdentifier eagerly in constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45882
diff changeset
427 ParseError.__init__(
1817b66897ad errors: create "similarity hint" for UnknownIdentifier eagerly in constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45882
diff changeset
428 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
429 )
24217
d2b81256db1e error: add a new UnknownIdentifier error type
Augie Fackler <augie@google.com>
parents: 24190
diff changeset
430
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
431
29509
945b4c14c570 error: make HintException a mix-in class not derived from BaseException (API)
Yuya Nishihara <yuya@tcha.org>
parents: 28141
diff changeset
432 class RepoError(Hint, Exception):
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
433 __bytes__ = _tobytes
7637
1d54e2f6c0b7 error: move repo errors
Matt Mackall <mpm@selenic.com>
parents: 7636
diff changeset
434
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
435
9423
1444a42f6052 Make distinct lookup error for localrepo.lookup
Matt Mackall <mpm@selenic.com>
parents: 8227
diff changeset
436 class RepoLookupError(RepoError):
1444a42f6052 Make distinct lookup error for localrepo.lookup
Matt Mackall <mpm@selenic.com>
parents: 8227
diff changeset
437 pass
1444a42f6052 Make distinct lookup error for localrepo.lookup
Matt Mackall <mpm@selenic.com>
parents: 8227
diff changeset
438
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
439
23016
2bd51e61c65e repoview: add a FilteredRepoLookupError
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 23015
diff changeset
440 class FilteredRepoLookupError(RepoLookupError):
2bd51e61c65e repoview: add a FilteredRepoLookupError
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 23015
diff changeset
441 pass
2bd51e61c65e repoview: add a FilteredRepoLookupError
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 23015
diff changeset
442
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
443
7637
1d54e2f6c0b7 error: move repo errors
Matt Mackall <mpm@selenic.com>
parents: 7636
diff changeset
444 class CapabilityError(RepoError):
1d54e2f6c0b7 error: move repo errors
Matt Mackall <mpm@selenic.com>
parents: 7636
diff changeset
445 pass
7640
7197812e8d44 error: move lock errors
Matt Mackall <mpm@selenic.com>
parents: 7637
diff changeset
446
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
447
13447
931a72e00efa introduce new RequirementError (issue2649)
Adrian Buehlmann <adrian@cadifra.com>
parents: 11574
diff changeset
448 class RequirementError(RepoError):
931a72e00efa introduce new RequirementError (issue2649)
Adrian Buehlmann <adrian@cadifra.com>
parents: 11574
diff changeset
449 """Exception raised if .hg/requires has an unknown entry."""
931a72e00efa introduce new RequirementError (issue2649)
Adrian Buehlmann <adrian@cadifra.com>
parents: 11574
diff changeset
450
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
451
31959
b445a3f00528 stdio: add machinery to identify failed stdout/stderr writes
Bryan O'Sullivan <bryano@fb.com>
parents: 31503
diff changeset
452 class StdioError(IOError):
b445a3f00528 stdio: add machinery to identify failed stdout/stderr writes
Bryan O'Sullivan <bryano@fb.com>
parents: 31503
diff changeset
453 """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
454
b445a3f00528 stdio: add machinery to identify failed stdout/stderr writes
Bryan O'Sullivan <bryano@fb.com>
parents: 31503
diff changeset
455 def __init__(self, err):
46899
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
456 # type: (IOError) -> None
31959
b445a3f00528 stdio: add machinery to identify failed stdout/stderr writes
Bryan O'Sullivan <bryano@fb.com>
parents: 31503
diff changeset
457 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
458
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
459 # 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
460
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
461
26985
039a53c87370 error: add a structured exception for unsupported merge records
Siddharth Agarwal <sid0@fb.com>
parents: 26896
diff changeset
462 class UnsupportedMergeRecords(Abort):
039a53c87370 error: add a structured exception for unsupported merge records
Siddharth Agarwal <sid0@fb.com>
parents: 26896
diff changeset
463 def __init__(self, recordtypes):
46899
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
464 # type: (Iterable[bytes]) -> None
26985
039a53c87370 error: add a structured exception for unsupported merge records
Siddharth Agarwal <sid0@fb.com>
parents: 26896
diff changeset
465 from .i18n import _
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
466
26985
039a53c87370 error: add a structured exception for unsupported merge records
Siddharth Agarwal <sid0@fb.com>
parents: 26896
diff changeset
467 self.recordtypes = sorted(recordtypes)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
468 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
469 Abort.__init__(
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
470 self,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
471 _(b'unsupported merge state records: %s') % s,
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
472 hint=_(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
473 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
474 b'more information'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
475 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
476 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
477
26985
039a53c87370 error: add a structured exception for unsupported merge records
Siddharth Agarwal <sid0@fb.com>
parents: 26896
diff changeset
478
32596
19df975eb555 obsolete: raise richer exception on unknown version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 32402
diff changeset
479 class UnknownVersion(Abort):
45942
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45915
diff changeset
480 """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
481
19df975eb555 obsolete: raise richer exception on unknown version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 32402
diff changeset
482 def __init__(self, msg, hint=None, version=None):
46899
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
483 # type: (bytes, Optional[bytes], Optional[bytes]) -> None
32596
19df975eb555 obsolete: raise richer exception on unknown version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 32402
diff changeset
484 self.version = version
19df975eb555 obsolete: raise richer exception on unknown version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 32402
diff changeset
485 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
486
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
487
7640
7197812e8d44 error: move lock errors
Matt Mackall <mpm@selenic.com>
parents: 7637
diff changeset
488 class LockError(IOError):
7197812e8d44 error: move lock errors
Matt Mackall <mpm@selenic.com>
parents: 7637
diff changeset
489 def __init__(self, errno, strerror, filename, desc):
46899
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
490 # TODO: figure out if this should be bytes or str
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
491 # _type: (int, str, str, bytes) -> None
7640
7197812e8d44 error: move lock errors
Matt Mackall <mpm@selenic.com>
parents: 7637
diff changeset
492 IOError.__init__(self, errno, strerror, filename)
7197812e8d44 error: move lock errors
Matt Mackall <mpm@selenic.com>
parents: 7637
diff changeset
493 self.desc = desc
7197812e8d44 error: move lock errors
Matt Mackall <mpm@selenic.com>
parents: 7637
diff changeset
494
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
495 # 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
496
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
497
7640
7197812e8d44 error: move lock errors
Matt Mackall <mpm@selenic.com>
parents: 7637
diff changeset
498 class LockHeld(LockError):
7197812e8d44 error: move lock errors
Matt Mackall <mpm@selenic.com>
parents: 7637
diff changeset
499 def __init__(self, errno, filename, desc, locker):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
500 LockError.__init__(self, errno, b'Lock held', filename, desc)
7640
7197812e8d44 error: move lock errors
Matt Mackall <mpm@selenic.com>
parents: 7637
diff changeset
501 self.locker = locker
7197812e8d44 error: move lock errors
Matt Mackall <mpm@selenic.com>
parents: 7637
diff changeset
502
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
503
7640
7197812e8d44 error: move lock errors
Matt Mackall <mpm@selenic.com>
parents: 7637
diff changeset
504 class LockUnavailable(LockError):
7197812e8d44 error: move lock errors
Matt Mackall <mpm@selenic.com>
parents: 7637
diff changeset
505 pass
7641
d2f753830f80 error: move UnexpectedOutput (now ResponseError)
Matt Mackall <mpm@selenic.com>
parents: 7640
diff changeset
506
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
507
26355
f51713b8c6fa error: add an exception to indicate lock inheritance API contract violations
Siddharth Agarwal <sid0@fb.com>
parents: 25945
diff changeset
508 # 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
509 class LockInheritanceContractViolation(RuntimeError):
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
510 __bytes__ = _tobytes
26355
f51713b8c6fa error: add an exception to indicate lock inheritance API contract violations
Siddharth Agarwal <sid0@fb.com>
parents: 25945
diff changeset
511
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
512
7641
d2f753830f80 error: move UnexpectedOutput (now ResponseError)
Matt Mackall <mpm@selenic.com>
parents: 7640
diff changeset
513 class ResponseError(Exception):
d2f753830f80 error: move UnexpectedOutput (now ResponseError)
Matt Mackall <mpm@selenic.com>
parents: 7640
diff changeset
514 """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
515
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
516 __bytes__ = _tobytes
7641
d2f753830f80 error: move UnexpectedOutput (now ResponseError)
Matt Mackall <mpm@selenic.com>
parents: 7640
diff changeset
517
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
518
7644
182b7114d35a error: move SignalInterrupt
Matt Mackall <mpm@selenic.com>
parents: 7643
diff changeset
519 # derived from KeyboardInterrupt to simplify some breakout code
182b7114d35a error: move SignalInterrupt
Matt Mackall <mpm@selenic.com>
parents: 7643
diff changeset
520 class SignalInterrupt(KeyboardInterrupt):
182b7114d35a error: move SignalInterrupt
Matt Mackall <mpm@selenic.com>
parents: 7643
diff changeset
521 """Exception raised on SIGTERM and SIGHUP."""
7646
e62a456b8dc5 error: move SignatureError
Matt Mackall <mpm@selenic.com>
parents: 7644
diff changeset
522
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
523
7646
e62a456b8dc5 error: move SignatureError
Matt Mackall <mpm@selenic.com>
parents: 7644
diff changeset
524 class SignatureError(Exception):
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
525 __bytes__ = _tobytes
21184
28d76afa1568 bundle2: fix raising errors during heads checking
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 18931
diff changeset
526
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
527
21184
28d76afa1568 bundle2: fix raising errors during heads checking
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 18931
diff changeset
528 class PushRaced(RuntimeError):
28d76afa1568 bundle2: fix raising errors during heads checking
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 18931
diff changeset
529 """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
530
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
531 __bytes__ = _tobytes
21184
28d76afa1568 bundle2: fix raising errors during heads checking
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 18931
diff changeset
532
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
533
32340
9c023179e8d0 error: add hint to ProgrammingError
Yuya Nishihara <yuya@tcha.org>
parents: 32023
diff changeset
534 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
535 """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
536
921aeb9ac508 error: ensure ProgrammingError message is always a str
Augie Fackler <augie@google.com>
parents: 39559
diff changeset
537 def __init__(self, msg, *args, **kwargs):
46899
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
538 # type: (AnyStr, Any, Any) -> None
39596
409c42d6a570 py3: use sysstr() to convert ProgrammingError bytes with no unicode error risk
Yuya Nishihara <yuya@tcha.org>
parents: 39579
diff changeset
539 # 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
540 # 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
541 # stack traces.
409c42d6a570 py3: use sysstr() to convert ProgrammingError bytes with no unicode error risk
Yuya Nishihara <yuya@tcha.org>
parents: 39579
diff changeset
542 msg = pycompat.sysstr(msg)
39579
921aeb9ac508 error: ensure ProgrammingError message is always a str
Augie Fackler <augie@google.com>
parents: 39559
diff changeset
543 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
544
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
545 __bytes__ = _tobytes
30573
b0ebab239f90 error: add ProgrammingError
Jun Wu <quark@fb.com>
parents: 30332
diff changeset
546
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
547
32402
c8e10565a113 error: add a new exception named WdirUnsupported
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32340
diff changeset
548 class WdirUnsupported(Exception):
c8e10565a113 error: add a new exception named WdirUnsupported
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32340
diff changeset
549 """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
550
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
551 __bytes__ = _tobytes
32402
c8e10565a113 error: add a new exception named WdirUnsupported
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32340
diff changeset
552
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
553
21618
7568f5c1c801 bundle2: move exception classes into the error module
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21184
diff changeset
554 # bundle2 related errors
7568f5c1c801 bundle2: move exception classes into the error module
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21184
diff changeset
555 class BundleValueError(ValueError):
21621
b6eb56a9335d bundle2: introduce a ``params`` attribute to BundleValueError
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21620
diff changeset
556 """error raised when bundle2 cannot be processed"""
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
557
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
558 __bytes__ = _tobytes
21620
6eaa71b2a3cc bundle2: introduce a parttype attribute to BundleValueError
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21618
diff changeset
559
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
560
26393
cff70549a959 bundle2: rename error exception class for unsupported feature
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26355
diff changeset
561 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
562 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
563 self.parttype = parttype
21621
b6eb56a9335d bundle2: introduce a ``params`` attribute to BundleValueError
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21620
diff changeset
564 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
565 self.values = values
21627
3e8bcc90f07c bundle2: support None parttype in BundleValueError
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21621
diff changeset
566 if self.parttype is None:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
567 msg = b'Stream Parameter'
21627
3e8bcc90f07c bundle2: support None parttype in BundleValueError
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21621
diff changeset
568 else:
3e8bcc90f07c bundle2: support None parttype in BundleValueError
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21621
diff changeset
569 msg = parttype
26394
e75da738add5 bundle2: allow to specify unsupported value on error
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26393
diff changeset
570 entries = self.params
e75da738add5 bundle2: allow to specify unsupported value on error
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26393
diff changeset
571 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
572 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
573 entries = []
e75da738add5 bundle2: allow to specify unsupported value on error
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26393
diff changeset
574 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
575 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
576 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
577 entries.append(val)
e75da738add5 bundle2: allow to specify unsupported value on error
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26393
diff changeset
578 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
579 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
580 if entries:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
581 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
582 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
583
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
584
21618
7568f5c1c801 bundle2: move exception classes into the error module
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21184
diff changeset
585 class ReadOnlyPartError(RuntimeError):
7568f5c1c801 bundle2: move exception classes into the error module
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21184
diff changeset
586 """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
587
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
588 __bytes__ = _tobytes
21618
7568f5c1c801 bundle2: move exception classes into the error module
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21184
diff changeset
589
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
590
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
591 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
592 """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
593
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
594 def __init__(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
595 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
596 ):
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
597 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
598 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
599 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
600 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
601 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
602 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
603 # 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
604 Abort.__init__(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
605 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
606 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
607
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
608
39777
b63dee7bd0d9 global: replace most uses of RevlogError with StorageError (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39776
diff changeset
609 class CensoredNodeError(StorageError):
24190
903c7e8c97ad changegroup: emit full-replacement deltas if either revision is censored
Mike Edgar <adgar@google.com>
parents: 24137
diff changeset
610 """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
611
24190
903c7e8c97ad changegroup: emit full-replacement deltas if either revision is censored
Mike Edgar <adgar@google.com>
parents: 24137
diff changeset
612 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
613 """
903c7e8c97ad changegroup: emit full-replacement deltas if either revision is censored
Mike Edgar <adgar@google.com>
parents: 24137
diff changeset
614
903c7e8c97ad changegroup: emit full-replacement deltas if either revision is censored
Mike Edgar <adgar@google.com>
parents: 24137
diff changeset
615 def __init__(self, filename, node, tombstone):
46899
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
616 # type: (bytes, bytes, bytes) -> None
25945
147bd9e238a1 error: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25484
diff changeset
617 from .node import short
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
618
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
619 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
620 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
621
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
622
39777
b63dee7bd0d9 global: replace most uses of RevlogError with StorageError (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39776
diff changeset
623 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
624 """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
625
a450e0a2ba0a revlog: in addgroup, reject ill-formed deltas based on censored nodes
Mike Edgar <adgar@google.com>
parents: 24040
diff changeset
626 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
627 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
628 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
629 """
26640
b13fdcc4e700 exchange: refactor bundle specification parsing
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26438
diff changeset
630
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
631
26640
b13fdcc4e700 exchange: refactor bundle specification parsing
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26438
diff changeset
632 class InvalidBundleSpecification(Exception):
b13fdcc4e700 exchange: refactor bundle specification parsing
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26438
diff changeset
633 """error raised when a bundle specification is invalid.
b13fdcc4e700 exchange: refactor bundle specification parsing
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26438
diff changeset
634
b13fdcc4e700 exchange: refactor bundle specification parsing
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26438
diff changeset
635 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
636 """
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
637
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
638 __bytes__ = _tobytes
26640
b13fdcc4e700 exchange: refactor bundle specification parsing
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26438
diff changeset
639
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
640
26640
b13fdcc4e700 exchange: refactor bundle specification parsing
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26438
diff changeset
641 class UnsupportedBundleSpecification(Exception):
b13fdcc4e700 exchange: refactor bundle specification parsing
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26438
diff changeset
642 """error raised when a bundle specification is not supported."""
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
643
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
644 __bytes__ = _tobytes
29536
b17a6e3cd2ac shelve: make unshelve be able to abort in any case
Kostia Balytskyi <ikostia@fb.com>
parents: 29510
diff changeset
645
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
646
29536
b17a6e3cd2ac shelve: make unshelve be able to abort in any case
Kostia Balytskyi <ikostia@fb.com>
parents: 29510
diff changeset
647 class CorruptedState(Exception):
b17a6e3cd2ac shelve: make unshelve be able to abort in any case
Kostia Balytskyi <ikostia@fb.com>
parents: 29510
diff changeset
648 """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
649
32616
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32596
diff changeset
650 __bytes__ = _tobytes
32002
bf855efe5664 httppeer: wrap HTTPResponse.read() globally
Gregory Szorc <gregory.szorc@gmail.com>
parents: 31959
diff changeset
651
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
652
50660
bf16ef96defe rust-dirstate: fall back to v1 if reading v2 failed
Raphaël Gomès <rgomes@octobus.net>
parents: 50329
diff changeset
653 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
654 """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
655 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
656
bf16ef96defe rust-dirstate: fall back to v1 if reading v2 failed
Raphaël Gomès <rgomes@octobus.net>
parents: 50329
diff changeset
657 __bytes__ = _tobytes
bf16ef96defe rust-dirstate: fall back to v1 if reading v2 failed
Raphaël Gomès <rgomes@octobus.net>
parents: 50329
diff changeset
658
bf16ef96defe rust-dirstate: fall back to v1 if reading v2 failed
Raphaël Gomès <rgomes@octobus.net>
parents: 50329
diff changeset
659
32023
a29580905771 error: rename RichIOError to PeerTransportError
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32002
diff changeset
660 class PeerTransportError(Abort):
a29580905771 error: rename RichIOError to PeerTransportError
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32002
diff changeset
661 """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
662
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
663
35105
795bfa2a9103 error: add InMemoryMergeConflictsError
Phil Cohen <phillco@fb.com>
parents: 34251
diff changeset
664 class InMemoryMergeConflictsError(Exception):
795bfa2a9103 error: add InMemoryMergeConflictsError
Phil Cohen <phillco@fb.com>
parents: 34251
diff changeset
665 """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
666
35105
795bfa2a9103 error: add InMemoryMergeConflictsError
Phil Cohen <phillco@fb.com>
parents: 34251
diff changeset
667 __bytes__ = _tobytes
39559
07b58266bce3 wireprotov2: implement commands as a generator of objects
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38841
diff changeset
668
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
669
39559
07b58266bce3 wireprotov2: implement commands as a generator of objects
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38841
diff changeset
670 class WireprotoCommandError(Exception):
07b58266bce3 wireprotov2: implement commands as a generator of objects
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38841
diff changeset
671 """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
672
07b58266bce3 wireprotov2: implement commands as a generator of objects
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38841
diff changeset
673 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
674
07b58266bce3 wireprotov2: implement commands as a generator of objects
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38841
diff changeset
675 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
676 """
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
677
39559
07b58266bce3 wireprotov2: implement commands as a generator of objects
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38841
diff changeset
678 def __init__(self, message, args=None):
46899
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
679 # type: (bytes, Optional[Sequence[bytes]]) -> None
39559
07b58266bce3 wireprotov2: implement commands as a generator of objects
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38841
diff changeset
680 self.message = message
07b58266bce3 wireprotov2: implement commands as a generator of objects
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38841
diff changeset
681 self.messageargs = args