annotate mercurial/error.py @ 47300:33c0c25d0b0f

errors: let each Abort subclass define its error code It's more flexible to have the error codes defined on the error types themselves. That way extensions can easily set their own exit code. It also means that we can reduce a bit of duplication betwen `scmutil.callcatch()` and `chgserver.chgcmdserver.validate()`. Differential Revision: https://phab.mercurial-scm.org/D10735
author Martin von Zweigbergk <martinvonz@google.com>
date Tue, 18 May 2021 17:15:49 -0700
parents abd18d6306f1
children 5e736d2e9703
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: 46796
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 from __future__ import absolute_import
147bd9e238a1 error: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25484
diff changeset
15
45897
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45892
diff changeset
16 import difflib
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45892
diff changeset
17
32639
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32622
diff changeset
18 # Do not import anything but pycompat here, please
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32622
diff changeset
19 from . import pycompat
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32622
diff changeset
20
46388
ae62ab82a345 typing: ensure that error.Abort is given bytes
Matt Harbison <matt_harbison@yahoo.com>
parents: 45957
diff changeset
21 if pycompat.TYPE_CHECKING:
ae62ab82a345 typing: ensure that error.Abort is given bytes
Matt Harbison <matt_harbison@yahoo.com>
parents: 45957
diff changeset
22 from typing import (
46899
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
23 Any,
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
24 AnyStr,
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
25 Iterable,
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
26 List,
46388
ae62ab82a345 typing: ensure that error.Abort is given bytes
Matt Harbison <matt_harbison@yahoo.com>
parents: 45957
diff changeset
27 Optional,
46899
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
28 Sequence,
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
29 Union,
46388
ae62ab82a345 typing: ensure that error.Abort is given bytes
Matt Harbison <matt_harbison@yahoo.com>
parents: 45957
diff changeset
30 )
ae62ab82a345 typing: ensure that error.Abort is given bytes
Matt Harbison <matt_harbison@yahoo.com>
parents: 45957
diff changeset
31
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
32
32639
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32622
diff changeset
33 def _tobytes(exc):
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32622
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: 32622
diff changeset
35 if not exc.args:
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32622
diff changeset
36 return b''
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32622
diff changeset
37 if len(exc.args) == 1:
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32622
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: 32622
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
29509
945b4c14c570 error: make HintException a mix-in class not derived from BaseException (API)
Yuya Nishihara <yuya@tcha.org>
parents: 28141
diff changeset
42 class Hint(object):
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):
43554
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43418
diff changeset
50 self.hint = kw.pop('hint', None)
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
39792
cb65d4b7e429 error: introduce StorageError
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39612
diff changeset
54 class StorageError(Hint, Exception):
cb65d4b7e429 error: introduce StorageError
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39612
diff changeset
55 """Raised when an error occurs in a storage layer.
cb65d4b7e429 error: introduce StorageError
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39612
diff changeset
56
cb65d4b7e429 error: introduce StorageError
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39612
diff changeset
57 Usually subclassed by a storage-specific exception.
cb65d4b7e429 error: introduce StorageError
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39612
diff changeset
58 """
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
59
39792
cb65d4b7e429 error: introduce StorageError
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39612
diff changeset
60 __bytes__ = _tobytes
cb65d4b7e429 error: introduce StorageError
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39612
diff changeset
61
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
62
39792
cb65d4b7e429 error: introduce StorageError
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39612
diff changeset
63 class RevlogError(StorageError):
45798
5bb900885311 errors: remove unnecessary override of __bytes__ in RevlogError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45682
diff changeset
64 pass
7633
08cabecfa8a8 errors: move revlog errors
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
65
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
66
43034
294afb982a88 sidedata: add a function to read sidedata from revlog raw text
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 40985
diff changeset
67 class SidedataHashError(RevlogError):
294afb982a88 sidedata: add a function to read sidedata from revlog raw text
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 40985
diff changeset
68 def __init__(self, key, expected, got):
46664
3941fe53670d error: add `hint` attribute to `SidedataHashError`
Raphaël Gomès <rgomes@octobus.net>
parents: 45957
diff changeset
69 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: 40985
diff changeset
70 self.sidedatakey = key
294afb982a88 sidedata: add a function to read sidedata from revlog raw text
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 40985
diff changeset
71 self.expecteddigest = expected
294afb982a88 sidedata: add a function to read sidedata from revlog raw text
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 40985
diff changeset
72 self.actualdigest = got
294afb982a88 sidedata: add a function to read sidedata from revlog raw text
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 40985
diff changeset
73
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
74
23014
f00813325c5a repoview: add a FilteredIndexError class
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 23010
diff changeset
75 class FilteredIndexError(IndexError):
32639
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32622
diff changeset
76 __bytes__ = _tobytes
23014
f00813325c5a repoview: add a FilteredIndexError class
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 23010
diff changeset
77
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
78
7633
08cabecfa8a8 errors: move revlog errors
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
79 class LookupError(RevlogError, KeyError):
08cabecfa8a8 errors: move revlog errors
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
80 def __init__(self, name, index, message):
08cabecfa8a8 errors: move revlog errors
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
81 self.name = name
24038
10d02cd18604 error: store filename and message on LookupError for later
Martin von Zweigbergk <martinvonz@google.com>
parents: 23415
diff changeset
82 self.index = index
24137
dcfdfd63bde4 error.LookupError: rename 'message' property to something else
Siddharth Agarwal <sid0@fb.com>
parents: 24120
diff changeset
83 # 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
84 # 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
85 self.lookupmessage = message
36570
c6a7b99f150a error: fix isinstnace check to use bytes instead of str
Augie Fackler <augie@google.com>
parents: 35128
diff changeset
86 if isinstance(name, bytes) and len(name) == 20:
46690
6fc57680cfd6 error: remove shortening of node in error message
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46664
diff changeset
87 from .node import hex
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
88
46690
6fc57680cfd6 error: remove shortening of node in error message
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46664
diff changeset
89 name = hex(name)
45217
bd5b2b29b82d py3: fix formatting of LookupError for workingctx
Yuya Nishihara <yuya@tcha.org>
parents: 45151
diff changeset
90 # 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
91 RevlogError.__init__(
bd5b2b29b82d py3: fix formatting of LookupError for workingctx
Yuya Nishihara <yuya@tcha.org>
parents: 45151
diff changeset
92 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
93 )
7633
08cabecfa8a8 errors: move revlog errors
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
94
32639
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32622
diff changeset
95 def __bytes__(self):
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32622
diff changeset
96 return RevlogError.__bytes__(self)
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32622
diff changeset
97
7633
08cabecfa8a8 errors: move revlog errors
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
98 def __str__(self):
08cabecfa8a8 errors: move revlog errors
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
99 return RevlogError.__str__(self)
7636
e3f8c6d6b72e error: move ParseError
Matt Mackall <mpm@selenic.com>
parents: 7633
diff changeset
100
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
101
38880
df0873ab5c14 revlog: use specialized exception for ambiguous prefix lookup
Martin von Zweigbergk <martinvonz@google.com>
parents: 38608
diff changeset
102 class AmbiguousPrefixLookupError(LookupError):
df0873ab5c14 revlog: use specialized exception for ambiguous prefix lookup
Martin von Zweigbergk <martinvonz@google.com>
parents: 38608
diff changeset
103 pass
df0873ab5c14 revlog: use specialized exception for ambiguous prefix lookup
Martin von Zweigbergk <martinvonz@google.com>
parents: 38608
diff changeset
104
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
105
23015
21c44c1aed87 repoview: add a FilteredLookupError class
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 23014
diff changeset
106 class FilteredLookupError(LookupError):
21c44c1aed87 repoview: add a FilteredLookupError class
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 23014
diff changeset
107 pass
21c44c1aed87 repoview: add a FilteredLookupError class
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 23014
diff changeset
108
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
109
18855
50c922c1b514 hgweb: show correct error message for i18n environment
Takumi IINO <trot.thunder@gmail.com>
parents: 15017
diff changeset
110 class ManifestLookupError(LookupError):
50c922c1b514 hgweb: show correct error message for i18n environment
Takumi IINO <trot.thunder@gmail.com>
parents: 15017
diff changeset
111 pass
50c922c1b514 hgweb: show correct error message for i18n environment
Takumi IINO <trot.thunder@gmail.com>
parents: 15017
diff changeset
112
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
113
11287
b901bb751999 error: change ParseError to CommandError
Matt Mackall <mpm@selenic.com>
parents: 10263
diff changeset
114 class CommandError(Exception):
7636
e3f8c6d6b72e error: move ParseError
Matt Mackall <mpm@selenic.com>
parents: 7633
diff changeset
115 """Exception raised on errors in parsing the command line."""
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
116
45678
bd2df58366b1 errors: name arguments to CommandError constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45677
diff changeset
117 def __init__(self, command, message):
46899
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
118 # type: (bytes, bytes) -> None
45678
bd2df58366b1 errors: name arguments to CommandError constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45677
diff changeset
119 self.command = command
bd2df58366b1 errors: name arguments to CommandError constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45677
diff changeset
120 self.message = message
bd2df58366b1 errors: name arguments to CommandError constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45677
diff changeset
121 super(CommandError, self).__init__()
bd2df58366b1 errors: name arguments to CommandError constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45677
diff changeset
122
32639
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32622
diff changeset
123 __bytes__ = _tobytes
7637
1d54e2f6c0b7 error: move repo errors
Matt Mackall <mpm@selenic.com>
parents: 7636
diff changeset
124
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
125
45677
bdd2cdf9e248 errors: move UnknownCommand and AmbiguousCommand near CommandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45217
diff changeset
126 class UnknownCommand(Exception):
bdd2cdf9e248 errors: move UnknownCommand and AmbiguousCommand near CommandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45217
diff changeset
127 """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: 45217
diff changeset
128
45680
bb1a988ef4a5 errors: name arguments to UnknownCommand constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45679
diff changeset
129 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
130 # type: (bytes, Optional[List[bytes]]) -> None
45680
bb1a988ef4a5 errors: name arguments to UnknownCommand constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45679
diff changeset
131 self.command = command
bb1a988ef4a5 errors: name arguments to UnknownCommand constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45679
diff changeset
132 self.all_commands = all_commands
bb1a988ef4a5 errors: name arguments to UnknownCommand constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45679
diff changeset
133 super(UnknownCommand, self).__init__()
bb1a988ef4a5 errors: name arguments to UnknownCommand constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45679
diff changeset
134
45677
bdd2cdf9e248 errors: move UnknownCommand and AmbiguousCommand near CommandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45217
diff changeset
135 __bytes__ = _tobytes
bdd2cdf9e248 errors: move UnknownCommand and AmbiguousCommand near CommandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45217
diff changeset
136
bdd2cdf9e248 errors: move UnknownCommand and AmbiguousCommand near CommandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45217
diff changeset
137
bdd2cdf9e248 errors: move UnknownCommand and AmbiguousCommand near CommandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45217
diff changeset
138 class AmbiguousCommand(Exception):
bdd2cdf9e248 errors: move UnknownCommand and AmbiguousCommand near CommandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45217
diff changeset
139 """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: 45217
diff changeset
140
45679
65e2b64670b5 errors: name arguments to AmbiguousCommand constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45678
diff changeset
141 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
142 # type: (bytes, List[bytes]) -> None
45679
65e2b64670b5 errors: name arguments to AmbiguousCommand constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45678
diff changeset
143 self.prefix = prefix
65e2b64670b5 errors: name arguments to AmbiguousCommand constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45678
diff changeset
144 self.matches = matches
65e2b64670b5 errors: name arguments to AmbiguousCommand constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45678
diff changeset
145 super(AmbiguousCommand, self).__init__()
65e2b64670b5 errors: name arguments to AmbiguousCommand constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45678
diff changeset
146
45677
bdd2cdf9e248 errors: move UnknownCommand and AmbiguousCommand near CommandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45217
diff changeset
147 __bytes__ = _tobytes
bdd2cdf9e248 errors: move UnknownCommand and AmbiguousCommand near CommandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45217
diff changeset
148
bdd2cdf9e248 errors: move UnknownCommand and AmbiguousCommand near CommandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45217
diff changeset
149
45844
8f07f5a9c3de worker: raise exception instead of calling sys.exit() with child's code
Martin von Zweigbergk <martinvonz@google.com>
parents: 45799
diff changeset
150 class WorkerError(Exception):
8f07f5a9c3de worker: raise exception instead of calling sys.exit() with child's code
Martin von Zweigbergk <martinvonz@google.com>
parents: 45799
diff changeset
151 """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: 45799
diff changeset
152
8f07f5a9c3de worker: raise exception instead of calling sys.exit() with child's code
Martin von Zweigbergk <martinvonz@google.com>
parents: 45799
diff changeset
153 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
154 # type: (int) -> None
45844
8f07f5a9c3de worker: raise exception instead of calling sys.exit() with child's code
Martin von Zweigbergk <martinvonz@google.com>
parents: 45799
diff changeset
155 self.status_code = status_code
45918
64faa55716f4 tests: make test-worker.t pass on py2
Martin von Zweigbergk <martinvonz@google.com>
parents: 45909
diff changeset
156 # 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: 45909
diff changeset
157 super(WorkerError, self).__init__(status_code)
64faa55716f4 tests: make test-worker.t pass on py2
Martin von Zweigbergk <martinvonz@google.com>
parents: 45909
diff changeset
158
64faa55716f4 tests: make test-worker.t pass on py2
Martin von Zweigbergk <martinvonz@google.com>
parents: 45909
diff changeset
159 __bytes__ = _tobytes
45844
8f07f5a9c3de worker: raise exception instead of calling sys.exit() with child's code
Martin von Zweigbergk <martinvonz@google.com>
parents: 45799
diff changeset
160
8f07f5a9c3de worker: raise exception instead of calling sys.exit() with child's code
Martin von Zweigbergk <martinvonz@google.com>
parents: 45799
diff changeset
161
29509
945b4c14c570 error: make HintException a mix-in class not derived from BaseException (API)
Yuya Nishihara <yuya@tcha.org>
parents: 28141
diff changeset
162 class InterventionRequired(Hint, Exception):
18931
3c224e0949de error: introduce new InterventionRequired exception
Augie Fackler <raf@durin42.com>
parents: 18855
diff changeset
163 """Exception raised when a command requires human intervention."""
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
164
32639
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32622
diff changeset
165 __bytes__ = _tobytes
18931
3c224e0949de error: introduce new InterventionRequired exception
Augie Fackler <raf@durin42.com>
parents: 18855
diff changeset
166
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
167
45151
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43554
diff changeset
168 class ConflictResolutionRequired(InterventionRequired):
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43554
diff changeset
169 """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: 43554
diff changeset
170
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43554
diff changeset
171 def __init__(self, opname):
46899
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
172 # type: (bytes) -> None
45151
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43554
diff changeset
173 from .i18n import _
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43554
diff changeset
174
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43554
diff changeset
175 self.opname = opname
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43554
diff changeset
176 InterventionRequired.__init__(
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43554
diff changeset
177 self,
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43554
diff changeset
178 _(
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43554
diff changeset
179 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: 43554
diff changeset
180 )
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43554
diff changeset
181 % opname,
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43554
diff changeset
182 )
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43554
diff changeset
183
e429e7c801b2 error: normalize "unresolved conflicts" error messages with a custom class
Daniel Ploch <dploch@google.com>
parents: 43554
diff changeset
184
29509
945b4c14c570 error: make HintException a mix-in class not derived from BaseException (API)
Yuya Nishihara <yuya@tcha.org>
parents: 28141
diff changeset
185 class Abort(Hint, Exception):
11288
2123aad24d56 error: add new ParseError for various parsing errors
Matt Mackall <mpm@selenic.com>
parents: 11287
diff changeset
186 """Raised if a command needs to print an error and exit."""
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
187
47300
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
188 def __init__(self, message, hint=None, detailed_exit_code=None):
46388
ae62ab82a345 typing: ensure that error.Abort is given bytes
Matt Harbison <matt_harbison@yahoo.com>
parents: 45957
diff changeset
189 # type: (bytes, Optional[bytes]) -> None
45682
d2e1dcd4490d errors: name arguments to Abort constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45680
diff changeset
190 self.message = message
d2e1dcd4490d errors: name arguments to Abort constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45680
diff changeset
191 self.hint = hint
47300
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
192 self.detailed_exit_code = detailed_exit_code
45682
d2e1dcd4490d errors: name arguments to Abort constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45680
diff changeset
193 # Pass the message into the Exception constructor to help extensions
d2e1dcd4490d errors: name arguments to Abort constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45680
diff changeset
194 # that look for exc.args[0].
d2e1dcd4490d errors: name arguments to Abort constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45680
diff changeset
195 Exception.__init__(self, message)
d2e1dcd4490d errors: name arguments to Abort constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45680
diff changeset
196
d2e1dcd4490d errors: name arguments to Abort constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45680
diff changeset
197 def __bytes__(self):
d2e1dcd4490d errors: name arguments to Abort constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45680
diff changeset
198 return self.message
11288
2123aad24d56 error: add new ParseError for various parsing errors
Matt Mackall <mpm@selenic.com>
parents: 11287
diff changeset
199
43417
822202e72f69 py3: do not reimplement Abort.__str__() on Python 2
Yuya Nishihara <yuya@tcha.org>
parents: 43402
diff changeset
200 if pycompat.ispy3:
822202e72f69 py3: do not reimplement Abort.__str__() on Python 2
Yuya Nishihara <yuya@tcha.org>
parents: 43402
diff changeset
201
822202e72f69 py3: do not reimplement Abort.__str__() on Python 2
Yuya Nishihara <yuya@tcha.org>
parents: 43402
diff changeset
202 def __str__(self):
43418
ca3dca416f8d py3: add inline comment about encoding issue of str(Abort())
Yuya Nishihara <yuya@tcha.org>
parents: 43417
diff changeset
203 # the output would be unreadable if the message was translated,
ca3dca416f8d py3: add inline comment about encoding issue of str(Abort())
Yuya Nishihara <yuya@tcha.org>
parents: 43417
diff changeset
204 # but do not replace it with encoding.strfromlocal(), which
ca3dca416f8d py3: add inline comment about encoding issue of str(Abort())
Yuya Nishihara <yuya@tcha.org>
parents: 43417
diff changeset
205 # may raise another exception.
43417
822202e72f69 py3: do not reimplement Abort.__str__() on Python 2
Yuya Nishihara <yuya@tcha.org>
parents: 43402
diff changeset
206 return pycompat.sysstr(self.__bytes__())
43402
40bf3d7ecc42 py3: add a __str__ method to Abort
Denis Laxalde <denis@laxalde.org>
parents: 43077
diff changeset
207
45900
600aec73f309 errors: format "abort: " text in a new Abort.format() method
Martin von Zweigbergk <martinvonz@google.com>
parents: 45899
diff changeset
208 def format(self):
46899
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
209 # type: () -> bytes
45900
600aec73f309 errors: format "abort: " text in a new Abort.format() method
Martin von Zweigbergk <martinvonz@google.com>
parents: 45899
diff changeset
210 from .i18n import _
600aec73f309 errors: format "abort: " text in a new Abort.format() method
Martin von Zweigbergk <martinvonz@google.com>
parents: 45899
diff changeset
211
600aec73f309 errors: format "abort: " text in a new Abort.format() method
Martin von Zweigbergk <martinvonz@google.com>
parents: 45899
diff changeset
212 message = _(b"abort: %s\n") % self.message
600aec73f309 errors: format "abort: " text in a new Abort.format() method
Martin von Zweigbergk <martinvonz@google.com>
parents: 45899
diff changeset
213 if self.hint:
600aec73f309 errors: format "abort: " text in a new Abort.format() method
Martin von Zweigbergk <martinvonz@google.com>
parents: 45899
diff changeset
214 message += _(b"(%s)\n") % self.hint
600aec73f309 errors: format "abort: " text in a new Abort.format() method
Martin von Zweigbergk <martinvonz@google.com>
parents: 45899
diff changeset
215 return message
600aec73f309 errors: format "abort: " text in a new Abort.format() method
Martin von Zweigbergk <martinvonz@google.com>
parents: 45899
diff changeset
216
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
217
45846
8d72e29ad1e0 errors: introduce InputError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45844
diff changeset
218 class InputError(Abort):
8d72e29ad1e0 errors: introduce InputError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45844
diff changeset
219 """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: 45844
diff changeset
220
8d72e29ad1e0 errors: introduce InputError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45844
diff changeset
221 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: 45844
diff changeset
222 """
8d72e29ad1e0 errors: introduce InputError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45844
diff changeset
223
47300
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
224 def __init__(self, message, hint=None):
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
225 super(InputError, self).__init__(
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
226 message, hint=hint, detailed_exit_code=10
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
227 )
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
228
45846
8d72e29ad1e0 errors: introduce InputError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45844
diff changeset
229
45859
527ce85c2e60 errors: introduce StateError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45846
diff changeset
230 class StateError(Abort):
527ce85c2e60 errors: introduce StateError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45846
diff changeset
231 """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: 45846
diff changeset
232
527ce85c2e60 errors: introduce StateError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45846
diff changeset
233 Examples: Unresolved merge conflicts, unfinished operations.
527ce85c2e60 errors: introduce StateError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45846
diff changeset
234 """
527ce85c2e60 errors: introduce StateError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45846
diff changeset
235
47300
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
236 def __init__(self, message, hint=None):
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
237 super(StateError, self).__init__(
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
238 message, hint=hint, detailed_exit_code=20
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
239 )
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
240
45859
527ce85c2e60 errors: introduce StateError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45846
diff changeset
241
45892
ac362d5a7893 errors: introduce CanceledError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45859
diff changeset
242 class CanceledError(Abort):
ac362d5a7893 errors: introduce CanceledError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45859
diff changeset
243 """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: 45859
diff changeset
244
ac362d5a7893 errors: introduce CanceledError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45859
diff changeset
245 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: 45859
diff changeset
246 """
ac362d5a7893 errors: introduce CanceledError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45859
diff changeset
247
47300
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
248 def __init__(self, message, hint=None):
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
249 super(CanceledError, self).__init__(
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
250 message, hint=hint, detailed_exit_code=250
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
251 )
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
252
45892
ac362d5a7893 errors: introduce CanceledError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45859
diff changeset
253
45930
8f50dc096cf4 errors: introduce SecurityError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45918
diff changeset
254 class SecurityError(Abort):
8f50dc096cf4 errors: introduce SecurityError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45918
diff changeset
255 """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: 45918
diff changeset
256
8f50dc096cf4 errors: introduce SecurityError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45918
diff changeset
257 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: 45918
diff changeset
258 filesystem, mismatched GPG signature, DoS protection.
8f50dc096cf4 errors: introduce SecurityError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45918
diff changeset
259 """
8f50dc096cf4 errors: introduce SecurityError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45918
diff changeset
260
47300
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
261 def __init__(self, message, hint=None):
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
262 super(SecurityError, self).__init__(
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
263 message, hint=hint, detailed_exit_code=150
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
264 )
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
265
45930
8f50dc096cf4 errors: introduce SecurityError and use it in a few places
Martin von Zweigbergk <martinvonz@google.com>
parents: 45918
diff changeset
266
26692
8d1cfd77b64f hook: raise a separate exception for when loading a hook fails
Siddharth Agarwal <sid0@fb.com>
parents: 26683
diff changeset
267 class HookLoadError(Abort):
8d1cfd77b64f hook: raise a separate exception for when loading a hook fails
Siddharth Agarwal <sid0@fb.com>
parents: 26683
diff changeset
268 """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
269
8d1cfd77b64f hook: raise a separate exception for when loading a hook fails
Siddharth Agarwal <sid0@fb.com>
parents: 26683
diff changeset
270 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
271
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
272
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
273 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
274 """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
275
cdbb85489c41 hook: raise a more specialized HookAbort exception when a hook fails
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 23016
diff changeset
276 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
277
47300
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
278 def __init__(self, message, hint=None):
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
279 super(HookAbort, self).__init__(
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
280 message, hint=hint, detailed_exit_code=40
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
281 )
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
282
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
283
11288
2123aad24d56 error: add new ParseError for various parsing errors
Matt Mackall <mpm@selenic.com>
parents: 11287
diff changeset
284 class ConfigError(Abort):
22359
e3714b927af5 error: use docstrings, not bare strings, for error classes
Mike Edgar <adgar@google.com>
parents: 21747
diff changeset
285 """Exception raised when parsing config files"""
8144
fca54469480e ui: introduce new config parser
Matt Mackall <mpm@selenic.com>
parents: 7947
diff changeset
286
45909
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45906
diff changeset
287 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
288 # type: (bytes, Optional[bytes], Optional[bytes]) -> None
47300
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
289 super(ConfigError, self).__init__(
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
290 message, hint=hint, detailed_exit_code=30
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
291 )
45909
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45906
diff changeset
292 self.location = location
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45906
diff changeset
293
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45906
diff changeset
294 def format(self):
46899
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
295 # type: () -> bytes
45909
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45906
diff changeset
296 from .i18n import _
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45906
diff changeset
297
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45906
diff changeset
298 if self.location is not None:
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45906
diff changeset
299 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: 45906
diff changeset
300 pycompat.bytestr(self.location),
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45906
diff changeset
301 self.message,
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45906
diff changeset
302 )
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45906
diff changeset
303 else:
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45906
diff changeset
304 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: 45906
diff changeset
305 if self.hint:
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45906
diff changeset
306 message += _(b"(%s)\n") % self.hint
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45906
diff changeset
307 return message
9dc1351d0b5f errors: raise ConfigError on failure to parse config file
Martin von Zweigbergk <martinvonz@google.com>
parents: 45906
diff changeset
308
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
309
26683
634666c48b7d update: introduce a 'UpdateAbort' exception
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26640
diff changeset
310 class UpdateAbort(Abort):
634666c48b7d update: introduce a 'UpdateAbort' exception
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26640
diff changeset
311 """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
312
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
313
28141
13bb8de97f87 destutil: add more precise error classes for destmerge
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 27628
diff changeset
314 class MergeDestAbort(Abort):
13bb8de97f87 destutil: add more precise error classes for destmerge
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 27628
diff changeset
315 """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
316
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
317
28141
13bb8de97f87 destutil: add more precise error classes for destmerge
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 27628
diff changeset
318 class NoMergeDestAbort(MergeDestAbort):
13bb8de97f87 destutil: add more precise error classes for destmerge
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 27628
diff changeset
319 """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
320
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
321
28141
13bb8de97f87 destutil: add more precise error classes for destmerge
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 27628
diff changeset
322 class ManyMergeDestAbort(MergeDestAbort):
30342
318a24b52eeb spelling: fixes of non-dictionary words
Mads Kiilerich <madski@unity3d.com>
parents: 29536
diff changeset
323 """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
324
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
325
26896
5e46123e6c35 error: add structured exception for EOF at prompt
Siddharth Agarwal <sid0@fb.com>
parents: 26693
diff changeset
326 class ResponseExpected(Abort):
5e46123e6c35 error: add structured exception for EOF at prompt
Siddharth Agarwal <sid0@fb.com>
parents: 26693
diff changeset
327 """Raised when an EOF is received for a prompt"""
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
328
26896
5e46123e6c35 error: add structured exception for EOF at prompt
Siddharth Agarwal <sid0@fb.com>
parents: 26693
diff changeset
329 def __init__(self):
5e46123e6c35 error: add structured exception for EOF at prompt
Siddharth Agarwal <sid0@fb.com>
parents: 26693
diff changeset
330 from .i18n import _
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
331
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
332 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
333
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
334
46976
f9482db16cef errors: introduce a class for remote errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 46975
diff changeset
335 class RemoteError(Abort):
f9482db16cef errors: introduce a class for remote errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 46975
diff changeset
336 """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
337
47300
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
338 def __init__(self, message, hint=None):
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
339 super(RemoteError, self).__init__(
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
340 message, hint=hint, detailed_exit_code=100
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
341 )
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
342
46976
f9482db16cef errors: introduce a class for remote errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 46975
diff changeset
343
f9482db16cef errors: introduce a class for remote errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 46975
diff changeset
344 class OutOfBandError(RemoteError):
22359
e3714b927af5 error: use docstrings, not bare strings, for error classes
Mike Edgar <adgar@google.com>
parents: 21747
diff changeset
345 """Exception raised when a remote repo reports failure"""
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
346
46981
abd18d6306f1 errors: remove unnecessary varargs handling from OutOfBandError
Martin von Zweigbergk <martinvonz@google.com>
parents: 46976
diff changeset
347 def __init__(self, message=None, hint=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
45902
7eb221b9af6c errors: make ParseError a subtype of Abort
Martin von Zweigbergk <martinvonz@google.com>
parents: 45900
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
45799
0fc8b066928a errors: name arguments to ParseError constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45798
diff changeset
361 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
362 # type: (bytes, Optional[Union[bytes, int]], Optional[bytes]) -> None
47300
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
363 super(ParseError, self).__init__(
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
364 message, hint=hint, detailed_exit_code=10
33c0c25d0b0f errors: let each Abort subclass define its error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 46981
diff changeset
365 )
45799
0fc8b066928a errors: name arguments to ParseError constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45798
diff changeset
366 self.location = location
0fc8b066928a errors: name arguments to ParseError constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45798
diff changeset
367
45899
98399dd1b96c errors: make formatparse() an instance method on ParseError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45898
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
45899
98399dd1b96c errors: make formatparse() an instance method on ParseError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45898
diff changeset
370 from .i18n import _
98399dd1b96c errors: make formatparse() an instance method on ParseError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45898
diff changeset
371
98399dd1b96c errors: make formatparse() an instance method on ParseError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45898
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: 45898
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: 45898
diff changeset
374 pycompat.bytestr(self.location),
98399dd1b96c errors: make formatparse() an instance method on ParseError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45898
diff changeset
375 self.message,
98399dd1b96c errors: make formatparse() an instance method on ParseError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45898
diff changeset
376 )
98399dd1b96c errors: make formatparse() an instance method on ParseError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45898
diff changeset
377 else:
98399dd1b96c errors: make formatparse() an instance method on ParseError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45898
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: 45898
diff changeset
379 if self.hint:
98399dd1b96c errors: make formatparse() an instance method on ParseError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45898
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: 45898
diff changeset
381 return message
98399dd1b96c errors: make formatparse() an instance method on ParseError
Martin von Zweigbergk <martinvonz@google.com>
parents: 45898
diff changeset
382
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
383
34258
61714510220d error: move patch.PatchError so it can easily implement __bytes__ (API)
Yuya Nishihara <yuya@tcha.org>
parents: 32639
diff changeset
384 class PatchError(Exception):
61714510220d error: move patch.PatchError so it can easily implement __bytes__ (API)
Yuya Nishihara <yuya@tcha.org>
parents: 32639
diff changeset
385 __bytes__ = _tobytes
61714510220d error: move patch.PatchError so it can easily implement __bytes__ (API)
Yuya Nishihara <yuya@tcha.org>
parents: 32639
diff changeset
386
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
387
45897
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45892
diff changeset
388 def getsimilar(symbols, value):
46899
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
389 # type: (Iterable[bytes], bytes) -> List[bytes]
45897
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45892
diff changeset
390 sim = lambda x: difflib.SequenceMatcher(None, value, x).ratio()
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45892
diff changeset
391 # 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: 45892
diff changeset
392 # probably be investigated and tweaked.
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45892
diff changeset
393 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: 45892
diff changeset
394
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45892
diff changeset
395
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45892
diff changeset
396 def similarity_hint(similar):
46899
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
397 # type: (List[bytes]) -> Optional[bytes]
45897
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45892
diff changeset
398 from .i18n import _
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45892
diff changeset
399
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45892
diff changeset
400 if len(similar) == 1:
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45892
diff changeset
401 return _(b"did you mean %s?") % similar[0]
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45892
diff changeset
402 elif similar:
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45892
diff changeset
403 ss = b", ".join(sorted(similar))
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45892
diff changeset
404 return _(b"did you mean one of %s?") % ss
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45892
diff changeset
405 else:
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45892
diff changeset
406 return None
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45892
diff changeset
407
8cc9e7f762d6 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com>
parents: 45892
diff changeset
408
24217
d2b81256db1e error: add a new UnknownIdentifier error type
Augie Fackler <augie@google.com>
parents: 24190
diff changeset
409 class UnknownIdentifier(ParseError):
d2b81256db1e error: add a new UnknownIdentifier error type
Augie Fackler <augie@google.com>
parents: 24190
diff changeset
410 """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
411
d2b81256db1e error: add a new UnknownIdentifier error type
Augie Fackler <augie@google.com>
parents: 24190
diff changeset
412 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
413 # type: (bytes, Iterable[bytes]) -> None
25945
147bd9e238a1 error: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25484
diff changeset
414 from .i18n import _
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
415
45898
1817b66897ad errors: create "similarity hint" for UnknownIdentifier eagerly in constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45897
diff changeset
416 similar = getsimilar(symbols, function)
1817b66897ad errors: create "similarity hint" for UnknownIdentifier eagerly in constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45897
diff changeset
417 hint = similarity_hint(similar)
1817b66897ad errors: create "similarity hint" for UnknownIdentifier eagerly in constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45897
diff changeset
418
1817b66897ad errors: create "similarity hint" for UnknownIdentifier eagerly in constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45897
diff changeset
419 ParseError.__init__(
1817b66897ad errors: create "similarity hint" for UnknownIdentifier eagerly in constructor
Martin von Zweigbergk <martinvonz@google.com>
parents: 45897
diff changeset
420 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: 45897
diff changeset
421 )
24217
d2b81256db1e error: add a new UnknownIdentifier error type
Augie Fackler <augie@google.com>
parents: 24190
diff changeset
422
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
423
29509
945b4c14c570 error: make HintException a mix-in class not derived from BaseException (API)
Yuya Nishihara <yuya@tcha.org>
parents: 28141
diff changeset
424 class RepoError(Hint, Exception):
32639
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32622
diff changeset
425 __bytes__ = _tobytes
7637
1d54e2f6c0b7 error: move repo errors
Matt Mackall <mpm@selenic.com>
parents: 7636
diff changeset
426
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
427
9423
1444a42f6052 Make distinct lookup error for localrepo.lookup
Matt Mackall <mpm@selenic.com>
parents: 8227
diff changeset
428 class RepoLookupError(RepoError):
1444a42f6052 Make distinct lookup error for localrepo.lookup
Matt Mackall <mpm@selenic.com>
parents: 8227
diff changeset
429 pass
1444a42f6052 Make distinct lookup error for localrepo.lookup
Matt Mackall <mpm@selenic.com>
parents: 8227
diff changeset
430
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
431
23016
2bd51e61c65e repoview: add a FilteredRepoLookupError
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 23015
diff changeset
432 class FilteredRepoLookupError(RepoLookupError):
2bd51e61c65e repoview: add a FilteredRepoLookupError
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 23015
diff changeset
433 pass
2bd51e61c65e repoview: add a FilteredRepoLookupError
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 23015
diff changeset
434
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
435
7637
1d54e2f6c0b7 error: move repo errors
Matt Mackall <mpm@selenic.com>
parents: 7636
diff changeset
436 class CapabilityError(RepoError):
1d54e2f6c0b7 error: move repo errors
Matt Mackall <mpm@selenic.com>
parents: 7636
diff changeset
437 pass
7640
7197812e8d44 error: move lock errors
Matt Mackall <mpm@selenic.com>
parents: 7637
diff changeset
438
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
439
13447
931a72e00efa introduce new RequirementError (issue2649)
Adrian Buehlmann <adrian@cadifra.com>
parents: 11574
diff changeset
440 class RequirementError(RepoError):
931a72e00efa introduce new RequirementError (issue2649)
Adrian Buehlmann <adrian@cadifra.com>
parents: 11574
diff changeset
441 """Exception raised if .hg/requires has an unknown entry."""
931a72e00efa introduce new RequirementError (issue2649)
Adrian Buehlmann <adrian@cadifra.com>
parents: 11574
diff changeset
442
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
443
31959
b445a3f00528 stdio: add machinery to identify failed stdout/stderr writes
Bryan O'Sullivan <bryano@fb.com>
parents: 31510
diff changeset
444 class StdioError(IOError):
b445a3f00528 stdio: add machinery to identify failed stdout/stderr writes
Bryan O'Sullivan <bryano@fb.com>
parents: 31510
diff changeset
445 """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: 31510
diff changeset
446
b445a3f00528 stdio: add machinery to identify failed stdout/stderr writes
Bryan O'Sullivan <bryano@fb.com>
parents: 31510
diff changeset
447 def __init__(self, err):
46899
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
448 # type: (IOError) -> None
31959
b445a3f00528 stdio: add machinery to identify failed stdout/stderr writes
Bryan O'Sullivan <bryano@fb.com>
parents: 31510
diff changeset
449 IOError.__init__(self, err.errno, err.strerror)
b445a3f00528 stdio: add machinery to identify failed stdout/stderr writes
Bryan O'Sullivan <bryano@fb.com>
parents: 31510
diff changeset
450
32639
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32622
diff changeset
451 # 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: 32622
diff changeset
452
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
453
26985
039a53c87370 error: add a structured exception for unsupported merge records
Siddharth Agarwal <sid0@fb.com>
parents: 26896
diff changeset
454 class UnsupportedMergeRecords(Abort):
039a53c87370 error: add a structured exception for unsupported merge records
Siddharth Agarwal <sid0@fb.com>
parents: 26896
diff changeset
455 def __init__(self, recordtypes):
46899
8b6e36e4b553 typing: add type hints to mercurial/error.py
Matt Harbison <matt_harbison@yahoo.com>
parents: 46819
diff changeset
456 # type: (Iterable[bytes]) -> None
26985
039a53c87370 error: add a structured exception for unsupported merge records
Siddharth Agarwal <sid0@fb.com>
parents: 26896
diff changeset
457 from .i18n import _
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
458
26985
039a53c87370 error: add a structured exception for unsupported merge records
Siddharth Agarwal <sid0@fb.com>
parents: 26896
diff changeset
459 self.recordtypes = sorted(recordtypes)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
460 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
461 Abort.__init__(
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
462 self,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
463 _(b'unsupported merge state records: %s') % s,
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
464 hint=_(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
465 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
466 b'more information'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
467 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
468 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
469
26985
039a53c87370 error: add a structured exception for unsupported merge records
Siddharth Agarwal <sid0@fb.com>
parents: 26896
diff changeset
470
32622
19df975eb555 obsolete: raise richer exception on unknown version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 32440
diff changeset
471 class UnknownVersion(Abort):
45957
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45930
diff changeset
472 """generic exception for aborting from an encounter with an unknown version"""
32622
19df975eb555 obsolete: raise richer exception on unknown version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 32440
diff changeset
473
19df975eb555 obsolete: raise richer exception on unknown version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 32440
diff changeset
474 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
475 # type: (bytes, Optional[bytes], Optional[bytes]) -> None
32622
19df975eb555 obsolete: raise richer exception on unknown version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 32440
diff changeset
476 self.version = version
19df975eb555 obsolete: raise richer exception on unknown version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 32440
diff changeset
477 super(UnknownVersion, self).__init__(msg, hint=hint)
19df975eb555 obsolete: raise richer exception on unknown version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 32440
diff changeset
478
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
479
7640
7197812e8d44 error: move lock errors
Matt Mackall <mpm@selenic.com>
parents: 7637
diff changeset
480 class LockError(IOError):
7197812e8d44 error: move lock errors
Matt Mackall <mpm@selenic.com>
parents: 7637
diff changeset
481 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
482 # 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
483 # _type: (int, str, str, bytes) -> None
7640
7197812e8d44 error: move lock errors
Matt Mackall <mpm@selenic.com>
parents: 7637
diff changeset
484 IOError.__init__(self, errno, strerror, filename)
7197812e8d44 error: move lock errors
Matt Mackall <mpm@selenic.com>
parents: 7637
diff changeset
485 self.desc = desc
7197812e8d44 error: move lock errors
Matt Mackall <mpm@selenic.com>
parents: 7637
diff changeset
486
32639
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32622
diff changeset
487 # 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: 32622
diff changeset
488
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
489
7640
7197812e8d44 error: move lock errors
Matt Mackall <mpm@selenic.com>
parents: 7637
diff changeset
490 class LockHeld(LockError):
7197812e8d44 error: move lock errors
Matt Mackall <mpm@selenic.com>
parents: 7637
diff changeset
491 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
492 LockError.__init__(self, errno, b'Lock held', filename, desc)
7640
7197812e8d44 error: move lock errors
Matt Mackall <mpm@selenic.com>
parents: 7637
diff changeset
493 self.locker = locker
7197812e8d44 error: move lock errors
Matt Mackall <mpm@selenic.com>
parents: 7637
diff changeset
494
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
495
7640
7197812e8d44 error: move lock errors
Matt Mackall <mpm@selenic.com>
parents: 7637
diff changeset
496 class LockUnavailable(LockError):
7197812e8d44 error: move lock errors
Matt Mackall <mpm@selenic.com>
parents: 7637
diff changeset
497 pass
7641
d2f753830f80 error: move UnexpectedOutput (now ResponseError)
Matt Mackall <mpm@selenic.com>
parents: 7640
diff changeset
498
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
499
26355
f51713b8c6fa error: add an exception to indicate lock inheritance API contract violations
Siddharth Agarwal <sid0@fb.com>
parents: 25945
diff changeset
500 # 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
501 class LockInheritanceContractViolation(RuntimeError):
32639
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32622
diff changeset
502 __bytes__ = _tobytes
26355
f51713b8c6fa error: add an exception to indicate lock inheritance API contract violations
Siddharth Agarwal <sid0@fb.com>
parents: 25945
diff changeset
503
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
504
7641
d2f753830f80 error: move UnexpectedOutput (now ResponseError)
Matt Mackall <mpm@selenic.com>
parents: 7640
diff changeset
505 class ResponseError(Exception):
d2f753830f80 error: move UnexpectedOutput (now ResponseError)
Matt Mackall <mpm@selenic.com>
parents: 7640
diff changeset
506 """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
507
32639
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32622
diff changeset
508 __bytes__ = _tobytes
7641
d2f753830f80 error: move UnexpectedOutput (now ResponseError)
Matt Mackall <mpm@selenic.com>
parents: 7640
diff changeset
509
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
510
7644
182b7114d35a error: move SignalInterrupt
Matt Mackall <mpm@selenic.com>
parents: 7643
diff changeset
511 # derived from KeyboardInterrupt to simplify some breakout code
182b7114d35a error: move SignalInterrupt
Matt Mackall <mpm@selenic.com>
parents: 7643
diff changeset
512 class SignalInterrupt(KeyboardInterrupt):
182b7114d35a error: move SignalInterrupt
Matt Mackall <mpm@selenic.com>
parents: 7643
diff changeset
513 """Exception raised on SIGTERM and SIGHUP."""
7646
e62a456b8dc5 error: move SignatureError
Matt Mackall <mpm@selenic.com>
parents: 7644
diff changeset
514
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
515
7646
e62a456b8dc5 error: move SignatureError
Matt Mackall <mpm@selenic.com>
parents: 7644
diff changeset
516 class SignatureError(Exception):
32639
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32622
diff changeset
517 __bytes__ = _tobytes
21184
28d76afa1568 bundle2: fix raising errors during heads checking
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 18931
diff changeset
518
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
519
21184
28d76afa1568 bundle2: fix raising errors during heads checking
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 18931
diff changeset
520 class PushRaced(RuntimeError):
28d76afa1568 bundle2: fix raising errors during heads checking
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 18931
diff changeset
521 """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
522
32639
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32622
diff changeset
523 __bytes__ = _tobytes
21184
28d76afa1568 bundle2: fix raising errors during heads checking
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 18931
diff changeset
524
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
525
32379
9c023179e8d0 error: add hint to ProgrammingError
Yuya Nishihara <yuya@tcha.org>
parents: 32023
diff changeset
526 class ProgrammingError(Hint, RuntimeError):
30590
0f865311ae3f error: make it clear that ProgrammingError is for mercurial developers
Jun Wu <quark@fb.com>
parents: 30578
diff changeset
527 """Raised if a mercurial (core or extension) developer made a mistake"""
39595
921aeb9ac508 error: ensure ProgrammingError message is always a str
Augie Fackler <augie@google.com>
parents: 39575
diff changeset
528
921aeb9ac508 error: ensure ProgrammingError message is always a str
Augie Fackler <augie@google.com>
parents: 39575
diff changeset
529 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
530 # type: (AnyStr, Any, Any) -> None
39612
409c42d6a570 py3: use sysstr() to convert ProgrammingError bytes with no unicode error risk
Yuya Nishihara <yuya@tcha.org>
parents: 39595
diff changeset
531 # 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: 39595
diff changeset
532 # 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: 39595
diff changeset
533 # stack traces.
409c42d6a570 py3: use sysstr() to convert ProgrammingError bytes with no unicode error risk
Yuya Nishihara <yuya@tcha.org>
parents: 39595
diff changeset
534 msg = pycompat.sysstr(msg)
39595
921aeb9ac508 error: ensure ProgrammingError message is always a str
Augie Fackler <augie@google.com>
parents: 39575
diff changeset
535 super(ProgrammingError, self).__init__(msg, *args, **kwargs)
921aeb9ac508 error: ensure ProgrammingError message is always a str
Augie Fackler <augie@google.com>
parents: 39575
diff changeset
536
32639
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32622
diff changeset
537 __bytes__ = _tobytes
30578
b0ebab239f90 error: add ProgrammingError
Jun Wu <quark@fb.com>
parents: 30342
diff changeset
538
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
539
32440
c8e10565a113 error: add a new exception named WdirUnsupported
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32379
diff changeset
540 class WdirUnsupported(Exception):
c8e10565a113 error: add a new exception named WdirUnsupported
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32379
diff changeset
541 """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
542
32639
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32622
diff changeset
543 __bytes__ = _tobytes
32440
c8e10565a113 error: add a new exception named WdirUnsupported
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32379
diff changeset
544
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
545
21618
7568f5c1c801 bundle2: move exception classes into the error module
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21184
diff changeset
546 # bundle2 related errors
7568f5c1c801 bundle2: move exception classes into the error module
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21184
diff changeset
547 class BundleValueError(ValueError):
21621
b6eb56a9335d bundle2: introduce a ``params`` attribute to BundleValueError
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21620
diff changeset
548 """error raised when bundle2 cannot be processed"""
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
549
32639
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32622
diff changeset
550 __bytes__ = _tobytes
21620
6eaa71b2a3cc bundle2: introduce a parttype attribute to BundleValueError
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21618
diff changeset
551
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
552
26393
cff70549a959 bundle2: rename error exception class for unsupported feature
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26355
diff changeset
553 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
554 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
555 self.parttype = parttype
21621
b6eb56a9335d bundle2: introduce a ``params`` attribute to BundleValueError
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21620
diff changeset
556 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
557 self.values = values
21627
3e8bcc90f07c bundle2: support None parttype in BundleValueError
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21621
diff changeset
558 if self.parttype is None:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
559 msg = b'Stream Parameter'
21627
3e8bcc90f07c bundle2: support None parttype in BundleValueError
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21621
diff changeset
560 else:
3e8bcc90f07c bundle2: support None parttype in BundleValueError
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21621
diff changeset
561 msg = parttype
26394
e75da738add5 bundle2: allow to specify unsupported value on error
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26393
diff changeset
562 entries = self.params
e75da738add5 bundle2: allow to specify unsupported value on error
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26393
diff changeset
563 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
564 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
565 entries = []
e75da738add5 bundle2: allow to specify unsupported value on error
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26393
diff changeset
566 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
567 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
568 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
569 entries.append(val)
e75da738add5 bundle2: allow to specify unsupported value on error
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26393
diff changeset
570 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
571 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
572 if entries:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
573 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
574 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
575
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
576
21618
7568f5c1c801 bundle2: move exception classes into the error module
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21184
diff changeset
577 class ReadOnlyPartError(RuntimeError):
7568f5c1c801 bundle2: move exception classes into the error module
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21184
diff changeset
578 """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
579
32639
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32622
diff changeset
580 __bytes__ = _tobytes
21618
7568f5c1c801 bundle2: move exception classes into the error module
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21184
diff changeset
581
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
582
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
583 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
584 """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
585
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
586 def __init__(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
587 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
588 ):
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
589 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
590 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
591 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
592 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
593 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
594 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
595 # 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
596 Abort.__init__(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
597 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
598 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
599
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
600
39793
b63dee7bd0d9 global: replace most uses of RevlogError with StorageError (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39792
diff changeset
601 class CensoredNodeError(StorageError):
24190
903c7e8c97ad changegroup: emit full-replacement deltas if either revision is censored
Mike Edgar <adgar@google.com>
parents: 24137
diff changeset
602 """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
603
24190
903c7e8c97ad changegroup: emit full-replacement deltas if either revision is censored
Mike Edgar <adgar@google.com>
parents: 24137
diff changeset
604 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
605 """
903c7e8c97ad changegroup: emit full-replacement deltas if either revision is censored
Mike Edgar <adgar@google.com>
parents: 24137
diff changeset
606
903c7e8c97ad changegroup: emit full-replacement deltas if either revision is censored
Mike Edgar <adgar@google.com>
parents: 24137
diff changeset
607 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
608 # type: (bytes, bytes, bytes) -> None
25945
147bd9e238a1 error: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25484
diff changeset
609 from .node import short
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
610
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
611 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
612 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
613
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
614
39793
b63dee7bd0d9 global: replace most uses of RevlogError with StorageError (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39792
diff changeset
615 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
616 """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
617
a450e0a2ba0a revlog: in addgroup, reject ill-formed deltas based on censored nodes
Mike Edgar <adgar@google.com>
parents: 24040
diff changeset
618 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
619 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
620 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
621 """
26640
b13fdcc4e700 exchange: refactor bundle specification parsing
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26438
diff changeset
622
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
623
26640
b13fdcc4e700 exchange: refactor bundle specification parsing
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26438
diff changeset
624 class InvalidBundleSpecification(Exception):
b13fdcc4e700 exchange: refactor bundle specification parsing
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26438
diff changeset
625 """error raised when a bundle specification is invalid.
b13fdcc4e700 exchange: refactor bundle specification parsing
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26438
diff changeset
626
b13fdcc4e700 exchange: refactor bundle specification parsing
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26438
diff changeset
627 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
628 """
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
629
32639
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32622
diff changeset
630 __bytes__ = _tobytes
26640
b13fdcc4e700 exchange: refactor bundle specification parsing
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26438
diff changeset
631
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
632
26640
b13fdcc4e700 exchange: refactor bundle specification parsing
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26438
diff changeset
633 class UnsupportedBundleSpecification(Exception):
b13fdcc4e700 exchange: refactor bundle specification parsing
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26438
diff changeset
634 """error raised when a bundle specification is not supported."""
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
635
32639
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32622
diff changeset
636 __bytes__ = _tobytes
29536
b17a6e3cd2ac shelve: make unshelve be able to abort in any case
Kostia Balytskyi <ikostia@fb.com>
parents: 29510
diff changeset
637
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
638
29536
b17a6e3cd2ac shelve: make unshelve be able to abort in any case
Kostia Balytskyi <ikostia@fb.com>
parents: 29510
diff changeset
639 class CorruptedState(Exception):
b17a6e3cd2ac shelve: make unshelve be able to abort in any case
Kostia Balytskyi <ikostia@fb.com>
parents: 29510
diff changeset
640 """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
641
32639
6df193b5c437 py3: implement __bytes__() on most of our exception classes
Yuya Nishihara <yuya@tcha.org>
parents: 32622
diff changeset
642 __bytes__ = _tobytes
32002
bf855efe5664 httppeer: wrap HTTPResponse.read() globally
Gregory Szorc <gregory.szorc@gmail.com>
parents: 31959
diff changeset
643
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
644
32023
a29580905771 error: rename RichIOError to PeerTransportError
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32002
diff changeset
645 class PeerTransportError(Abort):
a29580905771 error: rename RichIOError to PeerTransportError
Gregory Szorc <gregory.szorc@gmail.com>
parents: 32002
diff changeset
646 """Transport-level I/O error when communicating with a peer repo."""
35128
795bfa2a9103 error: add InMemoryMergeConflictsError
Phil Cohen <phillco@fb.com>
parents: 34258
diff changeset
647
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
648
35128
795bfa2a9103 error: add InMemoryMergeConflictsError
Phil Cohen <phillco@fb.com>
parents: 34258
diff changeset
649 class InMemoryMergeConflictsError(Exception):
795bfa2a9103 error: add InMemoryMergeConflictsError
Phil Cohen <phillco@fb.com>
parents: 34258
diff changeset
650 """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
651
35128
795bfa2a9103 error: add InMemoryMergeConflictsError
Phil Cohen <phillco@fb.com>
parents: 34258
diff changeset
652 __bytes__ = _tobytes
39575
07b58266bce3 wireprotov2: implement commands as a generator of objects
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38880
diff changeset
653
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
654
39575
07b58266bce3 wireprotov2: implement commands as a generator of objects
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38880
diff changeset
655 class WireprotoCommandError(Exception):
07b58266bce3 wireprotov2: implement commands as a generator of objects
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38880
diff changeset
656 """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: 38880
diff changeset
657
07b58266bce3 wireprotov2: implement commands as a generator of objects
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38880
diff changeset
658 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: 38880
diff changeset
659
07b58266bce3 wireprotov2: implement commands as a generator of objects
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38880
diff changeset
660 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: 38880
diff changeset
661 """
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43034
diff changeset
662
39575
07b58266bce3 wireprotov2: implement commands as a generator of objects
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38880
diff changeset
663 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
664 # type: (bytes, Optional[Sequence[bytes]]) -> None
39575
07b58266bce3 wireprotov2: implement commands as a generator of objects
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38880
diff changeset
665 self.message = message
07b58266bce3 wireprotov2: implement commands as a generator of objects
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38880
diff changeset
666 self.messageargs = args