/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
5557.1.7 by John Arbash Meinel
Merge in the bzr.dev 5582
1
# Copyright (C) 2005-2011 Canonical Ltd
1830.3.5 by John Arbash Meinel
make_entry refuses to create non-normalized entries.
2
#
1 by mbp at sourcefrog
import from baz patch-364
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
1830.3.5 by John Arbash Meinel
make_entry refuses to create non-normalized entries.
7
#
1 by mbp at sourcefrog
import from baz patch-364
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
1830.3.5 by John Arbash Meinel
make_entry refuses to create non-normalized entries.
12
#
1 by mbp at sourcefrog
import from baz patch-364
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
4183.7.1 by Sabin Iacob
update FSF mailing address
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
1 by mbp at sourcefrog
import from baz patch-364
16
1185.16.61 by mbp at sourcefrog
- start introducing hct error classes
17
"""Exceptions for bzr, and reporting of them.
18
"""
19
1185.16.62 by mbp at sourcefrog
- convert NotBranchError to new exception base
20
# TODO: is there any value in providing the .args field used by standard
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
21
# python exceptions?   A list of values with no names seems less useful
1185.16.62 by mbp at sourcefrog
- convert NotBranchError to new exception base
22
# to me.
23
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
24
# TODO: Perhaps convert the exception to a string at the moment it's
1185.16.63 by Martin Pool
- more error conversion
25
# constructed to make sure it will succeed.  But that says nothing about
26
# exceptions that are never raised.
27
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
28
# TODO: selftest assertRaises should probably also check that every error
29
# raised can be formatted as a string successfully, and without giving
30
# 'unprintable'.
1662.1.12 by Martin Pool
Translate unknown sftp errors to PathError, no NoSuchFile
31
1185.16.61 by mbp at sourcefrog
- start introducing hct error classes
32
2713.2.1 by Martin Pool
Return exitcode 4 if an internal error occurs
33
# return codes from the bzr program
2830.2.9 by Martin Pool
Add EXIT_OK=0
34
EXIT_OK = 0
2713.2.1 by Martin Pool
Return exitcode 4 if an internal error occurs
35
EXIT_ERROR = 3
36
EXIT_INTERNAL_ERROR = 4
37
38
1 by mbp at sourcefrog
import from baz patch-364
39
class BzrError(StandardError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
40
    """
41
    Base class for errors raised by bzrlib.
42
2535.1.1 by Adeodato Simó
Fix BzrError docstring: internal_error defaults to False, not to True.
43
    :cvar internal_error: if True this was probably caused by a bzr bug and
5891.1.2 by Andrew Bennetts
Fix a bunch of docstring formatting nits, making pydoctor a bit happier.
44
        should be displayed with a traceback; if False (or absent) this was
45
        probably a user or environment error and they don't need the gory
46
        details.  (That can be overridden by -Derror on the command line.)
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
47
2067.3.2 by Martin Pool
Error cleanup review comments:
48
    :cvar _fmt: Format string to display the error; this is expanded
5891.1.2 by Andrew Bennetts
Fix a bunch of docstring formatting nits, making pydoctor a bit happier.
49
        by the instance's dict.
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
50
    """
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
51
2067.3.2 by Martin Pool
Error cleanup review comments:
52
    internal_error = False
1685.2.1 by Brian M. Carlson
Add a workaround for usage of the args attribute in exceptions.
53
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
54
    def __init__(self, msg=None, **kwds):
55
        """Construct a new BzrError.
56
57
        There are two alternative forms for constructing these objects.
58
        Either a preformatted string may be passed, or a set of named
59
        arguments can be given.  The first is for generic "user" errors which
60
        are not intended to be caught and so do not need a specific subclass.
61
        The second case is for use with subclasses that provide a _fmt format
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
62
        string to print the arguments.
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
63
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
64
        Keyword arguments are taken as parameters to the error, which can
65
        be inserted into the format string template.  It's recommended
66
        that subclasses override the __init__ method to require specific
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
67
        parameters.
68
2067.3.2 by Martin Pool
Error cleanup review comments:
69
        :param msg: If given, this is the literal complete text for the error,
3734.2.7 by Vincent Ladeuil
Fix python-2.6 BaseException 'message' attribute deprecation.
70
           not subject to expansion. 'msg' is used instead of 'message' because
71
           python evolved and, in 2.6, forbids the use of 'message'.
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
72
        """
73
        StandardError.__init__(self)
74
        if msg is not None:
2067.3.4 by Martin Pool
Error deprecations will come in for 0.13
75
            # I was going to deprecate this, but it actually turns out to be
76
            # quite handy - mbp 20061103.
2067.3.2 by Martin Pool
Error cleanup review comments:
77
            self._preformatted_string = msg
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
78
        else:
2067.3.2 by Martin Pool
Error cleanup review comments:
79
            self._preformatted_string = None
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
80
            for key, value in kwds.items():
81
                setattr(self, key, value)
82
3577.1.1 by Andrew Bennetts
Cherry-pick TipChangeRejected changes from pre-branch-tip-changed-hook loom.
83
    def _format(self):
2067.3.2 by Martin Pool
Error cleanup review comments:
84
        s = getattr(self, '_preformatted_string', None)
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
85
        if s is not None:
3577.1.3 by Andrew Bennetts
Fix test_trace failure: BzrError._format shouldn't call str() itself, it should leave that to __str__.
86
            # contains a preformatted message
87
            return s
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
88
        try:
2067.3.2 by Martin Pool
Error cleanup review comments:
89
            fmt = self._get_format_string()
90
            if fmt:
2854.1.2 by Martin Pool
Review feedback on BzrError.message handling
91
                d = dict(self.__dict__)
2854.1.1 by Martin Pool
Fix "unprintable error" message for BzrCheckError and others
92
                s = fmt % d
2067.3.2 by Martin Pool
Error cleanup review comments:
93
                # __str__() should always return a 'str' object
94
                # never a 'unicode' object.
95
                return s
6318.2.3 by Martin Packman
Unify unprintable exception logic and catch all non-base exceptions
96
        except Exception, e:
97
            pass # just bind to 'e' for formatting below
98
        else:
99
            e = None
100
        return 'Unprintable exception %s: dict=%r, fmt=%r, error=%r' \
101
            % (self.__class__.__name__,
102
               self.__dict__,
103
               getattr(self, '_fmt', None),
104
               e)
1193 by Martin Pool
- better string formatting of BzrErrors with explanation
105
3577.1.1 by Andrew Bennetts
Cherry-pick TipChangeRejected changes from pre-branch-tip-changed-hook loom.
106
    def __unicode__(self):
107
        u = self._format()
108
        if isinstance(u, str):
109
            # Try decoding the str using the default encoding.
110
            u = unicode(u)
3577.1.3 by Andrew Bennetts
Fix test_trace failure: BzrError._format shouldn't call str() itself, it should leave that to __str__.
111
        elif not isinstance(u, unicode):
112
            # Try to make a unicode object from it, because __unicode__ must
113
            # return a unicode object.
114
            u = unicode(u)
3577.1.1 by Andrew Bennetts
Cherry-pick TipChangeRejected changes from pre-branch-tip-changed-hook loom.
115
        return u
3734.2.7 by Vincent Ladeuil
Fix python-2.6 BaseException 'message' attribute deprecation.
116
3577.1.1 by Andrew Bennetts
Cherry-pick TipChangeRejected changes from pre-branch-tip-changed-hook loom.
117
    def __str__(self):
118
        s = self._format()
119
        if isinstance(s, unicode):
3577.1.3 by Andrew Bennetts
Fix test_trace failure: BzrError._format shouldn't call str() itself, it should leave that to __str__.
120
            s = s.encode('utf8')
121
        else:
122
            # __str__ must return a str.
123
            s = str(s)
3577.1.1 by Andrew Bennetts
Cherry-pick TipChangeRejected changes from pre-branch-tip-changed-hook loom.
124
        return s
125
3786.4.3 by Andrew Bennetts
Add __repr__ to BzrError to make some test failure output clearer.
126
    def __repr__(self):
127
        return '%s(%s)' % (self.__class__.__name__, str(self))
128
2067.3.2 by Martin Pool
Error cleanup review comments:
129
    def _get_format_string(self):
130
        """Return format string for this exception or None"""
131
        fmt = getattr(self, '_fmt', None)
132
        if fmt is not None:
6318.2.5 by Martin Packman
Remove separate i18n.install() call and module level i18n imports
133
            from bzrlib.i18n import gettext
6318.2.2 by Martin Packman
Remove unneeded mutter over unicode _fmt attributes
134
            return gettext(unicode(fmt)) # _fmt strings should be ascii
2067.3.2 by Martin Pool
Error cleanup review comments:
135
3533.3.3 by Andrew Bennetts
Add unit tests for bzrlib.remote._translate_error.
136
    def __eq__(self, other):
4088.3.1 by Benjamin Peterson
compare types with 'is' not ==
137
        if self.__class__ is not other.__class__:
3533.3.3 by Andrew Bennetts
Add unit tests for bzrlib.remote._translate_error.
138
            return NotImplemented
139
        return self.__dict__ == other.__dict__
140
1185.1.14 by Robert Collins
remove more duplicate merged hunks. Bad MERGE3, BAD.
141
2871.1.1 by Robert Collins
* New class ``bzrlib.errors.InternalBzrError`` which is just a convenient
142
class InternalBzrError(BzrError):
143
    """Base class for errors that are internal in nature.
144
145
    This is a convenience class for errors that are internal. The
146
    internal_error attribute can still be altered in subclasses, if needed.
147
    Using this class is simply an easy way to get internal errors.
148
    """
149
150
    internal_error = True
151
152
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
153
class AlreadyBuilding(BzrError):
2929.3.5 by Vincent Ladeuil
New files, same warnings, same fixes.
154
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
155
    _fmt = "The tree builder is already building a tree."
156
157
3221.11.2 by Robert Collins
Create basic stackable branch facility.
158
class BranchError(BzrError):
159
    """Base class for concrete 'errors about a branch'."""
160
161
    def __init__(self, branch):
162
        BzrError.__init__(self, branch=branch)
163
164
2871.1.1 by Robert Collins
* New class ``bzrlib.errors.InternalBzrError`` which is just a convenient
165
class BzrCheckError(InternalBzrError):
2929.3.5 by Vincent Ladeuil
New files, same warnings, same fixes.
166
167
    _fmt = "Internal check failed: %(msg)s"
168
169
    def __init__(self, msg):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
170
        BzrError.__init__(self)
2929.3.5 by Vincent Ladeuil
New files, same warnings, same fixes.
171
        self.msg = msg
1185.16.63 by Martin Pool
- more error conversion
172
173
3640.2.5 by John Arbash Meinel
Change from using AssertionError to using DirstateCorrupt in a few places
174
class DirstateCorrupt(BzrError):
175
176
    _fmt = "The dirstate file (%(state)s) appears to be corrupt: %(msg)s"
177
178
    def __init__(self, state, msg):
179
        BzrError.__init__(self)
180
        self.state = state
181
        self.msg = msg
182
183
2871.1.1 by Robert Collins
* New class ``bzrlib.errors.InternalBzrError`` which is just a convenient
184
class DisabledMethod(InternalBzrError):
2018.9.1 by Andrew Bennetts
Merge from bzr.dev.
185
186
    _fmt = "The smart server method '%(class_name)s' is disabled."
187
2018.5.24 by Andrew Bennetts
Setting NO_SMART_VFS in environment will disable VFS methods in the smart server. (Robert Collins, John Arbash Meinel, Andrew Bennetts)
188
    def __init__(self, class_name):
2018.9.1 by Andrew Bennetts
Merge from bzr.dev.
189
        BzrError.__init__(self)
2018.5.24 by Andrew Bennetts
Setting NO_SMART_VFS in environment will disable VFS methods in the smart server. (Robert Collins, John Arbash Meinel, Andrew Bennetts)
190
        self.class_name = class_name
191
192
2550.2.3 by Robert Collins
Add require_api API.
193
class IncompatibleAPI(BzrError):
194
195
    _fmt = 'The API for "%(api)s" is not compatible with "%(wanted)s". '\
196
        'It supports versions "%(minimum)s" to "%(current)s".'
197
198
    def __init__(self, api, wanted, minimum, current):
199
        self.api = api
200
        self.wanted = wanted
201
        self.minimum = minimum
202
        self.current = current
203
204
2634.1.1 by Robert Collins
(robertc) Reinstate the accidentally backed out external_url patch.
205
class InProcessTransport(BzrError):
206
207
    _fmt = "The transport '%(transport)s' is only accessible within this " \
208
        "process."
209
210
    def __init__(self, transport):
211
        self.transport = transport
212
213
2871.1.1 by Robert Collins
* New class ``bzrlib.errors.InternalBzrError`` which is just a convenient
214
class InvalidEntryName(InternalBzrError):
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
215
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
216
    _fmt = "Invalid entry name: %(name)s"
1740.5.6 by Martin Pool
Clean up many exception classes.
217
1185.16.63 by Martin Pool
- more error conversion
218
    def __init__(self, name):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
219
        BzrError.__init__(self)
1185.16.63 by Martin Pool
- more error conversion
220
        self.name = name
221
222
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
223
class InvalidRevisionNumber(BzrError):
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
224
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
225
    _fmt = "Invalid revision number %(revno)s"
226
1185.16.63 by Martin Pool
- more error conversion
227
    def __init__(self, revno):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
228
        BzrError.__init__(self)
1185.16.63 by Martin Pool
- more error conversion
229
        self.revno = revno
230
231
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
232
class InvalidRevisionId(BzrError):
233
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
234
    _fmt = "Invalid revision-id {%(revision_id)s} in %(branch)s"
1908.5.9 by Robert Collins
Add a guard against setting the tree last-revision value to a ghost in the new tree parent management api.
235
1185.16.103 by mbp at sourcefrog
Fix up all calls to InvalidRevisionId() to specify parameters.
236
    def __init__(self, revision_id, branch):
1668.5.1 by Olaf Conradi
Fix bug in knits when raising InvalidRevisionId without the required
237
        # branch can be any string or object with __str__ defined
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
238
        BzrError.__init__(self)
1185.12.90 by Aaron Bentley
Fixed InvalidRevisionID handling in Branch.get_revision_xml
239
        self.revision_id = revision_id
1185.16.103 by mbp at sourcefrog
Fix up all calls to InvalidRevisionId() to specify parameters.
240
        self.branch = branch
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
241
3006.2.1 by Alexander Belchenko
workaround for bug #81689: give a proper error message instead of traceback when symlink cannot be created (e.g. on Windows)
242
2229.2.1 by Aaron Bentley
Reject reserved ids in versiondfile, tree, branch and repository
243
class ReservedId(BzrError):
2229.2.3 by Aaron Bentley
change reserved_id to is_reserved_id, add check_not_reserved for DRY
244
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
245
    _fmt = "Reserved revision-id {%(revision_id)s}"
2229.2.3 by Aaron Bentley
change reserved_id to is_reserved_id, add check_not_reserved for DRY
246
2229.2.1 by Aaron Bentley
Reject reserved ids in versiondfile, tree, branch and repository
247
    def __init__(self, revision_id):
248
        self.revision_id = revision_id
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
249
2432.1.4 by Robert Collins
Add an explicit error for missing help topics.
250
2871.1.2 by Robert Collins
* ``CommitBuilder.record_entry_contents`` now requires the root entry of a
251
class RootMissing(InternalBzrError):
252
253
    _fmt = ("The root entry of a tree must be the first entry supplied to "
5883.1.3 by Jelmer Vernooij
s/record_entry_contents/commit builder/.
254
        "the commit builder.")
2871.1.2 by Robert Collins
* ``CommitBuilder.record_entry_contents`` now requires the root entry of a
255
256
3200.2.1 by Robert Collins
* The ``register-branch`` command will now use the public url of the branch
257
class NoPublicBranch(BzrError):
258
259
    _fmt = 'There is no public branch set for "%(branch_url)s".'
260
261
    def __init__(self, branch):
262
        import bzrlib.urlutils as urlutils
263
        public_location = urlutils.unescape_for_display(branch.base, 'ascii')
264
        BzrError.__init__(self, branch_url=public_location)
265
266
2432.1.4 by Robert Collins
Add an explicit error for missing help topics.
267
class NoHelpTopic(BzrError):
268
269
    _fmt = ("No help could be found for '%(topic)s'. "
270
        "Please use 'bzr help topics' to obtain a list of topics.")
271
272
    def __init__(self, topic):
273
        self.topic = topic
274
275
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
276
class NoSuchId(BzrError):
277
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
278
    _fmt = 'The file id "%(file_id)s" is not present in the tree %(tree)s.'
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
279
1988.2.1 by Robert Collins
WorkingTree has a new api ``unversion`` which allow the unversioning of
280
    def __init__(self, tree, file_id):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
281
        BzrError.__init__(self)
1988.2.1 by Robert Collins
WorkingTree has a new api ``unversion`` which allow the unversioning of
282
        self.file_id = file_id
283
        self.tree = tree
284
285
2708.1.11 by Aaron Bentley
Test and tweak error handling
286
class NoSuchIdInRepository(NoSuchId):
287
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
288
    _fmt = ('The file id "%(file_id)s" is not present in the repository'
289
            ' %(repository)r')
2708.1.11 by Aaron Bentley
Test and tweak error handling
290
291
    def __init__(self, repository, file_id):
292
        BzrError.__init__(self, repository=repository, file_id=file_id)
293
294
3221.11.2 by Robert Collins
Create basic stackable branch facility.
295
class NotStacked(BranchError):
296
297
    _fmt = "The branch '%(branch)s' is not stacked."
298
299
2871.1.1 by Robert Collins
* New class ``bzrlib.errors.InternalBzrError`` which is just a convenient
300
class InventoryModified(InternalBzrError):
2067.3.3 by Martin Pool
merge bzr.dev and reconcile several changes, also some test fixes
301
2221.5.14 by Dmitry Vasiliev
Wrapped long lines
302
    _fmt = ("The current inventory for the tree %(tree)r has been modified,"
303
            " so a clean inventory cannot be read without data loss.")
2067.3.3 by Martin Pool
merge bzr.dev and reconcile several changes, also some test fixes
304
305
    def __init__(self, tree):
306
        self.tree = tree
307
308
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
309
class NoWorkingTree(BzrError):
310
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
311
    _fmt = 'No WorkingTree exists for "%(base)s".'
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
312
1497 by Robert Collins
Move Branch.read_working_inventory to WorkingTree.
313
    def __init__(self, base):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
314
        BzrError.__init__(self)
1497 by Robert Collins
Move Branch.read_working_inventory to WorkingTree.
315
        self.base = base
1506 by Robert Collins
Merge Johns current integration work.
316
317
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
318
class NotBuilding(BzrError):
319
320
    _fmt = "Not currently building a tree."
321
322
323
class NotLocalUrl(BzrError):
324
325
    _fmt = "%(url)s is not a local path."
2067.3.3 by Martin Pool
merge bzr.dev and reconcile several changes, also some test fixes
326
1534.4.42 by Robert Collins
add working tree to the BzrDir facilities.
327
    def __init__(self, url):
328
        self.url = url
329
330
2871.1.1 by Robert Collins
* New class ``bzrlib.errors.InternalBzrError`` which is just a convenient
331
class WorkingTreeAlreadyPopulated(InternalBzrError):
2067.3.3 by Martin Pool
merge bzr.dev and reconcile several changes, also some test fixes
332
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
333
    _fmt = 'Working tree already populated in "%(base)s"'
2067.3.3 by Martin Pool
merge bzr.dev and reconcile several changes, also some test fixes
334
335
    def __init__(self, base):
336
        self.base = base
337
2871.1.1 by Robert Collins
* New class ``bzrlib.errors.InternalBzrError`` which is just a convenient
338
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
339
class BzrCommandError(BzrError):
1740.5.6 by Martin Pool
Clean up many exception classes.
340
    """Error from user command"""
1740.5.8 by Martin Pool
Review cleanups: better error reporting, put back report_exception.
341
342
    # Error from malformed user command; please avoid raising this as a
343
    # generic exception not caused by user input.
1185.54.18 by Aaron Bentley
Noted difference of opinion wrt BzrCommandError
344
    #
345
    # I think it's a waste of effort to differentiate between errors that
346
    # are not intended to be caught anyway.  UI code need not subclass
347
    # BzrCommandError, and non-UI code should not throw a subclass of
348
    # BzrCommandError.  ADHB 20051211
1740.5.6 by Martin Pool
Clean up many exception classes.
349
350
2067.3.3 by Martin Pool
merge bzr.dev and reconcile several changes, also some test fixes
351
class NotWriteLocked(BzrError):
352
353
    _fmt = """%(not_locked)r is not write locked but needs to be."""
354
355
    def __init__(self, not_locked):
356
        self.not_locked = not_locked
357
358
1740.5.8 by Martin Pool
Review cleanups: better error reporting, put back report_exception.
359
class BzrOptionError(BzrCommandError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
360
361
    _fmt = "Error in command line options"
1740.5.8 by Martin Pool
Review cleanups: better error reporting, put back report_exception.
362
2221.4.1 by Aaron Bentley
Get registry options working
363
2592.1.7 by Robert Collins
A validate that goes boom.
364
class BadIndexFormatSignature(BzrError):
365
366
    _fmt = "%(value)s is not an index of type %(_type)s."
367
368
    def __init__(self, value, _type):
369
        BzrError.__init__(self)
370
        self.value = value
371
        self._type = _type
372
373
2592.1.11 by Robert Collins
Detect truncated indices.
374
class BadIndexData(BzrError):
375
376
    _fmt = "Error in data for index %(value)s."
377
378
    def __init__(self, value):
379
        BzrError.__init__(self)
380
        self.value = value
381
382
2592.1.15 by Robert Collins
Detect duplicate key insertion.
383
class BadIndexDuplicateKey(BzrError):
384
385
    _fmt = "The key '%(key)s' is already in index '%(index)s'."
386
387
    def __init__(self, key, index):
388
        BzrError.__init__(self)
389
        self.key = key
390
        self.index = index
391
392
2592.1.12 by Robert Collins
Handle basic node adds.
393
class BadIndexKey(BzrError):
394
395
    _fmt = "The key '%(key)s' is not a valid key."
396
397
    def __init__(self, key):
398
        BzrError.__init__(self)
399
        self.key = key
400
401
2592.1.10 by Robert Collins
Make validate detect node reference parsing errors.
402
class BadIndexOptions(BzrError):
403
404
    _fmt = "Could not parse options for index %(value)s."
405
406
    def __init__(self, value):
407
        BzrError.__init__(self)
408
        self.value = value
409
410
2592.1.12 by Robert Collins
Handle basic node adds.
411
class BadIndexValue(BzrError):
412
413
    _fmt = "The value '%(value)s' is not a valid value."
414
415
    def __init__(self, value):
416
        BzrError.__init__(self)
417
        self.value = value
418
419
2221.4.6 by Aaron Bentley
Improve text and naming
420
class BadOptionValue(BzrError):
2221.4.1 by Aaron Bentley
Get registry options working
421
2221.4.6 by Aaron Bentley
Improve text and naming
422
    _fmt = """Bad value "%(value)s" for option "%(name)s"."""
2221.4.1 by Aaron Bentley
Get registry options working
423
424
    def __init__(self, name, value):
425
        BzrError.__init__(self, name=name, value=value)
426
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
427
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
428
class StrictCommitFailed(BzrError):
429
430
    _fmt = "Commit refused because there are unknown files in the tree"
1 by mbp at sourcefrog
import from baz patch-364
431
1185.31.41 by John Arbash Meinel
Creating a PathNotChild exception, and using relpath in HTTPTestUtil
432
1662.1.12 by Martin Pool
Translate unknown sftp errors to PathError, no NoSuchFile
433
# XXX: Should be unified with TransportError; they seem to represent the
434
# same thing
2052.6.1 by Robert Collins
``Transport.get`` has had its interface made more clear for ease of use.
435
# RBC 20060929: I think that unifiying with TransportError would be a mistake
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
436
# - this is finer than a TransportError - and more useful as such. It
2052.6.1 by Robert Collins
``Transport.get`` has had its interface made more clear for ease of use.
437
# differentiates between 'transport has failed' and 'operation on a transport
438
# has failed.'
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
439
class PathError(BzrError):
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
440
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
441
    _fmt = "Generic path error: %(path)r%(extra)s)"
1654.1.4 by Robert Collins
Teach `bzr init` how to init at the root of a repository.
442
1185.31.44 by John Arbash Meinel
Cleaned up Exceptions for all transports.
443
    def __init__(self, path, extra=None):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
444
        BzrError.__init__(self)
1185.31.44 by John Arbash Meinel
Cleaned up Exceptions for all transports.
445
        self.path = path
1908.4.11 by John Arbash Meinel
reverting changes to errors.py and local transport.
446
        if extra:
447
            self.extra = ': ' + str(extra)
448
        else:
449
            self.extra = ''
1185.31.44 by John Arbash Meinel
Cleaned up Exceptions for all transports.
450
451
452
class NoSuchFile(PathError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
453
454
    _fmt = "No such file: %(path)r%(extra)s"
1185.31.44 by John Arbash Meinel
Cleaned up Exceptions for all transports.
455
456
457
class FileExists(PathError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
458
459
    _fmt = "File exists: %(path)r%(extra)s"
1185.31.44 by John Arbash Meinel
Cleaned up Exceptions for all transports.
460
461
2220.1.11 by Marius Kruger
* bzrlib/errors.py
462
class RenameFailedFilesExist(BzrError):
463
    """Used when renaming and both source and dest exist."""
464
2220.1.12 by Marius Kruger
* Fix errors.py import order
465
    _fmt = ("Could not rename %(source)s => %(dest)s because both files exist."
2967.3.6 by Daniel Watkins
Extracted the string from every use of RenameFailedFilesExist to RenameFailedFilesExist itself.
466
            " (Use --after to tell bzr about a rename that has already"
467
            " happened)%(extra)s")
2220.1.11 by Marius Kruger
* bzrlib/errors.py
468
469
    def __init__(self, source, dest, extra=None):
2206.1.5 by Marius Kruger
* errors
470
        BzrError.__init__(self)
2220.1.11 by Marius Kruger
* bzrlib/errors.py
471
        self.source = str(source)
472
        self.dest = str(dest)
2206.1.5 by Marius Kruger
* errors
473
        if extra:
2220.1.11 by Marius Kruger
* bzrlib/errors.py
474
            self.extra = ' ' + str(extra)
2206.1.5 by Marius Kruger
* errors
475
        else:
476
            self.extra = ''
477
2206.1.9 by Marius Kruger
* Change move/rename errors yet again
478
2206.1.4 by Marius Kruger
Improved WorkingTree.move excptions. (as requested)
479
class NotADirectory(PathError):
480
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
481
    _fmt = '"%(path)s" is not a directory %(extra)s'
2206.1.4 by Marius Kruger
Improved WorkingTree.move excptions. (as requested)
482
483
484
class NotInWorkingDirectory(PathError):
485
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
486
    _fmt = '"%(path)s" is not in the working directory %(extra)s'
2206.1.4 by Marius Kruger
Improved WorkingTree.move excptions. (as requested)
487
488
1553.5.10 by Martin Pool
New DirectoryNotEmpty exception, and raise this from local and memory
489
class DirectoryNotEmpty(PathError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
490
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
491
    _fmt = 'Directory not empty: "%(path)s"%(extra)s'
1553.5.10 by Martin Pool
New DirectoryNotEmpty exception, and raise this from local and memory
492
493
3136.1.10 by Aaron Bentley
Clean error if filesystem does not support hard-links
494
class HardLinkNotSupported(PathError):
495
496
    _fmt = 'Hard-linking "%(path)s" is not supported'
497
498
2871.1.1 by Robert Collins
* New class ``bzrlib.errors.InternalBzrError`` which is just a convenient
499
class ReadingCompleted(InternalBzrError):
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
500
2067.3.3 by Martin Pool
merge bzr.dev and reconcile several changes, also some test fixes
501
    _fmt = ("The MediumRequest '%(request)s' has already had finish_reading "
502
            "called upon it - the request has been completed and no more "
503
            "data may be read.")
504
2018.2.4 by Robert Collins
separate out the client medium from the client encoding protocol for the smart server.
505
    def __init__(self, request):
506
        self.request = request
507
508
1558.10.1 by Aaron Bentley
Handle lockdirs over NFS properly
509
class ResourceBusy(PathError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
510
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
511
    _fmt = 'Device or resource busy: "%(path)s"%(extra)s'
1558.10.1 by Aaron Bentley
Handle lockdirs over NFS properly
512
513
1185.31.44 by John Arbash Meinel
Cleaned up Exceptions for all transports.
514
class PermissionDenied(PathError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
515
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
516
    _fmt = 'Permission denied: "%(path)s"%(extra)s'
1740.5.8 by Martin Pool
Review cleanups: better error reporting, put back report_exception.
517
518
1185.85.76 by John Arbash Meinel
Adding an InvalidURL so transports can report they expect utf-8 quoted paths. Updated tests
519
class InvalidURL(PathError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
520
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
521
    _fmt = 'Invalid url supplied to transport: "%(path)s"%(extra)s'
1185.85.76 by John Arbash Meinel
Adding an InvalidURL so transports can report they expect utf-8 quoted paths. Updated tests
522
523
1685.1.55 by John Arbash Meinel
Adding bzrlib.urlutils.join() to handle joining URLs
524
class InvalidURLJoin(PathError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
525
2692.1.1 by Andrew Bennetts
Add translate_client_path method to SmartServerRequest.
526
    _fmt = "Invalid URL join request: %(reason)s: %(base)r + %(join_args)r"
1685.1.55 by John Arbash Meinel
Adding bzrlib.urlutils.join() to handle joining URLs
527
2692.1.1 by Andrew Bennetts
Add translate_client_path method to SmartServerRequest.
528
    def __init__(self, reason, base, join_args):
529
        self.reason = reason
530
        self.base = base
531
        self.join_args = join_args
532
        PathError.__init__(self, base, reason)
1685.1.55 by John Arbash Meinel
Adding bzrlib.urlutils.join() to handle joining URLs
533
534
3242.3.33 by Aaron Bentley
Handle relative URL stacking cleanly
535
class InvalidRebaseURLs(PathError):
536
537
    _fmt = "URLs differ by more than path: %(from_)r and %(to)r"
538
539
    def __init__(self, from_, to):
540
        self.from_ = from_
541
        self.to = to
542
        PathError.__init__(self, from_, 'URLs differ by more than path.')
543
544
3350.3.3 by Robert Collins
Functional get_record_stream interface tests covering full interface.
545
class UnavailableRepresentation(InternalBzrError):
546
547
    _fmt = ("The encoding '%(wanted)s' is not available for key %(key)s which "
548
        "is encoded as '%(native)s'.")
549
550
    def __init__(self, key, wanted, native):
551
        InternalBzrError.__init__(self)
552
        self.wanted = wanted
553
        self.native = native
554
        self.key = key
555
556
2245.1.3 by Robert Collins
Add install_hook to the BranchHooks class as the official means for installing a hook.
557
class UnknownHook(BzrError):
558
559
    _fmt = "The %(type)s hook '%(hook)s' is unknown in this version of bzrlib."
560
561
    def __init__(self, hook_type, hook_name):
562
        BzrError.__init__(self)
563
        self.type = hook_type
564
        self.hook = hook_name
565
566
1843.1.1 by John Arbash Meinel
Update get_transport to raise a nicer error which includes dependency info
567
class UnsupportedProtocol(PathError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
568
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
569
    _fmt = 'Unsupported protocol for url "%(path)s"%(extra)s'
1843.1.1 by John Arbash Meinel
Update get_transport to raise a nicer error which includes dependency info
570
6030.2.1 by Jelmer Vernooij
Create location_to_url.
571
    def __init__(self, url, extra=""):
1843.1.1 by John Arbash Meinel
Update get_transport to raise a nicer error which includes dependency info
572
        PathError.__init__(self, url, extra=extra)
573
574
3221.11.2 by Robert Collins
Create basic stackable branch facility.
575
class UnstackableBranchFormat(BzrError):
576
577
    _fmt = ("The branch '%(url)s'(%(format)s) is not a stackable format. "
578
        "You will need to upgrade the branch to permit branch stacking.")
579
580
    def __init__(self, format, url):
581
        BzrError.__init__(self)
582
        self.format = format
583
        self.url = url
584
585
4462.3.2 by Robert Collins
Do not stack on the same branch/repository anymore. This was never supported and would generally result in infinite recursion. Fixes bug 376243.
586
class UnstackableLocationError(BzrError):
587
588
    _fmt = "The branch '%(branch_url)s' cannot be stacked on '%(target_url)s'."
589
590
    def __init__(self, branch_url, target_url):
591
        BzrError.__init__(self)
592
        self.branch_url = branch_url
593
        self.target_url = target_url
594
595
3221.11.2 by Robert Collins
Create basic stackable branch facility.
596
class UnstackableRepositoryFormat(BzrError):
597
598
    _fmt = ("The repository '%(url)s'(%(format)s) is not a stackable format. "
599
        "You will need to upgrade the repository to permit branch stacking.")
600
601
    def __init__(self, format, url):
602
        BzrError.__init__(self)
603
        self.format = format
604
        self.url = url
605
606
2052.6.1 by Robert Collins
``Transport.get`` has had its interface made more clear for ease of use.
607
class ReadError(PathError):
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
608
2052.6.2 by Robert Collins
Merge bzr.dev.
609
    _fmt = """Error reading from %(path)r."""
2052.6.1 by Robert Collins
``Transport.get`` has had its interface made more clear for ease of use.
610
611
2001.3.2 by John Arbash Meinel
Force all transports to raise ShortReadvError if they can
612
class ShortReadvError(PathError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
613
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
614
    _fmt = ('readv() read %(actual)s bytes rather than %(length)s bytes'
615
            ' at %(offset)s for "%(path)s"%(extra)s')
2001.3.2 by John Arbash Meinel
Force all transports to raise ShortReadvError if they can
616
2067.3.2 by Martin Pool
Error cleanup review comments:
617
    internal_error = True
2001.3.2 by John Arbash Meinel
Force all transports to raise ShortReadvError if they can
618
2001.3.3 by John Arbash Meinel
review feedback: add the actual count written to ShortReadvError
619
    def __init__(self, path, offset, length, actual, extra=None):
2001.3.2 by John Arbash Meinel
Force all transports to raise ShortReadvError if they can
620
        PathError.__init__(self, path, extra=extra)
621
        self.offset = offset
622
        self.length = length
2001.3.3 by John Arbash Meinel
review feedback: add the actual count written to ShortReadvError
623
        self.actual = actual
2001.3.2 by John Arbash Meinel
Force all transports to raise ShortReadvError if they can
624
625
2485.8.18 by Vincent Ladeuil
PathNotChild inherits from PathError, not BzrError.
626
class PathNotChild(PathError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
627
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
628
    _fmt = 'Path "%(path)s" is not a child of path "%(base)s"%(extra)s'
1740.5.6 by Martin Pool
Clean up many exception classes.
629
5346.3.1 by Martin Pool
* `PathNotChild` should not give a traceback.
630
    internal_error = False
1740.5.6 by Martin Pool
Clean up many exception classes.
631
1185.31.44 by John Arbash Meinel
Cleaned up Exceptions for all transports.
632
    def __init__(self, path, base, extra=None):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
633
        BzrError.__init__(self)
1185.31.41 by John Arbash Meinel
Creating a PathNotChild exception, and using relpath in HTTPTestUtil
634
        self.path = path
635
        self.base = base
1185.31.44 by John Arbash Meinel
Cleaned up Exceptions for all transports.
636
        if extra:
637
            self.extra = ': ' + str(extra)
638
        else:
639
            self.extra = ''
1185.31.41 by John Arbash Meinel
Creating a PathNotChild exception, and using relpath in HTTPTestUtil
640
641
1830.3.5 by John Arbash Meinel
make_entry refuses to create non-normalized entries.
642
class InvalidNormalization(PathError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
643
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
644
    _fmt = 'Path "%(path)s" is not unicode normalized'
1830.3.5 by John Arbash Meinel
make_entry refuses to create non-normalized entries.
645
646
1685.1.60 by Martin Pool
[broken] NotBranchError should unescape the url if possible
647
# TODO: This is given a URL; we try to unescape it but doing that from inside
648
# the exception object is a bit undesirable.
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
649
# TODO: Probably this behavior of should be a common superclass
1654.1.4 by Robert Collins
Teach `bzr init` how to init at the root of a repository.
650
class NotBranchError(PathError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
651
4734.4.7 by Andrew Bennetts
Defer checking for a repository in NotBranchError case until we format the error as a string. (test_smart currently fails)
652
    _fmt = 'Not a branch: "%(path)s"%(detail)s.'
1685.1.60 by Martin Pool
[broken] NotBranchError should unescape the url if possible
653
4734.4.8 by Andrew Bennetts
Fix HPSS tests; pass 'location is a repository' message via smart server when possible (adds BzrDir.open_branchV3 verb).
654
    def __init__(self, path, detail=None, bzrdir=None):
1685.1.60 by Martin Pool
[broken] NotBranchError should unescape the url if possible
655
       import bzrlib.urlutils as urlutils
4734.4.1 by Brian de Alwis
Add a 'detail' field to NotBranchError to hold additional helpful
656
       path = urlutils.unescape_for_display(path, 'ascii')
4734.4.8 by Andrew Bennetts
Fix HPSS tests; pass 'location is a repository' message via smart server when possible (adds BzrDir.open_branchV3 verb).
657
       if detail is not None:
658
           detail = ': ' + detail
659
       self.detail = detail
4734.4.7 by Andrew Bennetts
Defer checking for a repository in NotBranchError case until we format the error as a string. (test_smart currently fails)
660
       self.bzrdir = bzrdir
661
       PathError.__init__(self, path=path)
662
5050.60.1 by Andrew Bennetts
Override __repr__ in NotBranchError to avoid side-effects during repr(e).
663
    def __repr__(self):
664
        return '<%s %r>' % (self.__class__.__name__, self.__dict__)
665
4734.4.7 by Andrew Bennetts
Defer checking for a repository in NotBranchError case until we format the error as a string. (test_smart currently fails)
666
    def _format(self):
667
        # XXX: Ideally self.detail would be a property, but Exceptions in
668
        # Python 2.4 have to be old-style classes so properties don't work.
669
        # Instead we override _format.
670
        if self.detail is None:
671
            if self.bzrdir is not None:
672
                try:
673
                    self.bzrdir.open_repository()
674
                except NoRepositoryPresent:
675
                    self.detail = ''
5050.46.1 by Andrew Bennetts
Suppress unexpected errors during NotBranchError's call to open_repository.
676
                except Exception:
677
                    # Just ignore unexpected errors.  Raising arbitrary errors
678
                    # during str(err) can provoke strange bugs.  Concretely
679
                    # Launchpad's codehosting managed to raise NotBranchError
680
                    # here, and then get stuck in an infinite loop/recursion
681
                    # trying to str() that error.  All this error really cares
682
                    # about that there's no working repository there, and if
683
                    # open_repository() fails, there probably isn't.
684
                    self.detail = ''
4734.4.7 by Andrew Bennetts
Defer checking for a repository in NotBranchError case until we format the error as a string. (test_smart currently fails)
685
                else:
686
                    self.detail = ': location is a repository'
687
            else:
688
                self.detail = ''
689
        return PathError._format(self)
1654.1.4 by Robert Collins
Teach `bzr init` how to init at the root of a repository.
690
691
1551.10.32 by Aaron Bentley
Add submit: specifier, for merge-directive-like diffs
692
class NoSubmitBranch(PathError):
693
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
694
    _fmt = 'No submit branch available for branch "%(path)s"'
1551.10.32 by Aaron Bentley
Add submit: specifier, for merge-directive-like diffs
695
696
    def __init__(self, branch):
697
       import bzrlib.urlutils as urlutils
698
       self.path = urlutils.unescape_for_display(branch.base, 'ascii')
699
700
1654.1.4 by Robert Collins
Teach `bzr init` how to init at the root of a repository.
701
class AlreadyBranchError(PathError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
702
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
703
    _fmt = 'Already a branch: "%(path)s".'
1662.1.19 by Martin Pool
Better error message when initting existing tree
704
705
706
class BranchExistsWithoutWorkingTree(PathError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
707
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
708
    _fmt = 'Directory contains a branch, but no working tree \
709
(use bzr checkout if you wish to build a working tree): "%(path)s"'
1185.16.62 by mbp at sourcefrog
- convert NotBranchError to new exception base
710
573 by Martin Pool
- new exception NotBranchError
711
1755.3.6 by John Arbash Meinel
Add a test suite for Atomic File, and clean it up so that it really does set the mode properly.
712
class AtomicFileAlreadyClosed(PathError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
713
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
714
    _fmt = ('"%(function)s" called on an AtomicFile after it was closed:'
715
            ' "%(path)s"')
1755.3.6 by John Arbash Meinel
Add a test suite for Atomic File, and clean it up so that it really does set the mode properly.
716
717
    def __init__(self, path, function):
718
        PathError.__init__(self, path=path, extra=None)
719
        self.function = function
720
721
1864.7.2 by John Arbash Meinel
Test that we copy the parent across properly (if it is available)
722
class InaccessibleParent(PathError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
723
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
724
    _fmt = ('Parent not accessible given base "%(base)s" and'
725
            ' relative path "%(path)s"')
1864.7.2 by John Arbash Meinel
Test that we copy the parent across properly (if it is available)
726
727
    def __init__(self, path, base):
728
        PathError.__init__(self, path)
729
        self.base = base
730
731
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
732
class NoRepositoryPresent(BzrError):
733
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
734
    _fmt = 'No repository present: "%(path)s"'
1534.4.47 by Robert Collins
Split out repository into .bzr/repository
735
    def __init__(self, bzrdir):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
736
        BzrError.__init__(self)
1534.4.47 by Robert Collins
Split out repository into .bzr/repository
737
        self.path = bzrdir.transport.clone('..').base
738
739
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
740
class UnsupportedFormatError(BzrError):
2379.4.1 by John Arbash Meinel
(John Arbash Meinel) Make it clearer what to do if you have a (very) old branch.
741
742
    _fmt = "Unsupported branch format: %(format)s\nPlease run 'bzr upgrade'"
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
743
744
745
class UnknownFormatError(BzrError):
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
746
3246.3.1 by Daniel Watkins
Modified UnknownFormatError to allow a kind to be specified.
747
    _fmt = "Unknown %(kind)s format: %(format)r"
748
749
    def __init__(self, format, kind='branch'):
750
        self.kind = kind
751
        self.format = format
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
752
753
754
class IncompatibleFormat(BzrError):
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
755
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
756
    _fmt = "Format %(format)s is not compatible with .bzr version %(bzrdir)s."
1534.4.44 by Robert Collins
Make a new BzrDir format that uses a versioned branch format in a branch/ subdirectory.
757
758
    def __init__(self, format, bzrdir_format):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
759
        BzrError.__init__(self)
1534.4.44 by Robert Collins
Make a new BzrDir format that uses a versioned branch format in a branch/ subdirectory.
760
        self.format = format
761
        self.bzrdir = bzrdir_format
762
763
2323.8.2 by Aaron Bentley
Give a nicer error on fetch when repos are in incompatible formats
764
class IncompatibleRepositories(BzrError):
4650.2.1 by Robert Collins
Deserialise IncompatibleRepositories errors in the client, generating
765
    """Report an error that two repositories are not compatible.
766
767
    Note that the source and target repositories are permitted to be strings:
768
    this exception is thrown from the smart server and may refer to a
769
    repository the client hasn't opened.
770
    """
2323.8.2 by Aaron Bentley
Give a nicer error on fetch when repos are in incompatible formats
771
3582.1.2 by Martin Pool
Default InterRepository.fetch raises IncompatibleRepositories
772
    _fmt = "%(target)s\n" \
773
            "is not compatible with\n" \
774
            "%(source)s\n" \
775
            "%(details)s"
2323.8.2 by Aaron Bentley
Give a nicer error on fetch when repos are in incompatible formats
776
3582.1.2 by Martin Pool
Default InterRepository.fetch raises IncompatibleRepositories
777
    def __init__(self, source, target, details=None):
3582.1.5 by Martin Pool
style tweak
778
        if details is None:
3582.1.2 by Martin Pool
Default InterRepository.fetch raises IncompatibleRepositories
779
            details = "(no details)"
780
        BzrError.__init__(self, target=target, source=source, details=details)
2323.8.2 by Aaron Bentley
Give a nicer error on fetch when repos are in incompatible formats
781
782
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
783
class IncompatibleRevision(BzrError):
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
784
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
785
    _fmt = "Revision is not compatible with %(repo_format)s"
1910.2.60 by Aaron Bentley
Ensure that new-model revisions aren't installed into old-model repos
786
787
    def __init__(self, repo_format):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
788
        BzrError.__init__(self)
1910.2.60 by Aaron Bentley
Ensure that new-model revisions aren't installed into old-model repos
789
        self.repo_format = repo_format
790
791
2206.1.5 by Marius Kruger
* errors
792
class AlreadyVersionedError(BzrError):
2206.1.7 by Marius Kruger
* errors
793
    """Used when a path is expected not to be versioned, but it is."""
2220.1.9 by Marius Kruger
Remove all trailing white space this bundle would have
794
2745.3.1 by Daniel Watkins
Modified errors.py to quote paths just before full stops. Also added some full stops to error messages without them.
795
    _fmt = "%(context_info)s%(path)s is already versioned."
2206.1.5 by Marius Kruger
* errors
796
2206.1.7 by Marius Kruger
* errors
797
    def __init__(self, path, context_info=None):
2255.2.29 by Robert Collins
Change the error raised from Dirstate.add for an unversioned parent path to match the WorkingTree interface.
798
        """Construct a new AlreadyVersionedError.
2206.1.5 by Marius Kruger
* errors
799
2220.1.9 by Marius Kruger
Remove all trailing white space this bundle would have
800
        :param path: This is the path which is versioned,
5891.1.2 by Andrew Bennetts
Fix a bunch of docstring formatting nits, making pydoctor a bit happier.
801
            which should be in a user friendly form.
2206.1.7 by Marius Kruger
* errors
802
        :param context_info: If given, this is information about the context,
5891.1.2 by Andrew Bennetts
Fix a bunch of docstring formatting nits, making pydoctor a bit happier.
803
            which could explain why this is expected to not be versioned.
2206.1.5 by Marius Kruger
* errors
804
        """
805
        BzrError.__init__(self)
806
        self.path = path
2206.1.7 by Marius Kruger
* errors
807
        if context_info is None:
808
            self.context_info = ''
2206.1.5 by Marius Kruger
* errors
809
        else:
2206.1.7 by Marius Kruger
* errors
810
            self.context_info = context_info + ". "
2206.1.5 by Marius Kruger
* errors
811
812
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
813
class NotVersionedError(BzrError):
2206.1.7 by Marius Kruger
* errors
814
    """Used when a path is expected to be versioned, but it is not."""
2220.1.9 by Marius Kruger
Remove all trailing white space this bundle would have
815
2745.3.1 by Daniel Watkins
Modified errors.py to quote paths just before full stops. Also added some full stops to error messages without them.
816
    _fmt = "%(context_info)s%(path)s is not versioned."
2206.1.2 by Marius Kruger
* Made whitespace and puntuation improvements, as requested.
817
2206.1.7 by Marius Kruger
* errors
818
    def __init__(self, path, context_info=None):
2206.1.2 by Marius Kruger
* Made whitespace and puntuation improvements, as requested.
819
        """Construct a new NotVersionedError.
820
2220.1.9 by Marius Kruger
Remove all trailing white space this bundle would have
821
        :param path: This is the path which is not versioned,
5891.1.2 by Andrew Bennetts
Fix a bunch of docstring formatting nits, making pydoctor a bit happier.
822
            which should be in a user friendly form.
2206.1.7 by Marius Kruger
* errors
823
        :param context_info: If given, this is information about the context,
5891.1.2 by Andrew Bennetts
Fix a bunch of docstring formatting nits, making pydoctor a bit happier.
824
            which could explain why this is expected to be versioned.
2206.1.2 by Marius Kruger
* Made whitespace and puntuation improvements, as requested.
825
        """
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
826
        BzrError.__init__(self)
1185.16.72 by Martin Pool
[merge] from robert and fix up tests
827
        self.path = path
2206.1.7 by Marius Kruger
* errors
828
        if context_info is None:
829
            self.context_info = ''
2206.1.2 by Marius Kruger
* Made whitespace and puntuation improvements, as requested.
830
        else:
2206.1.7 by Marius Kruger
* errors
831
            self.context_info = context_info + ". "
2206.1.8 by Marius Kruger
Converted move/rename error messages to show source => target.
832
833
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
834
class PathsNotVersionedError(BzrError):
2206.1.7 by Marius Kruger
* errors
835
    """Used when reporting several paths which are not versioned"""
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
836
837
    _fmt = "Path(s) are not versioned: %(paths_as_string)s"
1658.1.9 by Martin Pool
Give an error for bzr diff on an nonexistent file (Malone #3619)
838
839
    def __init__(self, paths):
840
        from bzrlib.osutils import quotefn
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
841
        BzrError.__init__(self)
1658.1.9 by Martin Pool
Give an error for bzr diff on an nonexistent file (Malone #3619)
842
        self.paths = paths
843
        self.paths_as_string = ' '.join([quotefn(p) for p in paths])
844
845
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
846
class PathsDoNotExist(BzrError):
847
2206.1.5 by Marius Kruger
* errors
848
    _fmt = "Path(s) do not exist: %(paths_as_string)s%(extra)s"
1662.1.14 by Martin Pool
(PathsDoNotExist) review style comments
849
1662.1.9 by Martin Pool
Give a clear error for bzr status of an unversioned, nonexistent file. (Malone #3619)
850
    # used when reporting that paths are neither versioned nor in the working
851
    # tree
852
2206.1.5 by Marius Kruger
* errors
853
    def __init__(self, paths, extra=None):
1662.1.14 by Martin Pool
(PathsDoNotExist) review style comments
854
        # circular import
1662.1.9 by Martin Pool
Give a clear error for bzr status of an unversioned, nonexistent file. (Malone #3619)
855
        from bzrlib.osutils import quotefn
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
856
        BzrError.__init__(self)
1662.1.9 by Martin Pool
Give a clear error for bzr status of an unversioned, nonexistent file. (Malone #3619)
857
        self.paths = paths
858
        self.paths_as_string = ' '.join([quotefn(p) for p in paths])
2206.1.5 by Marius Kruger
* errors
859
        if extra:
860
            self.extra = ': ' + str(extra)
861
        else:
862
            self.extra = ''
1662.1.9 by Martin Pool
Give a clear error for bzr status of an unversioned, nonexistent file. (Malone #3619)
863
864
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
865
class BadFileKindError(BzrError):
866
2100.3.21 by Aaron Bentley
Work on checking out by-reference trees
867
    _fmt = 'Cannot operate on "%(filename)s" of unsupported kind "%(kind)s"'
868
869
    def __init__(self, filename, kind):
870
        BzrError.__init__(self, filename=filename, kind=kind)
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
871
872
3287.20.2 by John Arbash Meinel
Raise a clear error about the offending filename when there is a filename with bad characters.
873
class BadFilenameEncoding(BzrError):
874
875
    _fmt = ('Filename %(filename)r is not valid in your current filesystem'
876
            ' encoding %(fs_encoding)s')
877
878
    def __init__(self, filename, fs_encoding):
879
        BzrError.__init__(self)
880
        self.filename = filename
881
        self.fs_encoding = fs_encoding
882
883
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
884
class ForbiddenControlFileError(BzrError):
885
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
886
    _fmt = 'Cannot operate on "%(filename)s" because it is a control file'
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
887
888
2871.1.1 by Robert Collins
* New class ``bzrlib.errors.InternalBzrError`` which is just a convenient
889
class LockError(InternalBzrError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
890
2321.3.6 by Alexander Belchenko
LockError produce unprintable exception on Python 2.5 because it try to override StandardError.message attribute
891
    _fmt = "Lock error: %(msg)s"
2221.2.2 by Aaron Bentley
PEP8-correctness
892
1185.16.63 by Martin Pool
- more error conversion
893
    # All exceptions from the lock/unlock functions should be from
894
    # this exception class.  They will be translated as necessary. The
895
    # original exception is available as e.original_error
1553.5.11 by Martin Pool
Change some lock and transaction related exceptions to BzrNewException style
896
    #
897
    # New code should prefer to raise specific subclasses
5050.8.1 by Parth Malwankar
added test to ensure that BzrError subclasses dont use "message" as a name
898
    def __init__(self, msg):
899
        self.msg = msg
882 by Martin Pool
- Optionally raise EmptyCommit if there are no changes. Test for this.
900
901
2255.2.145 by Robert Collins
Support unbreakable locks for trees.
902
class LockActive(LockError):
903
904
    _fmt = "The lock for '%(lock_description)s' is in use and cannot be broken."
905
906
    internal_error = False
907
908
    def __init__(self, lock_description):
909
        self.lock_description = lock_description
910
911
1417.1.6 by Robert Collins
introduce transactions for grouping actions done to and with branches
912
class CommitNotPossible(LockError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
913
914
    _fmt = "A commit was attempted but we do not have a write lock open."
2067.3.2 by Martin Pool
Error cleanup review comments:
915
1553.5.11 by Martin Pool
Change some lock and transaction related exceptions to BzrNewException style
916
    def __init__(self):
917
        pass
1417.1.6 by Robert Collins
introduce transactions for grouping actions done to and with branches
918
919
920
class AlreadyCommitted(LockError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
921
922
    _fmt = "A rollback was requested, but is not able to be accomplished."
2067.3.2 by Martin Pool
Error cleanup review comments:
923
1553.5.11 by Martin Pool
Change some lock and transaction related exceptions to BzrNewException style
924
    def __init__(self):
925
        pass
1417.1.6 by Robert Collins
introduce transactions for grouping actions done to and with branches
926
927
1417.1.8 by Robert Collins
use transactions in the weave store interface, which enables caching for log
928
class ReadOnlyError(LockError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
929
930
    _fmt = "A write attempt was made in a read only transaction on %(obj)s"
2067.3.2 by Martin Pool
Error cleanup review comments:
931
2255.2.158 by Martin Pool
Most of the integration of dirstate and subtree
932
    # TODO: There should also be an error indicating that you need a write
933
    # lock and don't have any lock at all... mbp 20070226
934
1553.5.33 by Martin Pool
LockDir review comment fixes
935
    def __init__(self, obj):
936
        self.obj = obj
1553.5.11 by Martin Pool
Change some lock and transaction related exceptions to BzrNewException style
937
938
2872.5.1 by Martin Pool
Avoid internal error tracebacks on failure to lock on readonly transport (#129701).
939
class LockFailed(LockError):
940
941
    internal_error = False
942
943
    _fmt = "Cannot lock %(lock)s: %(why)s"
944
945
    def __init__(self, lock, why):
946
        LockError.__init__(self, '')
947
        self.lock = lock
948
        self.why = why
949
950
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
951
class OutSideTransaction(BzrError):
952
2221.5.9 by Dmitry Vasiliev
Removed trailing whitespaces and wrapped all long lines
953
    _fmt = ("A transaction related operation was attempted after"
954
            " the transaction finished.")
1594.2.21 by Robert Collins
Teach versioned files to prevent mutation after finishing.
955
956
1553.5.36 by Martin Pool
Clean up duplicate BranchNotLocked error and rename to ObjectNotLocked
957
class ObjectNotLocked(LockError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
958
959
    _fmt = "%(obj)r is not locked"
1740.5.8 by Martin Pool
Review cleanups: better error reporting, put back report_exception.
960
1553.5.36 by Martin Pool
Clean up duplicate BranchNotLocked error and rename to ObjectNotLocked
961
    # this can indicate that any particular object is not locked; see also
962
    # LockNotHeld which means that a particular *lock* object is not held by
963
    # the caller -- perhaps they should be unified.
964
    def __init__(self, obj):
965
        self.obj = obj
1553.5.11 by Martin Pool
Change some lock and transaction related exceptions to BzrNewException style
966
967
968
class ReadOnlyObjectDirtiedError(ReadOnlyError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
969
970
    _fmt = "Cannot change object %(obj)r in read only transaction"
2067.3.2 by Martin Pool
Error cleanup review comments:
971
1553.5.11 by Martin Pool
Change some lock and transaction related exceptions to BzrNewException style
972
    def __init__(self, obj):
973
        self.obj = obj
974
975
976
class UnlockableTransport(LockError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
977
2872.5.1 by Martin Pool
Avoid internal error tracebacks on failure to lock on readonly transport (#129701).
978
    internal_error = False
979
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
980
    _fmt = "Cannot lock: transport is read only: %(transport)s"
2067.3.2 by Martin Pool
Error cleanup review comments:
981
1553.5.11 by Martin Pool
Change some lock and transaction related exceptions to BzrNewException style
982
    def __init__(self, transport):
983
        self.transport = transport
984
985
986
class LockContention(LockError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
987
4121.1.1 by Martin Pool
Python2.6 dislikes the attribute name Exception.message
988
    _fmt = 'Could not acquire lock "%(lock)s": %(msg)s'
2221.2.2 by Aaron Bentley
PEP8-correctness
989
2221.2.1 by Aaron Bentley
Make most lock errors internal
990
    internal_error = False
2353.4.3 by John Arbash Meinel
Implement a 'ReadLock.temporary_write_lock()' to upgrade to a write-lock in-process.
991
4121.1.1 by Martin Pool
Python2.6 dislikes the attribute name Exception.message
992
    def __init__(self, lock, msg=''):
1553.5.11 by Martin Pool
Change some lock and transaction related exceptions to BzrNewException style
993
        self.lock = lock
4121.1.1 by Martin Pool
Python2.6 dislikes the attribute name Exception.message
994
        self.msg = msg
1553.5.11 by Martin Pool
Change some lock and transaction related exceptions to BzrNewException style
995
996
1553.5.23 by Martin Pool
Start LockDir.confirm method and LockBroken exception
997
class LockBroken(LockError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
998
2221.5.9 by Dmitry Vasiliev
Removed trailing whitespaces and wrapped all long lines
999
    _fmt = ("Lock was broken while still open: %(lock)s"
1000
            " - check storage consistency!")
2221.2.2 by Aaron Bentley
PEP8-correctness
1001
2221.2.1 by Aaron Bentley
Make most lock errors internal
1002
    internal_error = False
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1003
1553.5.23 by Martin Pool
Start LockDir.confirm method and LockBroken exception
1004
    def __init__(self, lock):
1005
        self.lock = lock
1006
1007
1553.5.27 by Martin Pool
Confirm that only the intended holder of a lock was broken.
1008
class LockBreakMismatch(LockError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1009
2221.5.9 by Dmitry Vasiliev
Removed trailing whitespaces and wrapped all long lines
1010
    _fmt = ("Lock was released and re-acquired before being broken:"
1011
            " %(lock)s: held by %(holder)r, wanted to break %(target)r")
2221.2.2 by Aaron Bentley
PEP8-correctness
1012
2221.2.1 by Aaron Bentley
Make most lock errors internal
1013
    internal_error = False
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1014
1553.5.27 by Martin Pool
Confirm that only the intended holder of a lock was broken.
1015
    def __init__(self, lock, holder, target):
1016
        self.lock = lock
1017
        self.holder = holder
1018
        self.target = target
1019
1020
4634.161.1 by Andrew Bennetts
Add LockCorrupt error, and use it to provide nicer handling of unparseable lock/held/info files.
1021
class LockCorrupt(LockError):
1022
1023
    _fmt = ("Lock is apparently held, but corrupted: %(corruption_info)s\n"
1024
            "Use 'bzr break-lock' to clear it")
1025
1026
    internal_error = False
1027
1028
    def __init__(self, corruption_info, file_data=None):
1029
        self.corruption_info = corruption_info
1030
        self.file_data = file_data
1031
1032
1553.5.11 by Martin Pool
Change some lock and transaction related exceptions to BzrNewException style
1033
class LockNotHeld(LockError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1034
1035
    _fmt = "Lock not held: %(lock)s"
2221.2.2 by Aaron Bentley
PEP8-correctness
1036
2221.2.1 by Aaron Bentley
Make most lock errors internal
1037
    internal_error = False
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1038
1553.5.11 by Martin Pool
Change some lock and transaction related exceptions to BzrNewException style
1039
    def __init__(self, lock):
1040
        self.lock = lock
1041
1042
2279.7.1 by Andrew Bennetts
``LockableFiles.lock_write()`` now accepts a ``token`` keyword argument, so that
1043
class TokenLockingNotSupported(LockError):
1044
1045
    _fmt = "The object %(obj)s does not support token specifying a token when locking."
1046
1047
    def __init__(self, obj):
1048
        self.obj = obj
1049
1050
2018.5.78 by Andrew Bennetts
Implement RemoteRepository.lock_write/unlock to expect and send tokens over the
1051
class TokenMismatch(LockBroken):
2279.7.1 by Andrew Bennetts
``LockableFiles.lock_write()`` now accepts a ``token`` keyword argument, so that
1052
1053
    _fmt = "The lock token %(given_token)r does not match lock token %(lock_token)r."
1054
1055
    internal_error = True
1056
1057
    def __init__(self, given_token, lock_token):
1058
        self.given_token = given_token
1059
        self.lock_token = lock_token
1060
1061
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1062
class PointlessCommit(BzrError):
1063
1064
    _fmt = "No changes to commit"
1065
1066
1551.15.9 by Aaron Bentley
Better error for selected-file commit of merges
1067
class CannotCommitSelectedFileMerge(BzrError):
1068
1069
    _fmt = 'Selected-file commit of merges is not supported yet:'\
1070
        ' files %(files_str)s'
1071
1072
    def __init__(self, files):
1073
        files_str = ', '.join(files)
1074
        BzrError.__init__(self, files=files, files_str=files_str)
1075
1076
5718.4.1 by Jelmer Vernooij
Add CommitBuilder.supports_record_entry_contents.
1077
class ExcludesUnsupported(BzrError):
1078
1079
    _fmt = ('Excluding paths during commit is not supported by '
1080
            'repository at %(repository)r.')
1081
1082
    def __init__(self, repository):
1083
        BzrError.__init__(self, repository=repository)
1084
1085
2625.9.3 by Daniel Watkins
Added BadCommitMessageEncoding error.
1086
class BadCommitMessageEncoding(BzrError):
1087
1088
    _fmt = 'The specified commit message contains characters unsupported by '\
1089
        'the current encoding.'
1090
1091
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1092
class UpgradeReadonly(BzrError):
1093
1094
    _fmt = "Upgrade URL cannot work with readonly URLs."
1095
1096
1097
class UpToDateFormat(BzrError):
1098
1099
    _fmt = "The branch format %(format)s is already at the most recent format."
1534.5.7 by Robert Collins
Start factoring out the upgrade policy logic.
1100
1101
    def __init__(self, format):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1102
        BzrError.__init__(self)
1534.5.7 by Robert Collins
Start factoring out the upgrade policy logic.
1103
        self.format = format
1104
1105
1185.22.1 by Michael Ellerman
Implement strict commits with --strict flag.
1106
class StrictCommitFailed(Exception):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1107
1108
    _fmt = "Commit refused because there are unknowns in the tree."
1109
1110
2871.1.1 by Robert Collins
* New class ``bzrlib.errors.InternalBzrError`` which is just a convenient
1111
class NoSuchRevision(InternalBzrError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1112
2696.3.3 by Martin Pool
Start setting the default format to dirstate-tags
1113
    _fmt = "%(branch)s has no revision %(revision)s"
1740.5.6 by Martin Pool
Clean up many exception classes.
1114
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
1115
    def __init__(self, branch, revision):
2696.3.3 by Martin Pool
Start setting the default format to dirstate-tags
1116
        # 'branch' may sometimes be an internal object like a KnitRevisionStore
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1117
        BzrError.__init__(self, branch=branch, revision=revision)
1118
1119
2745.4.4 by Lukáš Lalinsky
- Make the description of --change more general
1120
class RangeInChangeOption(BzrError):
1121
1122
    _fmt = "Option --change does not accept revision ranges"
1123
1124
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1125
class NoSuchRevisionSpec(BzrError):
1126
1127
    _fmt = "No namespace registered for string: %(spec)r"
1948.4.25 by John Arbash Meinel
Check that invalid specs are properly handled
1128
1129
    def __init__(self, spec):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1130
        BzrError.__init__(self, spec=spec)
1131
1132
1908.11.1 by Robert Collins
Add a new method ``Tree.revision_tree`` which allows access to cached
1133
class NoSuchRevisionInTree(NoSuchRevision):
1908.11.5 by John Arbash Meinel
[merge] bzr.dev 2240
1134
    """When using Tree.revision_tree, and the revision is not accessible."""
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
1135
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
1136
    _fmt = "The revision id {%(revision_id)s} is not present in the tree %(tree)s."
1908.11.1 by Robert Collins
Add a new method ``Tree.revision_tree`` which allows access to cached
1137
1138
    def __init__(self, tree, revision_id):
1908.11.5 by John Arbash Meinel
[merge] bzr.dev 2240
1139
        BzrError.__init__(self)
1908.11.1 by Robert Collins
Add a new method ``Tree.revision_tree`` which allows access to cached
1140
        self.tree = tree
1141
        self.revision_id = revision_id
1142
1143
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1144
class InvalidRevisionSpec(BzrError):
1145
5349.3.2 by Neil Martinsen-Burrell
use a computed URL member rather than a custom __str__ method as suggested by JAM in review
1146
    _fmt = ("Requested revision: '%(spec)s' does not exist in branch:"
1147
            " %(branch_url)s%(extra)s")
1148
1948.4.1 by John Arbash Meinel
Update number parsers to raise InvalidRevisionSpec. Update revno: itself so it supports negative numbers
1149
    def __init__(self, spec, branch, extra=None):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1150
        BzrError.__init__(self, branch=branch, spec=spec)
5349.3.2 by Neil Martinsen-Burrell
use a computed URL member rather than a custom __str__ method as suggested by JAM in review
1151
        self.branch_url = getattr(branch, 'user_url', str(branch))
1948.4.1 by John Arbash Meinel
Update number parsers to raise InvalidRevisionSpec. Update revno: itself so it supports negative numbers
1152
        if extra:
1948.4.15 by John Arbash Meinel
Change the InvalidRevisionSpec formatting to be more readable
1153
            self.extra = '\n' + str(extra)
1948.4.1 by John Arbash Meinel
Update number parsers to raise InvalidRevisionSpec. Update revno: itself so it supports negative numbers
1154
        else:
1155
            self.extra = ''
1740.5.6 by Martin Pool
Clean up many exception classes.
1156
1157
1192 by Martin Pool
- clean up code for retrieving stored inventories
1158
class HistoryMissing(BzrError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1159
1160
    _fmt = "%(branch)s is missing %(object_type)s {%(object_id)s}"
1161
1162
2230.3.40 by Aaron Bentley
Rename strict_revision_history to append_revisions_only
1163
class AppendRevisionsOnlyViolation(BzrError):
2230.3.32 by Aaron Bentley
Implement strict history policy
1164
2221.5.14 by Dmitry Vasiliev
Wrapped long lines
1165
    _fmt = ('Operation denied because it would change the main history,'
1166
           ' which is not permitted by the append_revisions_only setting on'
1167
           ' branch "%(location)s".')
2230.3.39 by Aaron Bentley
Improve history violation message
1168
1169
    def __init__(self, location):
1170
       import bzrlib.urlutils as urlutils
1171
       location = urlutils.unescape_for_display(location, 'ascii')
1172
       BzrError.__init__(self, location=location)
2230.3.32 by Aaron Bentley
Implement strict history policy
1173
1174
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1175
class DivergedBranches(BzrError):
2221.5.9 by Dmitry Vasiliev
Removed trailing whitespaces and wrapped all long lines
1176
1177
    _fmt = ("These branches have diverged."
4297.3.1 by Samuel Bronson
Add suggestion to use "missing" to message for DivergedBranches.
1178
            " Use the missing command to see how.\n"
4297.3.2 by Jelmer Vernooij
Remove extra space.
1179
            "Use the merge command to reconcile them.")
1740.5.6 by Martin Pool
Clean up many exception classes.
1180
1185.2.1 by Lalo Martins
moving DivergedBranches from bzrlib.branch to bzrlib.errors, obeying:
1181
    def __init__(self, branch1, branch2):
1182
        self.branch1 = branch1
1183
        self.branch2 = branch2
1184
1390 by Robert Collins
pair programming worx... merge integration and weave
1185
2871.1.1 by Robert Collins
* New class ``bzrlib.errors.InternalBzrError`` which is just a convenient
1186
class NotLefthandHistory(InternalBzrError):
2230.3.44 by Aaron Bentley
Change asserts to specific errors for left-hand history violations
1187
1188
    _fmt = "Supplied history does not follow left-hand parents"
1189
1190
    def __init__(self, history):
1191
        BzrError.__init__(self, history=history)
1192
1193
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1194
class UnrelatedBranches(BzrError):
2067.3.2 by Martin Pool
Error cleanup review comments:
1195
2221.5.9 by Dmitry Vasiliev
Removed trailing whitespaces and wrapped all long lines
1196
    _fmt = ("Branches have no common ancestor, and"
1197
            " no merge base revision was specified.")
2067.3.2 by Martin Pool
Error cleanup review comments:
1198
1740.5.6 by Martin Pool
Clean up many exception classes.
1199
3062.2.7 by Aaron Bentley
Prevent reverse cherry-picking with weave
1200
class CannotReverseCherrypick(BzrError):
1201
1202
    _fmt = ('Selected merge cannot perform reverse cherrypicks.  Try merge3'
1203
            ' or diff3.')
1204
1205
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1206
class NoCommonAncestor(BzrError):
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
1207
2067.3.2 by Martin Pool
Error cleanup review comments:
1208
    _fmt = "Revisions have no common ancestor: %(revision_a)s %(revision_b)s"
1740.5.6 by Martin Pool
Clean up many exception classes.
1209
974.1.80 by Aaron Bentley
Improved merge error handling and testing
1210
    def __init__(self, revision_a, revision_b):
1740.5.6 by Martin Pool
Clean up many exception classes.
1211
        self.revision_a = revision_a
1212
        self.revision_b = revision_b
974.1.80 by Aaron Bentley
Improved merge error handling and testing
1213
1551.2.1 by Aaron Bentley
recommit 1527 PEP8 fixes
1214
974.1.80 by Aaron Bentley
Improved merge error handling and testing
1215
class NoCommonRoot(BzrError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1216
2221.5.9 by Dmitry Vasiliev
Removed trailing whitespaces and wrapped all long lines
1217
    _fmt = ("Revisions are not derived from the same root: "
1218
           "%(revision_a)s %(revision_b)s.")
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1219
974.1.80 by Aaron Bentley
Improved merge error handling and testing
1220
    def __init__(self, revision_a, revision_b):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1221
        BzrError.__init__(self, revision_a=revision_a, revision_b=revision_b)
1551.2.1 by Aaron Bentley
recommit 1527 PEP8 fixes
1222
1587.1.6 by Robert Collins
Update bound branch implementation to 0.8.
1223
974.2.7 by aaron.bentley at utoronto
Merged from bzr.24
1224
class NotAncestor(BzrError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1225
1226
    _fmt = "Revision %(rev_id)s is not an ancestor of %(not_ancestor_id)s"
1227
974.2.7 by aaron.bentley at utoronto
Merged from bzr.24
1228
    def __init__(self, rev_id, not_ancestor_id):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1229
        BzrError.__init__(self, rev_id=rev_id,
1230
            not_ancestor_id=not_ancestor_id)
1185.1.12 by Robert Collins
merge in lsdiff/filterdiff friendliness
1231
1232
3221.11.2 by Robert Collins
Create basic stackable branch facility.
1233
class NoCommits(BranchError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1234
1235
    _fmt = "Branch %(branch)s has no commits."
1948.4.20 by John Arbash Meinel
Make NoCommits a BzrNewError
1236
1551.2.1 by Aaron Bentley
recommit 1527 PEP8 fixes
1237
1185.10.1 by Aaron Bentley
Added --basis option to bzr branch
1238
class UnlistableStore(BzrError):
2067.3.2 by Martin Pool
Error cleanup review comments:
1239
1185.10.1 by Aaron Bentley
Added --basis option to bzr branch
1240
    def __init__(self, store):
1241
        BzrError.__init__(self, "Store %s is not listable" % store)
1242
1551.2.1 by Aaron Bentley
recommit 1527 PEP8 fixes
1243
1587.1.6 by Robert Collins
Update bound branch implementation to 0.8.
1244
1185.10.1 by Aaron Bentley
Added --basis option to bzr branch
1245
class UnlistableBranch(BzrError):
2067.3.2 by Martin Pool
Error cleanup review comments:
1246
1185.10.1 by Aaron Bentley
Added --basis option to bzr branch
1247
    def __init__(self, br):
1248
        BzrError.__init__(self, "Stores for branch %s are not listable" % br)
1392 by Robert Collins
reinstate testfetch test case
1249
1250
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1251
class BoundBranchOutOfDate(BzrError):
1252
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
1253
    _fmt = ("Bound branch %(branch)s is out of date with master branch"
5066.1.1 by Gary van der Merwe
Make it possible to detect a BoundBranchOutOfDate from commit.
1254
            " %(master)s.%(extra_help)s")
2067.3.2 by Martin Pool
Error cleanup review comments:
1255
1505.1.24 by John Arbash Meinel
Updated commit to handle bound branches. Included test to handle commit after merge
1256
    def __init__(self, branch, master):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1257
        BzrError.__init__(self)
1505.1.24 by John Arbash Meinel
Updated commit to handle bound branches. Included test to handle commit after merge
1258
        self.branch = branch
1259
        self.master = master
5066.1.1 by Gary van der Merwe
Make it possible to detect a BoundBranchOutOfDate from commit.
1260
        self.extra_help = ''
1505.1.24 by John Arbash Meinel
Updated commit to handle bound branches. Included test to handle commit after merge
1261
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
1262
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1263
class CommitToDoubleBoundBranch(BzrError):
1264
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
1265
    _fmt = ("Cannot commit to branch %(branch)s."
1266
            " It is bound to %(master)s, which is bound to %(remote)s.")
2067.3.2 by Martin Pool
Error cleanup review comments:
1267
1505.1.24 by John Arbash Meinel
Updated commit to handle bound branches. Included test to handle commit after merge
1268
    def __init__(self, branch, master, remote):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1269
        BzrError.__init__(self)
1505.1.24 by John Arbash Meinel
Updated commit to handle bound branches. Included test to handle commit after merge
1270
        self.branch = branch
1271
        self.master = master
1272
        self.remote = remote
1273
1505.1.25 by John Arbash Meinel
Updated pull. Now all paths which call set_revision_history maintain the branch invariant. All tests pass.
1274
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1275
class OverwriteBoundBranch(BzrError):
1276
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
1277
    _fmt = "Cannot pull --overwrite to a branch which is bound %(branch)s"
2067.3.2 by Martin Pool
Error cleanup review comments:
1278
1505.1.25 by John Arbash Meinel
Updated pull. Now all paths which call set_revision_history maintain the branch invariant. All tests pass.
1279
    def __init__(self, branch):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1280
        BzrError.__init__(self)
1505.1.25 by John Arbash Meinel
Updated pull. Now all paths which call set_revision_history maintain the branch invariant. All tests pass.
1281
        self.branch = branch
1282
1505.1.29 by John Arbash Meinel
Added special exceptions when unable to contact parent branch. Added tests for failure. bind() no longer updates the remote working tree
1283
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1284
class BoundBranchConnectionFailure(BzrError):
1285
2221.5.9 by Dmitry Vasiliev
Removed trailing whitespaces and wrapped all long lines
1286
    _fmt = ("Unable to connect to target of bound branch %(branch)s"
1287
            " => %(target)s: %(error)s")
2067.3.2 by Martin Pool
Error cleanup review comments:
1288
1505.1.29 by John Arbash Meinel
Added special exceptions when unable to contact parent branch. Added tests for failure. bind() no longer updates the remote working tree
1289
    def __init__(self, branch, target, error):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1290
        BzrError.__init__(self)
1505.1.29 by John Arbash Meinel
Added special exceptions when unable to contact parent branch. Added tests for failure. bind() no longer updates the remote working tree
1291
        self.branch = branch
1292
        self.target = target
1293
        self.error = error
1294
1295
5582.9.20 by Jelmer Vernooij
remove some of the weave changes.
1296
class WeaveError(BzrError):
1297
1298
    _fmt = "Error in processing weave: %(msg)s"
1299
1300
    def __init__(self, msg=None):
1301
        BzrError.__init__(self)
1302
        self.msg = msg
1303
1304
1305
class WeaveRevisionAlreadyPresent(WeaveError):
1306
1307
    _fmt = "Revision {%(revision_id)s} already present in %(weave)s"
1308
1309
    def __init__(self, revision_id, weave):
1310
1311
        WeaveError.__init__(self)
1312
        self.revision_id = revision_id
1313
        self.weave = weave
1314
1315
1316
class WeaveRevisionNotPresent(WeaveError):
1317
1318
    _fmt = "Revision {%(revision_id)s} not present in %(weave)s"
1319
1320
    def __init__(self, revision_id, weave):
1321
        WeaveError.__init__(self)
1322
        self.revision_id = revision_id
1323
        self.weave = weave
1324
1325
1326
class WeaveFormatError(WeaveError):
1327
1328
    _fmt = "Weave invariant violated: %(what)s"
1329
1330
    def __init__(self, what):
1331
        WeaveError.__init__(self)
1332
        self.what = what
1333
1334
1335
class WeaveParentMismatch(WeaveError):
1336
1337
    _fmt = "Parents are mismatched between two revisions. %(msg)s"
1338
1339
1340
class WeaveInvalidChecksum(WeaveError):
1341
1342
    _fmt = "Text did not match its checksum: %(msg)s"
1343
1344
1345
class WeaveTextDiffers(WeaveError):
1346
1347
    _fmt = ("Weaves differ on text content. Revision:"
1348
            " {%(revision_id)s}, %(weave_a)s, %(weave_b)s")
1349
1350
    def __init__(self, revision_id, weave_a, weave_b):
1351
        WeaveError.__init__(self)
1352
        self.revision_id = revision_id
1353
        self.weave_a = weave_a
1354
        self.weave_b = weave_b
1355
1356
1357
class WeaveTextDiffers(WeaveError):
1358
1359
    _fmt = ("Weaves differ on text content. Revision:"
1360
            " {%(revision_id)s}, %(weave_a)s, %(weave_b)s")
1361
1362
    def __init__(self, revision_id, weave_a, weave_b):
1363
        WeaveError.__init__(self)
1364
        self.revision_id = revision_id
1365
        self.weave_a = weave_a
1366
        self.weave_b = weave_b
1367
1368
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1369
class VersionedFileError(BzrError):
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
1370
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1371
    _fmt = "Versioned file error"
1563.2.1 by Robert Collins
Merge in a variation of the versionedfile api from versioned-file.
1372
1373
1374
class RevisionNotPresent(VersionedFileError):
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
1375
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
1376
    _fmt = 'Revision {%(revision_id)s} not present in "%(file_id)s".'
1563.2.1 by Robert Collins
Merge in a variation of the versionedfile api from versioned-file.
1377
1378
    def __init__(self, revision_id, file_id):
1379
        VersionedFileError.__init__(self)
1380
        self.revision_id = revision_id
1381
        self.file_id = file_id
1382
1383
1384
class RevisionAlreadyPresent(VersionedFileError):
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
1385
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
1386
    _fmt = 'Revision {%(revision_id)s} already present in "%(file_id)s".'
1563.2.1 by Robert Collins
Merge in a variation of the versionedfile api from versioned-file.
1387
1388
    def __init__(self, revision_id, file_id):
1389
        VersionedFileError.__init__(self)
1390
        self.revision_id = revision_id
1391
        self.file_id = file_id
1392
1393
2520.4.71 by Aaron Bentley
Update test to accept VersionedFileInvalidChecksum instead of TestamentMismatch
1394
class VersionedFileInvalidChecksum(VersionedFileError):
1395
5050.8.1 by Parth Malwankar
added test to ensure that BzrError subclasses dont use "message" as a name
1396
    _fmt = "Text did not match its checksum: %(msg)s"
2520.4.71 by Aaron Bentley
Update test to accept VersionedFileInvalidChecksum instead of TestamentMismatch
1397
1398
2871.1.1 by Robert Collins
* New class ``bzrlib.errors.InternalBzrError`` which is just a convenient
1399
class KnitError(InternalBzrError):
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
1400
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1401
    _fmt = "Knit error"
1563.2.1 by Robert Collins
Merge in a variation of the versionedfile api from versioned-file.
1402
1403
2535.3.4 by Andrew Bennetts
Simple implementation of Knit.insert_data_stream.
1404
class KnitCorrupt(KnitError):
1405
1406
    _fmt = "Knit %(filename)s corrupt: %(how)s"
1407
1408
    def __init__(self, filename, how):
1409
        KnitError.__init__(self)
1410
        self.filename = filename
1411
        self.how = how
1412
1413
3787.1.1 by Robert Collins
Embed the failed text in sha1 knit errors.
1414
class SHA1KnitCorrupt(KnitCorrupt):
1415
3787.1.2 by Robert Collins
Ensure SHA1KnitCorrupt formats ok.
1416
    _fmt = ("Knit %(filename)s corrupt: sha-1 of reconstructed text does not "
3787.1.1 by Robert Collins
Embed the failed text in sha1 knit errors.
1417
        "match expected sha-1. key %(key)s expected sha %(expected)s actual "
3787.1.2 by Robert Collins
Ensure SHA1KnitCorrupt formats ok.
1418
        "sha %(actual)s")
3787.1.1 by Robert Collins
Embed the failed text in sha1 knit errors.
1419
1420
    def __init__(self, filename, actual, expected, key, content):
1421
        KnitError.__init__(self)
1422
        self.filename = filename
1423
        self.actual = actual
1424
        self.expected = expected
1425
        self.key = key
1426
        self.content = content
1427
1428
2535.3.4 by Andrew Bennetts
Simple implementation of Knit.insert_data_stream.
1429
class KnitDataStreamIncompatible(KnitError):
3052.2.5 by Andrew Bennetts
Address the rest of the review comments from John and myself.
1430
    # Not raised anymore, as we can convert data streams.  In future we may
1431
    # need it again for more exotic cases, so we're keeping it around for now.
2535.3.4 by Andrew Bennetts
Simple implementation of Knit.insert_data_stream.
1432
1433
    _fmt = "Cannot insert knit data stream of format \"%(stream_format)s\" into knit of format \"%(target_format)s\"."
1434
1435
    def __init__(self, stream_format, target_format):
1436
        self.stream_format = stream_format
1437
        self.target_format = target_format
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
1438
2535.3.4 by Andrew Bennetts
Simple implementation of Knit.insert_data_stream.
1439
3052.2.1 by Robert Collins
Add a new KnitDataStreamUnknown error class for showing formats we can't understand.
1440
class KnitDataStreamUnknown(KnitError):
1441
    # Indicates a data stream we don't know how to handle.
1442
1443
    _fmt = "Cannot parse knit data stream of format \"%(stream_format)s\"."
1444
1445
    def __init__(self, stream_format):
1446
        self.stream_format = stream_format
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
1447
3052.2.1 by Robert Collins
Add a new KnitDataStreamUnknown error class for showing formats we can't understand.
1448
1563.2.1 by Robert Collins
Merge in a variation of the versionedfile api from versioned-file.
1449
class KnitHeaderError(KnitError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1450
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
1451
    _fmt = 'Knit header error: %(badline)r unexpected for file "%(filename)s".'
1563.2.1 by Robert Collins
Merge in a variation of the versionedfile api from versioned-file.
1452
2171.1.1 by John Arbash Meinel
Knit index files should ignore empty indexes rather than consider them corrupt.
1453
    def __init__(self, badline, filename):
1563.2.1 by Robert Collins
Merge in a variation of the versionedfile api from versioned-file.
1454
        KnitError.__init__(self)
1455
        self.badline = badline
2171.1.1 by John Arbash Meinel
Knit index files should ignore empty indexes rather than consider them corrupt.
1456
        self.filename = filename
1563.2.1 by Robert Collins
Merge in a variation of the versionedfile api from versioned-file.
1457
2196.2.5 by John Arbash Meinel
Add an exception class when the knit index storage method is unknown, and properly test for it
1458
class KnitIndexUnknownMethod(KnitError):
1459
    """Raised when we don't understand the storage method.
1460
1461
    Currently only 'fulltext' and 'line-delta' are supported.
1462
    """
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
1463
2196.2.5 by John Arbash Meinel
Add an exception class when the knit index storage method is unknown, and properly test for it
1464
    _fmt = ("Knit index %(filename)s does not have a known method"
1465
            " in options: %(options)r")
1466
1467
    def __init__(self, filename, options):
1468
        KnitError.__init__(self)
1469
        self.filename = filename
1470
        self.options = options
1471
1472
3789.2.1 by John Arbash Meinel
_DirectPackAccess can now raise RetryWithNewPacks when we think something has happened.
1473
class RetryWithNewPacks(BzrError):
1474
    """Raised when we realize that the packs on disk have changed.
1475
1476
    This is meant as more of a signaling exception, to trap between where a
1477
    local error occurred and the code that can actually handle the error and
1478
    code that can retry appropriately.
1479
    """
1480
1481
    internal_error = True
1482
3789.2.27 by John Arbash Meinel
Add some context information to the Retry exceptions.
1483
    _fmt = ("Pack files have changed, reload and retry. context: %(context)s"
1484
            " %(orig_error)s")
3789.2.1 by John Arbash Meinel
_DirectPackAccess can now raise RetryWithNewPacks when we think something has happened.
1485
3789.2.27 by John Arbash Meinel
Add some context information to the Retry exceptions.
1486
    def __init__(self, context, reload_occurred, exc_info):
3789.2.20 by John Arbash Meinel
The autopack code can now trigger itself to retry when _copy_revision_texts fails.
1487
        """create a new RetryWithNewPacks error.
3789.2.1 by John Arbash Meinel
_DirectPackAccess can now raise RetryWithNewPacks when we think something has happened.
1488
1489
        :param reload_occurred: Set to True if we know that the packs have
1490
            already been reloaded, and we are failing because of an in-memory
1491
            cache miss. If set to True then we will ignore if a reload says
1492
            nothing has changed, because we assume it has already reloaded. If
1493
            False, then a reload with nothing changed will force an error.
1494
        :param exc_info: The original exception traceback, so if there is a
1495
            problem we can raise the original error (value from sys.exc_info())
1496
        """
1497
        BzrError.__init__(self)
5609.58.1 by Andrew Bennetts
Fix 'Unprintable exception' when displaying RetryWithNewPacks error.
1498
        self.context = context
3789.2.1 by John Arbash Meinel
_DirectPackAccess can now raise RetryWithNewPacks when we think something has happened.
1499
        self.reload_occurred = reload_occurred
1500
        self.exc_info = exc_info
3789.2.10 by John Arbash Meinel
The first function for KnitVersionedFiles can now retry on request.
1501
        self.orig_error = exc_info[1]
3789.2.1 by John Arbash Meinel
_DirectPackAccess can now raise RetryWithNewPacks when we think something has happened.
1502
        # TODO: The global error handler should probably treat this by
1503
        #       raising/printing the original exception with a bit about
1504
        #       RetryWithNewPacks also not being caught
1505
1506
3789.2.20 by John Arbash Meinel
The autopack code can now trigger itself to retry when _copy_revision_texts fails.
1507
class RetryAutopack(RetryWithNewPacks):
1508
    """Raised when we are autopacking and we find a missing file.
1509
1510
    Meant as a signaling exception, to tell the autopack code it should try
1511
    again.
1512
    """
1513
3789.2.22 by John Arbash Meinel
We need the Packer class to cleanup if it is getting a Retry it isn't handling.
1514
    internal_error = True
1515
3789.2.27 by John Arbash Meinel
Add some context information to the Retry exceptions.
1516
    _fmt = ("Pack files have changed, reload and try autopack again."
1517
            " context: %(context)s %(orig_error)s")
3789.2.20 by John Arbash Meinel
The autopack code can now trigger itself to retry when _copy_revision_texts fails.
1518
1519
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1520
class NoSuchExportFormat(BzrError):
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
1521
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1522
    _fmt = "Export format %(format)r not supported"
1523
1185.31.12 by John Arbash Meinel
Refactored the export code to make it easier to add new export formats.
1524
    def __init__(self, format):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1525
        BzrError.__init__(self)
1185.31.12 by John Arbash Meinel
Refactored the export code to make it easier to add new export formats.
1526
        self.format = format
1527
1528
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1529
class TransportError(BzrError):
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
1530
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1531
    _fmt = "Transport error: %(msg)s %(orig_error)s"
1824.2.1 by Johan Rydberg
Let TransportError inherit BzrNerError.
1532
1185.11.9 by John Arbash Meinel
Most tests pass, some problems with unavailable socket recv
1533
    def __init__(self, msg=None, orig_error=None):
1534
        if msg is None and orig_error is not None:
1535
            msg = str(orig_error)
1824.2.1 by Johan Rydberg
Let TransportError inherit BzrNerError.
1536
        if orig_error is None:
1537
            orig_error = ''
1538
        if msg is None:
1539
            msg =  ''
1185.11.9 by John Arbash Meinel
Most tests pass, some problems with unavailable socket recv
1540
        self.msg = msg
1541
        self.orig_error = orig_error
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1542
        BzrError.__init__(self)
1185.11.9 by John Arbash Meinel
Most tests pass, some problems with unavailable socket recv
1543
1551.2.1 by Aaron Bentley
recommit 1527 PEP8 fixes
1544
2871.1.1 by Robert Collins
* New class ``bzrlib.errors.InternalBzrError`` which is just a convenient
1545
class TooManyConcurrentRequests(InternalBzrError):
2067.3.3 by Martin Pool
merge bzr.dev and reconcile several changes, also some test fixes
1546
2221.5.9 by Dmitry Vasiliev
Removed trailing whitespaces and wrapped all long lines
1547
    _fmt = ("The medium '%(medium)s' has reached its concurrent request limit."
2221.5.14 by Dmitry Vasiliev
Wrapped long lines
1548
            " Be sure to finish_writing and finish_reading on the"
2018.5.134 by Andrew Bennetts
Fix the TooManyConcurrentRequests error message.
1549
            " currently open request.")
2067.3.3 by Martin Pool
merge bzr.dev and reconcile several changes, also some test fixes
1550
1551
    def __init__(self, medium):
1552
        self.medium = medium
1185.11.9 by John Arbash Meinel
Most tests pass, some problems with unavailable socket recv
1553
1551.2.1 by Aaron Bentley
recommit 1527 PEP8 fixes
1554
1910.19.14 by Robert Collins
Fix up all tests to pass, remove a couple more deprecated function calls, and break the dependency on sftp for the smart transport.
1555
class SmartProtocolError(TransportError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1556
1557
    _fmt = "Generic bzr smart protocol error: %(details)s"
1910.19.13 by Andrew Bennetts
Address various review comments.
1558
1559
    def __init__(self, details):
1560
        self.details = details
1561
1562
3245.4.42 by Andrew Bennetts
Make _SmartClient automatically detect and use the highest protocol version compatible with the server.
1563
class UnexpectedProtocolVersionMarker(TransportError):
1564
3245.4.56 by Andrew Bennetts
Clearer message for UnexpectedProtocolVersionMarker.
1565
    _fmt = "Received bad protocol version marker: %(marker)r"
3245.4.42 by Andrew Bennetts
Make _SmartClient automatically detect and use the highest protocol version compatible with the server.
1566
1567
    def __init__(self, marker):
1568
        self.marker = marker
1569
1570
3297.3.1 by Andrew Bennetts
Raise UnknownSmartMethod automatically from read_response_tuple.
1571
class UnknownSmartMethod(InternalBzrError):
1572
1573
    _fmt = "The server does not recognise the '%(verb)s' request."
1574
1575
    def __init__(self, verb):
1576
        self.verb = verb
1577
1578
3245.4.49 by Andrew Bennetts
Distinguish between errors in decoding a message into message parts from errors in handling decoded message parts, and use that to make sure that entire requests are read even when they result in exceptions.
1579
class SmartMessageHandlerError(InternalBzrError):
1580
3695.2.2 by Andrew Bennetts
Rough cut of implementing and using a VersionedFiles.get_parent_map RPC.
1581
    _fmt = ("The message handler raised an exception:\n"
3883.2.3 by Andrew Bennetts
Add test, tweak traceback formatting.
1582
            "%(traceback_text)s")
3245.4.49 by Andrew Bennetts
Distinguish between errors in decoding a message into message parts from errors in handling decoded message parts, and use that to make sure that entire requests are read even when they result in exceptions.
1583
1584
    def __init__(self, exc_info):
3695.2.2 by Andrew Bennetts
Rough cut of implementing and using a VersionedFiles.get_parent_map RPC.
1585
        import traceback
5340.15.1 by John Arbash Meinel
supersede exc-info branch
1586
        # GZ 2010-08-10: Cycle with exc_tb/exc_info affects at least one test
3695.2.2 by Andrew Bennetts
Rough cut of implementing and using a VersionedFiles.get_parent_map RPC.
1587
        self.exc_type, self.exc_value, self.exc_tb = exc_info
1588
        self.exc_info = exc_info
3883.2.3 by Andrew Bennetts
Add test, tweak traceback formatting.
1589
        traceback_strings = traceback.format_exception(
1590
                self.exc_type, self.exc_value, self.exc_tb)
1591
        self.traceback_text = ''.join(traceback_strings)
3695.2.2 by Andrew Bennetts
Rough cut of implementing and using a VersionedFiles.get_parent_map RPC.
1592
3245.4.49 by Andrew Bennetts
Distinguish between errors in decoding a message into message parts from errors in handling decoded message parts, and use that to make sure that entire requests are read even when they result in exceptions.
1593
1185.11.9 by John Arbash Meinel
Most tests pass, some problems with unavailable socket recv
1594
# A set of semi-meaningful errors which can be thrown
1595
class TransportNotPossible(TransportError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1596
1597
    _fmt = "Transport operation not possible: %(msg)s %(orig_error)s"
1185.11.9 by John Arbash Meinel
Most tests pass, some problems with unavailable socket recv
1598
1185.31.44 by John Arbash Meinel
Cleaned up Exceptions for all transports.
1599
1600
class ConnectionError(TransportError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1601
1602
    _fmt = "Connection error: %(msg)s %(orig_error)s"
1185.31.44 by John Arbash Meinel
Cleaned up Exceptions for all transports.
1603
1185.11.9 by John Arbash Meinel
Most tests pass, some problems with unavailable socket recv
1604
2052.4.4 by John Arbash Meinel
Create a SocketConnectionError to make creating nice errors easier
1605
class SocketConnectionError(ConnectionError):
2067.3.3 by Martin Pool
merge bzr.dev and reconcile several changes, also some test fixes
1606
1607
    _fmt = "%(msg)s %(host)s%(port)s%(orig_error)s"
2052.4.4 by John Arbash Meinel
Create a SocketConnectionError to make creating nice errors easier
1608
1609
    def __init__(self, host, port=None, msg=None, orig_error=None):
1610
        if msg is None:
1611
            msg = 'Failed to connect to'
1612
        if orig_error is None:
1613
            orig_error = ''
1614
        else:
1615
            orig_error = '; ' + str(orig_error)
1616
        ConnectionError.__init__(self, msg=msg, orig_error=orig_error)
1617
        self.host = host
1618
        if port is None:
1619
            self.port = ''
1620
        else:
1621
            self.port = ':%s' % port
1622
1623
4070.8.1 by Martin Pool
Remove 'try -Dhpss' from error messages
1624
# XXX: This is also used for unexpected end of file, which is different at the
1625
# TCP level from "connection reset".
1185.11.9 by John Arbash Meinel
Most tests pass, some problems with unavailable socket recv
1626
class ConnectionReset(TransportError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1627
1628
    _fmt = "Connection closed: %(msg)s %(orig_error)s"
1185.11.9 by John Arbash Meinel
Most tests pass, some problems with unavailable socket recv
1629
1551.2.1 by Aaron Bentley
recommit 1527 PEP8 fixes
1630
6133.4.11 by John Arbash Meinel
It turns out that if we don't explicitly close the socket, it hangs around somewhere.
1631
class ConnectionTimeout(ConnectionError):
1632
6133.4.34 by John Arbash Meinel
get the blackbox tests passing.
1633
    _fmt = "Connection Timeout: %(msg)s%(orig_error)s"
6133.4.11 by John Arbash Meinel
It turns out that if we don't explicitly close the socket, it hangs around somewhere.
1634
1635
1786.1.8 by John Arbash Meinel
[merge] Johan Rydberg test updates
1636
class InvalidRange(TransportError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1637
3059.2.2 by Vincent Ladeuil
Read http responses on demand without buffering the whole body
1638
    _fmt = "Invalid range access in %(path)s at %(offset)s: %(msg)s"
1639
1640
    def __init__(self, path, offset, msg=None):
1641
        TransportError.__init__(self, msg)
1979.1.1 by John Arbash Meinel
Fix bug #57723, parse boundary="" correctly, since Squid uses it
1642
        self.path = path
1643
        self.offset = offset
1786.1.8 by John Arbash Meinel
[merge] Johan Rydberg test updates
1644
1645
1786.1.17 by John Arbash Meinel
Adding tests for _parse_boundary.
1646
class InvalidHttpResponse(TransportError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1647
5609.39.8 by Vincent Ladeuil
Stop swallowing details about the original error
1648
    _fmt = "Invalid http response for %(path)s: %(msg)s%(orig_error)s"
1786.1.17 by John Arbash Meinel
Adding tests for _parse_boundary.
1649
1786.1.31 by John Arbash Meinel
Update http errors to properly use BzrNewError
1650
    def __init__(self, path, msg, orig_error=None):
1786.1.17 by John Arbash Meinel
Adding tests for _parse_boundary.
1651
        self.path = path
5609.39.8 by Vincent Ladeuil
Stop swallowing details about the original error
1652
        if orig_error is None:
1653
            orig_error = ''
1654
        else:
1655
            # This is reached for obscure and unusual errors so we want to
1656
            # preserve as much info as possible to ease debug.
1657
            orig_error = ': %r' % (orig_error,)
1786.1.31 by John Arbash Meinel
Update http errors to properly use BzrNewError
1658
        TransportError.__init__(self, msg, orig_error=orig_error)
1786.1.17 by John Arbash Meinel
Adding tests for _parse_boundary.
1659
1660
1661
class InvalidHttpRange(InvalidHttpResponse):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1662
1663
    _fmt = "Invalid http range %(range)r for %(path)s: %(msg)s"
3059.2.2 by Vincent Ladeuil
Read http responses on demand without buffering the whole body
1664
1786.1.13 by John Arbash Meinel
Found a few bugs in error handling code, updated tests
1665
    def __init__(self, path, range, msg):
1666
        self.range = range
1786.1.17 by John Arbash Meinel
Adding tests for _parse_boundary.
1667
        InvalidHttpResponse.__init__(self, path, msg)
1668
1669
5609.52.1 by Martin Pool
Cope with buggy squids interrupting the response before a mime multipart boundary
1670
class HttpBoundaryMissing(InvalidHttpResponse):
1671
    """A multipart response ends with no boundary marker.
1672
1673
    This is a special case caused by buggy proxies, described in
1674
    <https://bugs.launchpad.net/bzr/+bug/198646>.
1675
    """
1676
1677
    _fmt = "HTTP MIME Boundary missing for %(path)s: %(msg)s"
1678
1679
    def __init__(self, path, msg):
1680
        InvalidHttpResponse.__init__(self, path, msg)
1681
1682
1786.1.17 by John Arbash Meinel
Adding tests for _parse_boundary.
1683
class InvalidHttpContentType(InvalidHttpResponse):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1684
1685
    _fmt = 'Invalid http Content-type "%(ctype)s" for %(path)s: %(msg)s'
3059.2.2 by Vincent Ladeuil
Read http responses on demand without buffering the whole body
1686
1786.1.17 by John Arbash Meinel
Adding tests for _parse_boundary.
1687
    def __init__(self, path, ctype, msg):
1688
        self.ctype = ctype
1689
        InvalidHttpResponse.__init__(self, path, msg)
1786.1.13 by John Arbash Meinel
Found a few bugs in error handling code, updated tests
1690
1691
2164.2.1 by v.ladeuil+lp at free
First rough http branch redirection implementation.
1692
class RedirectRequested(TransportError):
1693
1694
    _fmt = '%(source)s is%(permanently)s redirected to %(target)s'
1695
3878.4.4 by Vincent Ladeuil
Cleanup.
1696
    def __init__(self, source, target, is_permanent=False):
2164.2.1 by v.ladeuil+lp at free
First rough http branch redirection implementation.
1697
        self.source = source
1698
        self.target = target
2949.4.1 by Vincent Ladeuil
Fix typo (is_permament => is_permanent) reported on IRC
1699
        if is_permanent:
2164.2.1 by v.ladeuil+lp at free
First rough http branch redirection implementation.
1700
            self.permanently = ' permanently'
1701
        else:
1702
            self.permanently = ''
2164.2.7 by v.ladeuil+lp at free
First implementation of transport hints.
1703
        TransportError.__init__(self)
1704
2164.2.22 by Vincent Ladeuil
Take Aaron's review comments into account.
1705
1706
class TooManyRedirections(TransportError):
1707
1708
    _fmt = "Too many redirections"
2164.2.7 by v.ladeuil+lp at free
First implementation of transport hints.
1709
2930.1.1 by Ian Clatworthy
error msg instead of assert when connection over bzr+ssh fails (#115601)
1710
1185.14.10 by Aaron Bentley
Commit aborts with conflicts in the tree.
1711
class ConflictsInTree(BzrError):
2067.3.2 by Martin Pool
Error cleanup review comments:
1712
1713
    _fmt = "Working tree has conflicts."
1185.12.49 by Aaron Bentley
Switched to ConfigObj
1714
1551.2.1 by Aaron Bentley
recommit 1527 PEP8 fixes
1715
5987.1.3 by Vincent Ladeuil
Proper message when authentication.conf has non-utf8 content
1716
class ConfigContentError(BzrError):
1717
1718
    _fmt = "Config file %(filename)s is not UTF-8 encoded\n"
1719
1720
    def __init__(self, filename):
1721
        BzrError.__init__(self)
1722
        self.filename = filename
1723
1724
1185.12.49 by Aaron Bentley
Switched to ConfigObj
1725
class ParseConfigError(BzrError):
2067.3.2 by Martin Pool
Error cleanup review comments:
1726
5743.2.7 by Vincent Ladeuil
Implement loading a config store from a string or a file.
1727
    _fmt = "Error(s) parsing config file %(filename)s:\n%(errors)s"
1728
1185.12.49 by Aaron Bentley
Switched to ConfigObj
1729
    def __init__(self, errors, filename):
5743.2.7 by Vincent Ladeuil
Implement loading a config store from a string or a file.
1730
        BzrError.__init__(self)
1731
        self.filename = filename
1732
        self.errors = '\n'.join(e.msg for e in errors)
1185.12.52 by Aaron Bentley
Merged more config stuff from Robert
1733
1551.2.1 by Aaron Bentley
recommit 1527 PEP8 fixes
1734
6059.1.5 by Vincent Ladeuil
Handle invalid config option values.
1735
class ConfigOptionValueError(BzrError):
1736
1737
    _fmt = """Bad value "%(value)s" for option "%(name)s"."""
1738
1739
    def __init__(self, name, value):
1740
        BzrError.__init__(self, name=name, value=value)
1741
1742
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1743
class NoEmailInUsername(BzrError):
1744
1745
    _fmt = "%(username)r does not seem to contain a reasonable email address"
2055.2.2 by John Arbash Meinel
Switch extract_email_address() to use a more specific exception
1746
1747
    def __init__(self, username):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1748
        BzrError.__init__(self)
2055.2.2 by John Arbash Meinel
Switch extract_email_address() to use a more specific exception
1749
        self.username = username
1750
1751
1442.1.58 by Robert Collins
gpg signing of content
1752
class SigningFailed(BzrError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1753
5971.1.5 by Jonathan Riddell
catch errors from gpgme, implement verify in dummy gpg strategies
1754
    _fmt = 'Failed to GPG sign data with command "%(command_line)s"'
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1755
1442.1.58 by Robert Collins
gpg signing of content
1756
    def __init__(self, command_line):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1757
        BzrError.__init__(self, command_line=command_line)
1185.12.83 by Aaron Bentley
Preliminary weave merge support
1758
1551.2.1 by Aaron Bentley
recommit 1527 PEP8 fixes
1759
5971.1.33 by Jonathan Riddell
rename errors.VerifyFailed to errors.SignatureVerificationFailed
1760
class SignatureVerificationFailed(BzrError):
5971.1.5 by Jonathan Riddell
catch errors from gpgme, implement verify in dummy gpg strategies
1761
1762
    _fmt = 'Failed to verify GPG signature data with error "%(error)s"'
1763
1764
    def __init__(self, error):
1765
        BzrError.__init__(self, error=error)
1766
1767
5971.1.35 by Jonathan Riddell
set gpgme in tests.features
1768
class DependencyNotPresent(BzrError):
1769
1770
    _fmt = 'Unable to import library "%(library)s": %(error)s'
1771
1772
    def __init__(self, library, error):
1773
        BzrError.__init__(self, library=library, error=error)
1774
1775
5971.1.34 by Jonathan Riddell
make GpgmeNotInstalled inherit from DependencyNotPresent
1776
class GpgmeNotInstalled(DependencyNotPresent):
5971.1.4 by Jonathan Riddell
tidy up repository and gpg.py
1777
1778
    _fmt = 'python-gpgme is not installed, it is needed to verify signatures'
1779
5971.1.34 by Jonathan Riddell
make GpgmeNotInstalled inherit from DependencyNotPresent
1780
    def __init__(self, error):
1781
        DependencyNotPresent.__init__(self, 'gpgme', error)
1782
5971.1.4 by Jonathan Riddell
tidy up repository and gpg.py
1783
1185.12.83 by Aaron Bentley
Preliminary weave merge support
1784
class WorkingTreeNotRevision(BzrError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1785
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
1786
    _fmt = ("The working tree for %(basedir)s has changed since"
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1787
            " the last commit, but weave merge requires that it be"
1788
            " unchanged")
1789
1185.12.83 by Aaron Bentley
Preliminary weave merge support
1790
    def __init__(self, tree):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1791
        BzrError.__init__(self, basedir=tree.basedir)
1792
1793
1794
class CantReprocessAndShowBase(BzrError):
1795
2221.5.9 by Dmitry Vasiliev
Removed trailing whitespaces and wrapped all long lines
1796
    _fmt = ("Can't reprocess and show base, because reprocessing obscures "
1797
           "the relationship of conflicting lines to the base")
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1798
1799
1800
class GraphCycleError(BzrError):
1801
1802
    _fmt = "Cycle in graph %(graph)r"
2067.3.2 by Martin Pool
Error cleanup review comments:
1803
1185.16.114 by mbp at sourcefrog
Improved topological sort
1804
    def __init__(self, graph):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1805
        BzrError.__init__(self)
1185.16.114 by mbp at sourcefrog
Improved topological sort
1806
        self.graph = graph
1185.35.1 by Aaron Bentley
Implemented conflicts.restore
1807
1505.1.23 by John Arbash Meinel
Whitespace cleanup of bzrlib.errors
1808
2871.1.1 by Robert Collins
* New class ``bzrlib.errors.InternalBzrError`` which is just a convenient
1809
class WritingCompleted(InternalBzrError):
2067.3.3 by Martin Pool
merge bzr.dev and reconcile several changes, also some test fixes
1810
1811
    _fmt = ("The MediumRequest '%(request)s' has already had finish_writing "
1812
            "called upon it - accept bytes may not be called anymore.")
1813
1814
    def __init__(self, request):
1815
        self.request = request
1816
1817
2871.1.1 by Robert Collins
* New class ``bzrlib.errors.InternalBzrError`` which is just a convenient
1818
class WritingNotComplete(InternalBzrError):
2067.3.3 by Martin Pool
merge bzr.dev and reconcile several changes, also some test fixes
1819
1820
    _fmt = ("The MediumRequest '%(request)s' has not has finish_writing "
1821
            "called upon it - until the write phase is complete no "
1822
            "data may be read.")
1823
1824
    def __init__(self, request):
1825
        self.request = request
1826
1827
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1828
class NotConflicted(BzrError):
1829
1830
    _fmt = "File %(filename)s is not conflicted."
1534.3.1 by Robert Collins
* bzrlib.osutils.safe_unicode now exists to provide parameter coercion
1831
1185.35.1 by Aaron Bentley
Implemented conflicts.restore
1832
    def __init__(self, filename):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1833
        BzrError.__init__(self)
1185.35.1 by Aaron Bentley
Implemented conflicts.restore
1834
        self.filename = filename
1185.35.13 by Aaron Bentley
Merged Martin
1835
1505.1.23 by John Arbash Meinel
Whitespace cleanup of bzrlib.errors
1836
2871.1.1 by Robert Collins
* New class ``bzrlib.errors.InternalBzrError`` which is just a convenient
1837
class MediumNotConnected(InternalBzrError):
2067.3.3 by Martin Pool
merge bzr.dev and reconcile several changes, also some test fixes
1838
1839
    _fmt = """The medium '%(medium)s' is not connected."""
1840
2018.2.3 by Andrew Bennetts
Starting factoring out the smart server client "medium" from the protocol.
1841
    def __init__(self, medium):
1842
        self.medium = medium
1843
1844
1492 by Robert Collins
Support decoration of commands.
1845
class MustUseDecorated(Exception):
2221.5.9 by Dmitry Vasiliev
Removed trailing whitespaces and wrapped all long lines
1846
1847
    _fmt = "A decorating function has requested its original command be used."
1848
1185.82.3 by John Arbash Meinel
Working on creating a factor for serializing changesets.
1849
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1850
class NoBundleFound(BzrError):
1851
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
1852
    _fmt = 'No bundle was found in "%(filename)s".'
2067.3.2 by Martin Pool
Error cleanup review comments:
1853
1185.82.3 by John Arbash Meinel
Working on creating a factor for serializing changesets.
1854
    def __init__(self, filename):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1855
        BzrError.__init__(self)
1185.82.3 by John Arbash Meinel
Working on creating a factor for serializing changesets.
1856
        self.filename = filename
1857
1858
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1859
class BundleNotSupported(BzrError):
1860
1861
    _fmt = "Unable to handle bundle version %(version)s: %(msg)s"
2067.3.2 by Martin Pool
Error cleanup review comments:
1862
1185.82.3 by John Arbash Meinel
Working on creating a factor for serializing changesets.
1863
    def __init__(self, version, msg):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1864
        BzrError.__init__(self)
1185.82.3 by John Arbash Meinel
Working on creating a factor for serializing changesets.
1865
        self.version = version
1866
        self.msg = msg
1867
1868
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1869
class MissingText(BzrError):
1870
2221.5.9 by Dmitry Vasiliev
Removed trailing whitespaces and wrapped all long lines
1871
    _fmt = ("Branch %(base)s is missing revision"
1872
            " %(text_revision)s of %(file_id)s")
1534.3.1 by Robert Collins
* bzrlib.osutils.safe_unicode now exists to provide parameter coercion
1873
1185.35.42 by Aaron Bentley
Fixed fetch to be safer wrt ghosts and corrupt branches
1874
    def __init__(self, branch, text_revision, file_id):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1875
        BzrError.__init__(self)
1185.35.42 by Aaron Bentley
Fixed fetch to be safer wrt ghosts and corrupt branches
1876
        self.branch = branch
1877
        self.base = branch.base
1878
        self.text_revision = text_revision
1879
        self.file_id = file_id
1534.7.5 by Aaron Bentley
Got unique_add under test
1880
2671.6.2 by Robert Collins
Prevent the duplicate additions of names to FileNames collections.
1881
2255.7.16 by John Arbash Meinel
Make sure adding a duplicate file_id raises DuplicateFileId.
1882
class DuplicateFileId(BzrError):
1883
1884
    _fmt = "File id {%(file_id)s} already exists in inventory as %(entry)s"
1885
1886
    def __init__(self, file_id, entry):
1887
        BzrError.__init__(self)
1888
        self.file_id = file_id
1889
        self.entry = entry
1890
1891
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1892
class DuplicateKey(BzrError):
1893
1894
    _fmt = "Key %(key)s is already present in map"
1895
1896
2432.1.19 by Robert Collins
Ensure each HelpIndex has a unique prefix.
1897
class DuplicateHelpPrefix(BzrError):
1898
1899
    _fmt = "The prefix %(prefix)s is in the help search path twice."
1900
1901
    def __init__(self, prefix):
1902
        self.prefix = prefix
1903
1904
6015.47.1 by Vincent Ladeuil
Turn MalformedTransform into an InternalBzrError so users get a traceback.
1905
class MalformedTransform(InternalBzrError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1906
1907
    _fmt = "Tree transform is malformed %(conflicts)r"
1908
1909
2067.3.3 by Martin Pool
merge bzr.dev and reconcile several changes, also some test fixes
1910
class NoFinalPath(BzrError):
1911
1912
    _fmt = ("No final name for trans_id %(trans_id)r\n"
1913
            "file-id: %(file_id)r\n"
1914
            "root trans-id: %(root_trans_id)r\n")
1731.1.33 by Aaron Bentley
Revert no-special-root changes
1915
1916
    def __init__(self, trans_id, transform):
1917
        self.trans_id = trans_id
1918
        self.file_id = transform.final_file_id(trans_id)
1919
        self.root_trans_id = transform.root
1920
1921
2871.1.1 by Robert Collins
* New class ``bzrlib.errors.InternalBzrError`` which is just a convenient
1922
class BzrBadParameter(InternalBzrError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1923
1924
    _fmt = "Bad parameter: %(param)r"
2067.3.3 by Martin Pool
merge bzr.dev and reconcile several changes, also some test fixes
1925
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1926
    # This exception should never be thrown, but it is a base class for all
1927
    # parameter-to-function errors.
1928
1534.3.1 by Robert Collins
* bzrlib.osutils.safe_unicode now exists to provide parameter coercion
1929
    def __init__(self, param):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1930
        BzrError.__init__(self)
1534.3.1 by Robert Collins
* bzrlib.osutils.safe_unicode now exists to provide parameter coercion
1931
        self.param = param
1534.7.32 by Aaron Bentley
Got conflict handling working when conflicts involve existing files
1932
1534.4.3 by Robert Collins
Implement BranchTestProviderAdapter, so tests now run across all branch formats.
1933
1185.65.29 by Robert Collins
Implement final review suggestions.
1934
class BzrBadParameterNotUnicode(BzrBadParameter):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1935
1936
    _fmt = "Parameter %(param)s is neither unicode nor utf8."
1937
5279.2.14 by Eric Moritz
Deleted trailing whitespace
1938
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
1939
class ReusingTransform(BzrError):
1940
1941
    _fmt = "Attempt to reuse a transform that has already been applied."
1942
1943
1944
class CantMoveRoot(BzrError):
1945
1946
    _fmt = "Moving the root directory is not supported at this time"
5279.2.14 by Eric Moritz
Deleted trailing whitespace
1947
1948
5186.2.5 by Martin Pool
Raise a specific clearer error when a rename fails inside transform
1949
class TransformRenameFailed(BzrError):
1950
1951
    _fmt = "Failed to rename %(from_path)s to %(to_path)s: %(why)s"
5279.2.14 by Eric Moritz
Deleted trailing whitespace
1952
5186.2.7 by Martin Pool
Update other cases where transform detects failure to rename
1953
    def __init__(self, from_path, to_path, why, errno):
5186.2.5 by Martin Pool
Raise a specific clearer error when a rename fails inside transform
1954
        self.from_path = from_path
1955
        self.to_path = to_path
1956
        self.why = why
5186.2.7 by Martin Pool
Update other cases where transform detects failure to rename
1957
        self.errno = errno
1185.65.29 by Robert Collins
Implement final review suggestions.
1958
1534.7.120 by Aaron Bentley
PEP8 fixes
1959
2206.1.9 by Marius Kruger
* Change move/rename errors yet again
1960
class BzrMoveFailedError(BzrError):
2220.1.9 by Marius Kruger
Remove all trailing white space this bundle would have
1961
5609.8.3 by Martin
Ugly cheaty hack to make BzrMoveFailedError do something reasonable with non-ascii contents
1962
    _fmt = ("Could not move %(from_path)s%(operator)s %(to_path)s"
1963
        "%(_has_extra)s%(extra)s")
2206.1.9 by Marius Kruger
* Change move/rename errors yet again
1964
2220.1.3 by Marius Kruger
* errors.py
1965
    def __init__(self, from_path='', to_path='', extra=None):
3224.5.1 by Andrew Bennetts
Lots of assorted hackery to reduce the number of imports for common operations. Improves 'rocks', 'st' and 'help' times by ~50ms on my laptop.
1966
        from bzrlib.osutils import splitpath
2206.1.9 by Marius Kruger
* Change move/rename errors yet again
1967
        BzrError.__init__(self)
1968
        if extra:
5609.8.3 by Martin
Ugly cheaty hack to make BzrMoveFailedError do something reasonable with non-ascii contents
1969
            self.extra, self._has_extra = extra, ': '
2206.1.9 by Marius Kruger
* Change move/rename errors yet again
1970
        else:
5609.8.3 by Martin
Ugly cheaty hack to make BzrMoveFailedError do something reasonable with non-ascii contents
1971
            self.extra = self._has_extra = ''
2220.1.9 by Marius Kruger
Remove all trailing white space this bundle would have
1972
2206.1.9 by Marius Kruger
* Change move/rename errors yet again
1973
        has_from = len(from_path) > 0
1974
        has_to = len(to_path) > 0
1975
        if has_from:
3224.5.1 by Andrew Bennetts
Lots of assorted hackery to reduce the number of imports for common operations. Improves 'rocks', 'st' and 'help' times by ~50ms on my laptop.
1976
            self.from_path = splitpath(from_path)[-1]
2206.1.9 by Marius Kruger
* Change move/rename errors yet again
1977
        else:
1978
            self.from_path = ''
2220.1.9 by Marius Kruger
Remove all trailing white space this bundle would have
1979
2206.1.9 by Marius Kruger
* Change move/rename errors yet again
1980
        if has_to:
3224.5.1 by Andrew Bennetts
Lots of assorted hackery to reduce the number of imports for common operations. Improves 'rocks', 'st' and 'help' times by ~50ms on my laptop.
1981
            self.to_path = splitpath(to_path)[-1]
2206.1.9 by Marius Kruger
* Change move/rename errors yet again
1982
        else:
1983
            self.to_path = ''
1984
1985
        self.operator = ""
1986
        if has_from and has_to:
1987
            self.operator = " =>"
2220.1.9 by Marius Kruger
Remove all trailing white space this bundle would have
1988
        elif has_from:
2206.1.9 by Marius Kruger
* Change move/rename errors yet again
1989
            self.from_path = "from " + from_path
1990
        elif has_to:
1991
            self.operator = "to"
1992
        else:
1993
            self.operator = "file"
1994
1995
1996
class BzrRenameFailedError(BzrMoveFailedError):
2220.1.9 by Marius Kruger
Remove all trailing white space this bundle would have
1997
5609.8.3 by Martin
Ugly cheaty hack to make BzrMoveFailedError do something reasonable with non-ascii contents
1998
    _fmt = ("Could not rename %(from_path)s%(operator)s %(to_path)s"
1999
        "%(_has_extra)s%(extra)s")
2220.1.9 by Marius Kruger
Remove all trailing white space this bundle would have
2000
2206.1.9 by Marius Kruger
* Change move/rename errors yet again
2001
    def __init__(self, from_path, to_path, extra=None):
2002
        BzrMoveFailedError.__init__(self, from_path, to_path, extra)
2003
5609.8.3 by Martin
Ugly cheaty hack to make BzrMoveFailedError do something reasonable with non-ascii contents
2004
1185.65.29 by Robert Collins
Implement final review suggestions.
2005
class BzrBadParameterNotString(BzrBadParameter):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2006
2007
    _fmt = "Parameter %(param)s is not a string or unicode string."
1185.62.24 by John Arbash Meinel
Changing the exception that sftp.py throws when it can't find paramiko, so that the test suite can handle it.
2008
2009
1534.4.44 by Robert Collins
Make a new BzrDir format that uses a versioned branch format in a branch/ subdirectory.
2010
class BzrBadParameterMissing(BzrBadParameter):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2011
5609.1.1 by Vincent Ladeuil
Release 2.3b5
2012
    _fmt = "Parameter %(param)s is required but not present."
1534.4.44 by Robert Collins
Make a new BzrDir format that uses a versioned branch format in a branch/ subdirectory.
2013
2014
1666.1.6 by Robert Collins
Make knit the default format.
2015
class BzrBadParameterUnicode(BzrBadParameter):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2016
2221.5.9 by Dmitry Vasiliev
Removed trailing whitespaces and wrapped all long lines
2017
    _fmt = ("Parameter %(param)s is unicode but"
2018
            " only byte-strings are permitted.")
1666.1.6 by Robert Collins
Make knit the default format.
2019
2020
2021
class BzrBadParameterContainsNewline(BzrBadParameter):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2022
2023
    _fmt = "Parameter %(param)s contains a newline."
2024
2025
1185.62.24 by John Arbash Meinel
Changing the exception that sftp.py throws when it can't find paramiko, so that the test suite can handle it.
2026
class ParamikoNotPresent(DependencyNotPresent):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2027
2028
    _fmt = "Unable to import paramiko (required for sftp support): %(error)s"
1185.62.24 by John Arbash Meinel
Changing the exception that sftp.py throws when it can't find paramiko, so that the test suite can handle it.
2029
2030
    def __init__(self, error):
2031
        DependencyNotPresent.__init__(self, 'paramiko', error)
2032
2033
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2034
class PointlessMerge(BzrError):
2035
2036
    _fmt = "Nothing to merge."
2037
2038
2039
class UninitializableFormat(BzrError):
2040
2041
    _fmt = "Format %(format)s cannot be initialised by this version of bzr."
1534.4.3 by Robert Collins
Implement BranchTestProviderAdapter, so tests now run across all branch formats.
2042
2043
    def __init__(self, format):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2044
        BzrError.__init__(self)
1534.4.3 by Robert Collins
Implement BranchTestProviderAdapter, so tests now run across all branch formats.
2045
        self.format = format
1551.3.4 by Aaron Bentley
Implemented default command options
2046
1534.7.156 by Aaron Bentley
PEP8 fixes
2047
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2048
class BadConversionTarget(BzrError):
2049
4608.1.3 by Martin Pool
BadConversionTarget error includes source format
2050
    _fmt = "Cannot convert from format %(from_format)s to format %(format)s." \
2051
            "    %(problem)s"
1910.2.12 by Aaron Bentley
Implement knit repo format 2
2052
4608.1.3 by Martin Pool
BadConversionTarget error includes source format
2053
    def __init__(self, problem, format, from_format=None):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2054
        BzrError.__init__(self)
1910.2.12 by Aaron Bentley
Implement knit repo format 2
2055
        self.problem = problem
2056
        self.format = format
4608.1.3 by Martin Pool
BadConversionTarget error includes source format
2057
        self.from_format = from_format or '(unspecified)'
1910.2.12 by Aaron Bentley
Implement knit repo format 2
2058
2059
3009.2.28 by Aaron Bentley
Add from_diff_tree factories
2060
class NoDiffFound(BzrError):
3009.2.19 by Aaron Bentley
Implement directory diffing
2061
2062
    _fmt = 'Could not find an appropriate Differ for file "%(path)s"'
2063
2064
    def __init__(self, path):
2065
        BzrError.__init__(self, path)
2066
2067
3145.1.1 by Aaron Bentley
Handle missing tools gracefully in diff --using
2068
class ExecutableMissing(BzrError):
2069
2070
    _fmt = "%(exe_name)s could not be found on this machine"
2071
2072
    def __init__(self, exe_name):
2073
        BzrError.__init__(self, exe_name=exe_name)
2074
2075
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2076
class NoDiff(BzrError):
2077
2078
    _fmt = "Diff is not installed on this machine: %(msg)s"
1711.2.56 by John Arbash Meinel
Raise NoDiff if 'diff' not present.
2079
2080
    def __init__(self, msg):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2081
        BzrError.__init__(self, msg=msg)
2082
2083
2084
class NoDiff3(BzrError):
2085
2086
    _fmt = "Diff3 is not installed on this machine."
2087
2088
2794.1.1 by Robert Collins
Allow knits to be instructed not to add a text based on a sha, for commit.
2089
class ExistingContent(BzrError):
2794.1.3 by Robert Collins
Review feedback.
2090
    # Added in bzrlib 0.92, used by VersionedFile.add_lines.
2794.1.1 by Robert Collins
Allow knits to be instructed not to add a text based on a sha, for commit.
2091
2092
    _fmt = "The content being inserted is already present."
2093
2094
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2095
class ExistingLimbo(BzrError):
2096
2097
    _fmt = """This tree contains left-over files from a failed operation.
2098
    Please examine %(limbo_dir)s to see if it contains any files you wish to
2099
    keep, and delete it when you are done."""
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
2100
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2101
    def __init__(self, limbo_dir):
2102
       BzrError.__init__(self)
2103
       self.limbo_dir = limbo_dir
2104
2105
2733.2.11 by Aaron Bentley
Detect irregularities with the pending-deletion directory
2106
class ExistingPendingDeletion(BzrError):
2107
2108
    _fmt = """This tree contains left-over files from a failed operation.
2109
    Please examine %(pending_deletion)s to see if it contains any files you
2110
    wish to keep, and delete it when you are done."""
2111
2112
    def __init__(self, pending_deletion):
2113
       BzrError.__init__(self, pending_deletion=pending_deletion)
2114
2115
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2116
class ImmortalLimbo(BzrError):
2117
2775.1.1 by James Westby
Fix the format string for ImmortalLimbo.
2118
    _fmt = """Unable to delete transform temporary directory %(limbo_dir)s.
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2119
    Please examine %(limbo_dir)s to see if it contains any files you wish to
2120
    keep, and delete it when you are done."""
2121
2122
    def __init__(self, limbo_dir):
2123
       BzrError.__init__(self)
2124
       self.limbo_dir = limbo_dir
2125
2126
2733.2.11 by Aaron Bentley
Detect irregularities with the pending-deletion directory
2127
class ImmortalPendingDeletion(BzrError):
2128
2978.2.1 by Alexander Belchenko
fix formatting of ImmortalPendingDeletion error message.
2129
    _fmt = ("Unable to delete transform temporary directory "
2130
    "%(pending_deletion)s.  Please examine %(pending_deletion)s to see if it "
2131
    "contains any files you wish to keep, and delete it when you are done.")
2733.2.11 by Aaron Bentley
Detect irregularities with the pending-deletion directory
2132
2133
    def __init__(self, pending_deletion):
2134
       BzrError.__init__(self, pending_deletion=pending_deletion)
2135
2136
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2137
class OutOfDateTree(BzrError):
2138
4487.2.6 by Vincent Ladeuil
Fixed as per jam's review.
2139
    _fmt = "Working tree is out of date, please run 'bzr update'.%(more)s"
1508.1.25 by Robert Collins
Update per review comments.
2140
4487.2.6 by Vincent Ladeuil
Fixed as per jam's review.
2141
    def __init__(self, tree, more=None):
2142
        if more is None:
2143
            more = ''
2144
        else:
2145
            more = ' ' + more
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2146
        BzrError.__init__(self)
1508.1.25 by Robert Collins
Update per review comments.
2147
        self.tree = tree
4487.2.6 by Vincent Ladeuil
Fixed as per jam's review.
2148
        self.more = more
1534.7.196 by Aaron Bentley
Switched to Rio format for merge-modified list
2149
1563.2.22 by Robert Collins
Move responsibility for repository.has_revision into RevisionStore
2150
1551.12.5 by Aaron Bentley
Get MergeDirective.from_objects working
2151
class PublicBranchOutOfDate(BzrError):
2152
2153
    _fmt = 'Public branch "%(public_location)s" lacks revision '\
2154
        '"%(revstring)s".'
2155
2156
    def __init__(self, public_location, revstring):
2157
        import bzrlib.urlutils as urlutils
2158
        public_location = urlutils.unescape_for_display(public_location,
2159
                                                        'ascii')
2160
        BzrError.__init__(self, public_location=public_location,
2161
                          revstring=revstring)
2162
2163
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2164
class MergeModifiedFormatError(BzrError):
2165
2166
    _fmt = "Error in merge modified format"
2167
2168
2169
class ConflictFormatError(BzrError):
2170
2171
    _fmt = "Format error in conflict listings"
2172
2173
3207.2.1 by jameinel
Add a test that _iter_changes raises a clearer error when we encounter an invalid rename.
2174
class CorruptDirstate(BzrError):
2175
3221.1.3 by Martin Pool
Review cleanups for CorruptDirstate: use the path everywhere rather than the object, and use more standard phrasing.
2176
    _fmt = ("Inconsistency in dirstate file %(dirstate_path)s.\n"
3207.2.1 by jameinel
Add a test that _iter_changes raises a clearer error when we encounter an invalid rename.
2177
            "Error: %(description)s")
2178
3221.1.3 by Martin Pool
Review cleanups for CorruptDirstate: use the path everywhere rather than the object, and use more standard phrasing.
2179
    def __init__(self, dirstate_path, description):
3207.2.1 by jameinel
Add a test that _iter_changes raises a clearer error when we encounter an invalid rename.
2180
        BzrError.__init__(self)
3221.1.3 by Martin Pool
Review cleanups for CorruptDirstate: use the path everywhere rather than the object, and use more standard phrasing.
2181
        self.dirstate_path = dirstate_path
3207.2.1 by jameinel
Add a test that _iter_changes raises a clearer error when we encounter an invalid rename.
2182
        self.description = description
2183
2184
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2185
class CorruptRepository(BzrError):
2186
2221.5.9 by Dmitry Vasiliev
Removed trailing whitespaces and wrapped all long lines
2187
    _fmt = ("An error has been detected in the repository %(repo_path)s.\n"
2188
            "Please run bzr reconcile on this repository.")
1570.1.13 by Robert Collins
Check for incorrect revision parentage in the weave during revision access.
2189
2190
    def __init__(self, repo):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2191
        BzrError.__init__(self)
5158.6.9 by Martin Pool
Simplify various code to use user_url
2192
        self.repo_path = repo.user_url
1587.1.6 by Robert Collins
Update bound branch implementation to 0.8.
2193
2194
3207.2.2 by John Arbash Meinel
Fix bug #187169, when an invalid delta is supplied to update_basis_by_delta
2195
class InconsistentDelta(BzrError):
2196
    """Used when we get a delta that is not valid."""
2197
2198
    _fmt = ("An inconsistent delta was supplied involving %(path)r,"
3221.1.4 by Martin Pool
Fix format string for InconsistentDelta
2199
            " %(file_id)r\nreason: %(reason)s")
3207.2.2 by John Arbash Meinel
Fix bug #187169, when an invalid delta is supplied to update_basis_by_delta
2200
2201
    def __init__(self, path, file_id, reason):
2202
        BzrError.__init__(self)
2203
        self.path = path
2204
        self.file_id = file_id
2205
        self.reason = reason
2206
2207
4505.5.1 by Robert Collins
Add more generic InconsistentDeltaDelta error class for use when the exact cause of an inconsistent delta isn't trivially accessible.
2208
class InconsistentDeltaDelta(InconsistentDelta):
2209
    """Used when we get a delta that is not valid."""
2210
2211
    _fmt = ("An inconsistent delta was supplied: %(delta)r"
2212
            "\nreason: %(reason)s")
2213
2214
    def __init__(self, delta, reason):
2215
        BzrError.__init__(self)
2216
        self.delta = delta
2217
        self.reason = reason
2218
2219
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2220
class UpgradeRequired(BzrError):
2221
2222
    _fmt = "To use this feature you must upgrade your branch at %(path)s."
1587.1.6 by Robert Collins
Update bound branch implementation to 0.8.
2223
2224
    def __init__(self, path):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2225
        BzrError.__init__(self)
1587.1.6 by Robert Collins
Update bound branch implementation to 0.8.
2226
        self.path = path
2227
1587.1.8 by Robert Collins
Local commits on unbound branches fail.
2228
3349.1.2 by Aaron Bentley
Change ValueError to RepositoryUpgradeRequired
2229
class RepositoryUpgradeRequired(UpgradeRequired):
2230
2231
    _fmt = "To use this feature you must upgrade your repository at %(path)s."
2232
2233
4416.6.1 by Neil Martinsen-Burrell
Fix #220067 adding more specificity to the error message when split fails
2234
class RichRootUpgradeRequired(UpgradeRequired):
2235
4446.1.1 by Ian Clatworthy
(igc) better message when split fails (Neil Martinsen-Burrell)
2236
    _fmt = ("To use this feature you must upgrade your branch at %(path)s to"
2237
           " a format which supports rich roots.")
4416.6.1 by Neil Martinsen-Burrell
Fix #220067 adding more specificity to the error message when split fails
2238
2239
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2240
class LocalRequiresBoundBranch(BzrError):
2241
2242
    _fmt = "Cannot perform local-only commits on unbound branches."
2243
2244
2245
class UnsupportedOperation(BzrError):
2246
2221.5.9 by Dmitry Vasiliev
Removed trailing whitespaces and wrapped all long lines
2247
    _fmt = ("The method %(mname)s is not supported on"
2248
            " objects of type %(tname)s.")
2067.3.2 by Martin Pool
Error cleanup review comments:
2249
1534.10.8 by Aaron Bentley
Implemented conflict_lines in terms of old system on WorkingTree
2250
    def __init__(self, method, method_self):
2251
        self.method = method
2252
        self.mname = method.__name__
2253
        self.tname = type(method_self).__name__
1558.15.1 by Aaron Bentley
Add text_file function
2254
2255
2150.2.2 by Robert Collins
Change the commit builder selected-revision-id test to use a unicode revision id where possible, leading to stricter testing of the hypothetical unicode revision id support in bzr.
2256
class CannotSetRevisionId(UnsupportedOperation):
2257
    """Raised when a commit is attempting to set a revision id but cant."""
2258
2259
2260
class NonAsciiRevisionId(UnsupportedOperation):
2221.5.9 by Dmitry Vasiliev
Removed trailing whitespaces and wrapped all long lines
2261
    """Raised when a commit is attempting to set a non-ascii revision id
2262
       but cant.
2263
    """
2150.2.2 by Robert Collins
Change the commit builder selected-revision-id test to use a unicode revision id where possible, leading to stricter testing of the hypothetical unicode revision id support in bzr.
2264
2265
6123.4.2 by Jelmer Vernooij
Tags containers can indicate whether they support ghost tags.
2266
class GhostTagsNotSupported(BzrError):
2267
2268
    _fmt = "Ghost tags not supported by format %(format)r."
2269
2270
    def __init__(self, format):
2271
        self.format = format
2272
2273
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2274
class BinaryFile(BzrError):
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
2275
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2276
    _fmt = "File is binary but should be text."
2277
2278
2279
class IllegalPath(BzrError):
2280
2281
    _fmt = "The path %(path)s is not permitted on this platform"
1551.2.55 by abentley
Fix fileid involed tests on win32 (by skipping them for unescaped weave formats)
2282
2283
    def __init__(self, path):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2284
        BzrError.__init__(self)
1551.2.55 by abentley
Fix fileid involed tests on win32 (by skipping them for unescaped weave formats)
2285
        self.path = path
1185.82.118 by Aaron Bentley
Ensure that StrictTestament handles execute bit differences
2286
2287
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2288
class TestamentMismatch(BzrError):
2289
2221.5.9 by Dmitry Vasiliev
Removed trailing whitespaces and wrapped all long lines
2290
    _fmt = """Testament did not match expected value.
2291
       For revision_id {%(revision_id)s}, expected {%(expected)s}, measured
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2292
       {%(measured)s}"""
2293
1185.82.118 by Aaron Bentley
Ensure that StrictTestament handles execute bit differences
2294
    def __init__(self, revision_id, expected, measured):
2295
        self.revision_id = revision_id
2296
        self.expected = expected
2297
        self.measured = measured
1185.82.131 by Aaron Bentley
Move BadBundle error (and subclasses) to errors.py
2298
2299
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2300
class NotABundle(BzrError):
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
2301
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2302
    _fmt = "Not a bzr revision-bundle: %(text)r"
1185.82.142 by Aaron Bentley
Update for review comments
2303
1185.82.139 by Aaron Bentley
Raise NotABundle when a non-bundle is supplied
2304
    def __init__(self, text):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2305
        BzrError.__init__(self)
1907.2.1 by Hermann Kraus
Convert bundle errors from Exception to BzrNewError.
2306
        self.text = text
2307
2308
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
2309
class BadBundle(BzrError):
2310
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2311
    _fmt = "Bad bzr revision-bundle: %(text)r"
1907.2.1 by Hermann Kraus
Convert bundle errors from Exception to BzrNewError.
2312
2313
    def __init__(self, text):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2314
        BzrError.__init__(self)
1907.2.1 by Hermann Kraus
Convert bundle errors from Exception to BzrNewError.
2315
        self.text = text
2316
2317
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
2318
class MalformedHeader(BadBundle):
2319
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2320
    _fmt = "Malformed bzr revision-bundle header: %(text)r"
1907.2.1 by Hermann Kraus
Convert bundle errors from Exception to BzrNewError.
2321
2322
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
2323
class MalformedPatches(BadBundle):
2324
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2325
    _fmt = "Malformed patches in bzr revision-bundle: %(text)r"
1907.2.1 by Hermann Kraus
Convert bundle errors from Exception to BzrNewError.
2326
2327
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
2328
class MalformedFooter(BadBundle):
2329
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2330
    _fmt = "Malformed footer in bzr revision-bundle: %(text)r"
1907.2.2 by Hermann Kraus
Detect wrong eol markers.
2331
1752.3.14 by Andrew Bennetts
Fix shallow bug (bad conflict resolution?) in errors.UnsupportedEOLMarker
2332
1907.2.2 by Hermann Kraus
Detect wrong eol markers.
2333
class UnsupportedEOLMarker(BadBundle):
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
2334
2335
    _fmt = "End of line marker was not \\n in bzr revision-bundle"
1907.2.2 by Hermann Kraus
Detect wrong eol markers.
2336
2337
    def __init__(self):
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
2338
        # XXX: BadBundle's constructor assumes there's explanatory text,
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2339
        # but for this there is not
2340
        BzrError.__init__(self)
2341
2342
2343
class IncompatibleBundleFormat(BzrError):
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
2344
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2345
    _fmt = "Bundle format %(bundle_format)s is incompatible with %(other)s"
1910.2.49 by Aaron Bentley
Ensure that 0.8 bundles aren't used with KnitRepository2
2346
2347
    def __init__(self, bundle_format, other):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2348
        BzrError.__init__(self)
1910.2.49 by Aaron Bentley
Ensure that 0.8 bundles aren't used with KnitRepository2
2349
        self.bundle_format = bundle_format
2350
        self.other = other
2351
2352
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2353
class BadInventoryFormat(BzrError):
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
2354
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2355
    _fmt = "Root class for inventory serialization errors"
1910.2.31 by Aaron Bentley
Fix bugs in basis inventory handling, change filename
2356
2357
2358
class UnexpectedInventoryFormat(BadInventoryFormat):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2359
2360
    _fmt = "The inventory was not in the expected format:\n %(msg)s"
1910.2.31 by Aaron Bentley
Fix bugs in basis inventory handling, change filename
2361
2362
    def __init__(self, msg):
2363
        BadInventoryFormat.__init__(self, msg=msg)
1910.2.47 by Aaron Bentley
Merge bzr.dev
2364
2365
2100.3.5 by Aaron Bentley
Merge nested-trees work
2366
class RootNotRich(BzrError):
2367
2368
    _fmt = """This operation requires rich root data storage"""
2369
2370
2871.1.1 by Robert Collins
* New class ``bzrlib.errors.InternalBzrError`` which is just a convenient
2371
class NoSmartMedium(InternalBzrError):
2067.3.3 by Martin Pool
merge bzr.dev and reconcile several changes, also some test fixes
2372
2373
    _fmt = "The transport '%(transport)s' cannot tunnel the smart protocol."
2100.3.30 by Aaron Bentley
Merge from bzr.dev
2374
2018.2.3 by Andrew Bennetts
Starting factoring out the smart server client "medium" from the protocol.
2375
    def __init__(self, transport):
2376
        self.transport = transport
2377
2378
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2379
class UnknownSSH(BzrError):
2380
2381
    _fmt = "Unrecognised value for BZR_SSH environment variable: %(vendor)s"
1951.1.8 by Andrew Bennetts
Make _get_ssh_vendor return the vendor object, rather than just a string.
2382
2383
    def __init__(self, vendor):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2384
        BzrError.__init__(self)
1951.1.8 by Andrew Bennetts
Make _get_ssh_vendor return the vendor object, rather than just a string.
2385
        self.vendor = vendor
2386
1908.5.16 by Robert Collins
Merge bzr.dev to resolve conflicts for merging.
2387
2221.5.1 by Dmitry Vasiliev
Added support for Putty's SSH implementation
2388
class SSHVendorNotFound(BzrError):
2389
2221.5.9 by Dmitry Vasiliev
Removed trailing whitespaces and wrapped all long lines
2390
    _fmt = ("Don't know how to handle SSH connections."
2391
            " Please set BZR_SSH environment variable.")
2221.5.1 by Dmitry Vasiliev
Added support for Putty's SSH implementation
2392
2393
3445.1.1 by John Arbash Meinel
Start working on a new Graph api to make finding revision numbers faster.
2394
class GhostRevisionsHaveNoRevno(BzrError):
2395
    """When searching for revnos, if we encounter a ghost, we are stuck"""
2396
2397
    _fmt = ("Could not determine revno for {%(revision_id)s} because"
2398
            " its ancestry shows a ghost at {%(ghost_revision_id)s}")
2399
2400
    def __init__(self, revision_id, ghost_revision_id):
2401
        self.revision_id = revision_id
2402
        self.ghost_revision_id = ghost_revision_id
2403
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
2404
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2405
class GhostRevisionUnusableHere(BzrError):
2406
2407
    _fmt = "Ghost revision {%(revision_id)s} cannot be used here."
1908.5.9 by Robert Collins
Add a guard against setting the tree last-revision value to a ghost in the new tree parent management api.
2408
2409
    def __init__(self, revision_id):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2410
        BzrError.__init__(self)
1908.5.9 by Robert Collins
Add a guard against setting the tree last-revision value to a ghost in the new tree parent management api.
2411
        self.revision_id = revision_id
1996.1.16 by John Arbash Meinel
Raise an exception when ScopeReplacer has been misused
2412
2413
2871.1.1 by Robert Collins
* New class ``bzrlib.errors.InternalBzrError`` which is just a convenient
2414
class IllegalUseOfScopeReplacer(InternalBzrError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2415
2221.5.9 by Dmitry Vasiliev
Removed trailing whitespaces and wrapped all long lines
2416
    _fmt = ("ScopeReplacer object %(name)r was used incorrectly:"
2417
            " %(msg)s%(extra)s")
1996.1.16 by John Arbash Meinel
Raise an exception when ScopeReplacer has been misused
2418
2419
    def __init__(self, name, msg, extra=None):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2420
        BzrError.__init__(self)
1996.1.16 by John Arbash Meinel
Raise an exception when ScopeReplacer has been misused
2421
        self.name = name
2422
        self.msg = msg
2423
        if extra:
2424
            self.extra = ': ' + str(extra)
2425
        else:
2426
            self.extra = ''
2427
1996.1.18 by John Arbash Meinel
Add more structured error handling
2428
2871.1.1 by Robert Collins
* New class ``bzrlib.errors.InternalBzrError`` which is just a convenient
2429
class InvalidImportLine(InternalBzrError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2430
2431
    _fmt = "Not a valid import statement: %(msg)\n%(text)s"
1996.1.18 by John Arbash Meinel
Add more structured error handling
2432
2433
    def __init__(self, text, msg):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2434
        BzrError.__init__(self)
1996.1.18 by John Arbash Meinel
Add more structured error handling
2435
        self.text = text
2436
        self.msg = msg
2437
2438
2871.1.1 by Robert Collins
* New class ``bzrlib.errors.InternalBzrError`` which is just a convenient
2439
class ImportNameCollision(InternalBzrError):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2440
2221.5.9 by Dmitry Vasiliev
Removed trailing whitespaces and wrapped all long lines
2441
    _fmt = ("Tried to import an object to the same name as"
2442
            " an existing object. %(name)s")
1996.1.18 by John Arbash Meinel
Add more structured error handling
2443
2444
    def __init__(self, name):
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
2445
        BzrError.__init__(self)
1996.1.18 by John Arbash Meinel
Add more structured error handling
2446
        self.name = name
1731.2.2 by Aaron Bentley
Test subsume failure modes
2447
2100.3.1 by Aaron Bentley
Start roundtripping tree-reference entries
2448
1551.12.49 by Aaron Bentley
Proper error when deserializing junk
2449
class NotAMergeDirective(BzrError):
2450
    """File starting with %(firstline)r is not a merge directive"""
2451
    def __init__(self, firstline):
2452
        BzrError.__init__(self, firstline=firstline)
2453
2454
1551.12.2 by Aaron Bentley
Got directives round-tripping, with bundles and everything
2455
class NoMergeSource(BzrError):
2456
    """Raise if no merge source was specified for a merge directive"""
2457
2458
    _fmt = "A merge directive must provide either a bundle or a public"\
1551.12.5 by Aaron Bentley
Get MergeDirective.from_objects working
2459
        " branch location."
1551.12.2 by Aaron Bentley
Got directives round-tripping, with bundles and everything
2460
2461
2520.4.73 by Aaron Bentley
Implement new merge directive format
2462
class IllegalMergeDirectivePayload(BzrError):
2463
    """A merge directive contained something other than a patch or bundle"""
2464
2465
    _fmt = "Bad merge directive payload %(start)r"
2466
2467
    def __init__(self, start):
2468
        BzrError(self)
2469
        self.start = start
2470
2471
2520.4.105 by Aaron Bentley
Implement patch verification
2472
class PatchVerificationFailed(BzrError):
2473
    """A patch from a merge directive could not be verified"""
2474
2520.4.106 by Aaron Bentley
Clarify what patch verification failure means
2475
    _fmt = "Preview patch does not match requested changes."
2520.4.105 by Aaron Bentley
Implement patch verification
2476
2477
1551.12.2 by Aaron Bentley
Got directives round-tripping, with bundles and everything
2478
class PatchMissing(BzrError):
2479
    """Raise a patch type was specified but no patch supplied"""
2480
2872.5.1 by Martin Pool
Avoid internal error tracebacks on failure to lock on readonly transport (#129701).
2481
    _fmt = "Patch_type was %(patch_type)s, but no patch was supplied."
1551.12.2 by Aaron Bentley
Got directives round-tripping, with bundles and everything
2482
2483
    def __init__(self, patch_type):
2484
        BzrError.__init__(self)
2485
        self.patch_type = patch_type
1551.12.25 by Aaron Bentley
Merge bzr.dev
2486
2487
3535.8.1 by James Westby
Handle something that isn't a branch being specified in target_branch.
2488
class TargetNotBranch(BzrError):
2489
    """A merge directive's target branch is required, but isn't a branch"""
2490
2491
    _fmt = ("Your branch does not have all of the revisions required in "
3535.8.4 by James Westby
Replace "however" with "and" at John's request.
2492
            "order to merge this merge directive and the target "
3535.8.3 by James Westby
Use location instead of branch as suggested by Robert.
2493
            "location specified in the merge directive is not a branch: "
3535.8.1 by James Westby
Handle something that isn't a branch being specified in target_branch.
2494
            "%(location)s.")
2495
2496
    def __init__(self, location):
2497
        BzrError.__init__(self)
2498
        self.location = location
2499
2500
2100.3.9 by Aaron Bentley
Clean up BzrNewError usage
2501
class UnsupportedInventoryKind(BzrError):
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
2502
2100.3.9 by Aaron Bentley
Clean up BzrNewError usage
2503
    _fmt = """Unsupported entry kind %(kind)s"""
2100.3.1 by Aaron Bentley
Start roundtripping tree-reference entries
2504
2505
    def __init__(self, kind):
2506
        self.kind = kind
2100.3.5 by Aaron Bentley
Merge nested-trees work
2507
2508
2100.3.9 by Aaron Bentley
Clean up BzrNewError usage
2509
class BadSubsumeSource(BzrError):
2510
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
2511
    _fmt = "Can't subsume %(other_tree)s into %(tree)s. %(reason)s"
1731.2.5 by Aaron Bentley
Ensure versionedfile will be produced for subsumed tree root
2512
1731.2.2 by Aaron Bentley
Test subsume failure modes
2513
    def __init__(self, tree, other_tree, reason):
2514
        self.tree = tree
2515
        self.other_tree = other_tree
2516
        self.reason = reason
1731.2.5 by Aaron Bentley
Ensure versionedfile will be produced for subsumed tree root
2517
2518
2100.3.9 by Aaron Bentley
Clean up BzrNewError usage
2519
class SubsumeTargetNeedsUpgrade(BzrError):
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
2520
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
2521
    _fmt = """Subsume target %(other_tree)s needs to be upgraded."""
1731.2.5 by Aaron Bentley
Ensure versionedfile will be produced for subsumed tree root
2522
2523
    def __init__(self, other_tree):
2524
        self.other_tree = other_tree
2100.3.8 by Aaron Bentley
Add add_reference
2525
2526
2871.1.1 by Robert Collins
* New class ``bzrlib.errors.InternalBzrError`` which is just a convenient
2527
class BadReferenceTarget(InternalBzrError):
2100.3.8 by Aaron Bentley
Add add_reference
2528
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
2529
    _fmt = "Can't add reference to %(other_tree)s into %(tree)s." \
2745.3.1 by Daniel Watkins
Modified errors.py to quote paths just before full stops. Also added some full stops to error messages without them.
2530
           "%(reason)s"
2100.3.8 by Aaron Bentley
Add add_reference
2531
2532
    def __init__(self, tree, other_tree, reason):
2533
        self.tree = tree
2534
        self.other_tree = other_tree
2535
        self.reason = reason
2255.2.182 by Martin Pool
merge dirstate and trunk
2536
2537
2220.2.2 by Martin Pool
Add tag command and basic implementation
2538
class NoSuchTag(BzrError):
2539
2540
    _fmt = "No such tag: %(tag_name)s"
2541
2542
    def __init__(self, tag_name):
2543
        self.tag_name = tag_name
2220.2.4 by Martin Pool
Repositories which don't support tags now give a better message
2544
2545
2546
class TagsNotSupported(BzrError):
2547
2221.5.14 by Dmitry Vasiliev
Wrapped long lines
2548
    _fmt = ("Tags not supported by %(branch)s;"
3596.1.1 by Jelmer Vernooij
Remove recommendation of old format when tags can't be copied.
2549
            " you may be able to use bzr upgrade.")
2220.2.5 by Martin Pool
Better TagsNotSupported message
2550
2220.2.21 by Martin Pool
Add tag --delete command and implementation
2551
    def __init__(self, branch):
2220.2.23 by Martin Pool
Fix TagsNotSupportedError
2552
        self.branch = branch
2220.2.42 by Martin Pool
Tag command refuses to replace existing tags unless you force it.
2553
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
2554
2220.2.42 by Martin Pool
Tag command refuses to replace existing tags unless you force it.
2555
class TagAlreadyExists(BzrError):
2556
2557
    _fmt = "Tag %(tag_name)s already exists."
2558
2559
    def __init__(self, tag_name):
2560
        self.tag_name = tag_name
2018.5.163 by Andrew Bennetts
Deal with various review comments from Robert.
2561
2562
2376.4.7 by jml at canonical
- Add docstrings to tests.
2563
class MalformedBugIdentifier(BzrError):
2564
3535.10.1 by James Westby
Point to "bzr help bugs" from MalformedBugIdentifier.
2565
    _fmt = ('Did not understand bug identifier %(bug_id)s: %(reason)s. '
3535.10.9 by James Westby
Make the improved messages show up in the UI.
2566
            'See "bzr help bugs" for more information on this feature.')
2376.4.7 by jml at canonical
- Add docstrings to tests.
2567
2568
    def __init__(self, bug_id, reason):
2569
        self.bug_id = bug_id
2570
        self.reason = reason
2376.4.26 by Jonathan Lange
Tests for MalformedBugIdentifier and new error UnknownBugTrackerAbbreviation.
2571
2572
3035.3.1 by Lukáš Lalinský
Generic bug tracker configuration.
2573
class InvalidBugTrackerURL(BzrError):
2574
2575
    _fmt = ("The URL for bug tracker \"%(abbreviation)s\" doesn't "
2576
            "contain {id}: %(url)s")
2577
2578
    def __init__(self, abbreviation, url):
2579
        self.abbreviation = abbreviation
2580
        self.url = url
2581
2582
2376.4.26 by Jonathan Lange
Tests for MalformedBugIdentifier and new error UnknownBugTrackerAbbreviation.
2583
class UnknownBugTrackerAbbreviation(BzrError):
2584
2376.4.28 by Jonathan Lange
Focus the tests better and clean up some dodgy bits in UnknownBugTrackerAbbreviation
2585
    _fmt = ("Cannot find registered bug tracker called %(abbreviation)s "
2376.4.27 by Jonathan Lange
Include branch information in UnknownBugTrackerAbbreviation
2586
            "on %(branch)s")
2376.4.26 by Jonathan Lange
Tests for MalformedBugIdentifier and new error UnknownBugTrackerAbbreviation.
2587
2376.4.27 by Jonathan Lange
Include branch information in UnknownBugTrackerAbbreviation
2588
    def __init__(self, abbreviation, branch):
2376.4.26 by Jonathan Lange
Tests for MalformedBugIdentifier and new error UnknownBugTrackerAbbreviation.
2589
        self.abbreviation = abbreviation
2376.4.27 by Jonathan Lange
Include branch information in UnknownBugTrackerAbbreviation
2590
        self.branch = branch
2376.4.38 by Jonathan Lange
Merge bzr.dev, resolving conflicts in error code.
2591
2592
4119.4.3 by Jonathan Lange
Add Revision.iter_bugs.
2593
class InvalidLineInBugsProperty(BzrError):
2594
2595
    _fmt = ("Invalid line in bugs property: '%(line)s'")
2596
2597
    def __init__(self, line):
2598
        self.line = line
2599
2600
2601
class InvalidBugStatus(BzrError):
2602
2603
    _fmt = ("Invalid bug status: '%(status)s'")
2604
2605
    def __init__(self, status):
2606
        self.status = status
2607
2608
2018.5.163 by Andrew Bennetts
Deal with various review comments from Robert.
2609
class UnexpectedSmartServerResponse(BzrError):
2610
2611
    _fmt = "Could not understand response from smart server: %(response_tuple)r"
2612
2613
    def __init__(self, response_tuple):
2614
        self.response_tuple = response_tuple
2506.2.1 by Andrew Bennetts
Start implementing container format reading and writing.
2615
2616
3245.4.5 by Andrew Bennetts
Implement interrupting body streams with an error.
2617
class ErrorFromSmartServer(BzrError):
3690.1.1 by Andrew Bennetts
Unexpected error responses from a smart server no longer cause the client to traceback.
2618
    """An error was received from a smart server.
2619
3690.1.2 by Andrew Bennetts
Rename UntranslateableErrorFromSmartServer -> UnknownErrorFromSmartServer.
2620
    :seealso: UnknownErrorFromSmartServer
3690.1.1 by Andrew Bennetts
Unexpected error responses from a smart server no longer cause the client to traceback.
2621
    """
3245.4.5 by Andrew Bennetts
Implement interrupting body streams with an error.
2622
2623
    _fmt = "Error received from smart server: %(error_tuple)r"
2624
2625
    internal_error = True
2626
2627
    def __init__(self, error_tuple):
2628
        self.error_tuple = error_tuple
3245.4.53 by Andrew Bennetts
Add some missing 'raise' statements to test_remote.
2629
        try:
2630
            self.error_verb = error_tuple[0]
2631
        except IndexError:
2632
            self.error_verb = None
3245.4.52 by Andrew Bennetts
Add 'error_verb' and 'error_args' attributes to ErrorFromSmartServer.
2633
        self.error_args = error_tuple[1:]
3245.4.5 by Andrew Bennetts
Implement interrupting body streams with an error.
2634
2635
3690.1.2 by Andrew Bennetts
Rename UntranslateableErrorFromSmartServer -> UnknownErrorFromSmartServer.
2636
class UnknownErrorFromSmartServer(BzrError):
3690.1.1 by Andrew Bennetts
Unexpected error responses from a smart server no longer cause the client to traceback.
2637
    """An ErrorFromSmartServer could not be translated into a typical bzrlib
2638
    error.
2639
2640
    This is distinct from ErrorFromSmartServer so that it is possible to
2641
    distinguish between the following two cases:
5891.1.2 by Andrew Bennetts
Fix a bunch of docstring formatting nits, making pydoctor a bit happier.
2642
2643
    - ErrorFromSmartServer was uncaught.  This is logic error in the client
2644
      and so should provoke a traceback to the user.
2645
    - ErrorFromSmartServer was caught but its error_tuple could not be
2646
      translated.  This is probably because the server sent us garbage, and
2647
      should not provoke a traceback.
3690.1.1 by Andrew Bennetts
Unexpected error responses from a smart server no longer cause the client to traceback.
2648
    """
2649
2650
    _fmt = "Server sent an unexpected error: %(error_tuple)r"
2651
2652
    internal_error = False
2653
2654
    def __init__(self, error_from_smart_server):
2655
        """Constructor.
2656
2657
        :param error_from_smart_server: An ErrorFromSmartServer instance.
2658
        """
2659
        self.error_from_smart_server = error_from_smart_server
2660
        self.error_tuple = error_from_smart_server.error_tuple
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
2661
3690.1.1 by Andrew Bennetts
Unexpected error responses from a smart server no longer cause the client to traceback.
2662
2506.2.1 by Andrew Bennetts
Start implementing container format reading and writing.
2663
class ContainerError(BzrError):
2664
    """Base class of container errors."""
2665
2666
2667
class UnknownContainerFormatError(ContainerError):
2668
2669
    _fmt = "Unrecognised container format: %(container_format)r"
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
2670
2506.2.1 by Andrew Bennetts
Start implementing container format reading and writing.
2671
    def __init__(self, container_format):
2672
        self.container_format = container_format
2673
2674
2675
class UnexpectedEndOfContainerError(ContainerError):
2676
2677
    _fmt = "Unexpected end of container stream"
2678
2679
2680
class UnknownRecordTypeError(ContainerError):
2681
2682
    _fmt = "Unknown record type: %(record_type)r"
2683
2684
    def __init__(self, record_type):
2685
        self.record_type = record_type
2686
2687
2506.3.1 by Andrew Bennetts
More progress:
2688
class InvalidRecordError(ContainerError):
2689
2690
    _fmt = "Invalid record: %(reason)s"
2691
2692
    def __init__(self, reason):
2693
        self.reason = reason
2694
2506.2.6 by Andrew Bennetts
Add validate method to ContainerReader and BytesRecordReader.
2695
2696
class ContainerHasExcessDataError(ContainerError):
2697
2698
    _fmt = "Container has data after end marker: %(excess)r"
2699
2700
    def __init__(self, excess):
2701
        self.excess = excess
2702
2506.6.1 by Andrew Bennetts
Return a callable instead of a str from read, and add more validation.
2703
2704
class DuplicateRecordNameError(ContainerError):
2705
2745.3.3 by Daniel Watkins
Changed to remove need for escaping of quotes.
2706
    _fmt = "Container has multiple records with the same name: %(name)s"
2506.6.1 by Andrew Bennetts
Return a callable instead of a str from read, and add more validation.
2707
2708
    def __init__(self, name):
6112.5.11 by Jonathan Riddell
resolve that _fmt strings should be ascii so no longer allow for unicode prior to gettext()
2709
        self.name = name.decode("utf-8")
2506.6.1 by Andrew Bennetts
Return a callable instead of a str from read, and add more validation.
2710
2520.4.107 by Aaron Bentley
Merge bzr.dev
2711
2871.1.1 by Robert Collins
* New class ``bzrlib.errors.InternalBzrError`` which is just a convenient
2712
class NoDestinationAddress(InternalBzrError):
2535.2.1 by Adeodato Simó
New SMTPConnection class, a reduced version of that in bzr-email.
2713
2714
    _fmt = "Message does not have a destination address."
2535.2.2 by Adeodato Simó
Swap the order of internal_error and _fmt for consistency.
2715
2535.2.4 by Adeodato Simó
Don't use BzrCommandError in non-UI code; create and use an SMTPError
2716
2535.3.42 by Andrew Bennetts
Merge from bzr.dev
2717
class RepositoryDataStreamError(BzrError):
2718
2719
    _fmt = "Corrupt or incompatible data stream: %(reason)s"
2720
2721
    def __init__(self, reason):
2722
        self.reason = reason
2723
2724
2535.2.4 by Adeodato Simó
Don't use BzrCommandError in non-UI code; create and use an SMTPError
2725
class SMTPError(BzrError):
2726
2727
    _fmt = "SMTP error: %(error)s"
2728
2729
    def __init__(self, error):
2730
        self.error = error
2681.1.9 by Aaron Bentley
Add support for mail-from-editor
2731
2732
2733
class NoMessageSupplied(BzrError):
2734
2735
    _fmt = "No message supplied."
2681.1.10 by Aaron Bentley
Clean up handling of unknown mail clients
2736
2737
3042.1.1 by Lukáš Lalinský
Make mail-to address in ``bzr send`` optional for interactive mail clients.
2738
class NoMailAddressSpecified(BzrError):
2739
3984.2.1 by Daniel Watkins
Fixed #198418
2740
    _fmt = "No mail-to address (--mail-to) or output (-o) specified."
3042.1.1 by Lukáš Lalinský
Make mail-to address in ``bzr send`` optional for interactive mail clients.
2741
2742
2681.1.10 by Aaron Bentley
Clean up handling of unknown mail clients
2743
class UnknownMailClient(BzrError):
2744
2745
    _fmt = "Unknown mail client: %(mail_client)s"
2746
2747
    def __init__(self, mail_client):
2748
        BzrError.__init__(self, mail_client=mail_client)
2681.1.18 by Aaron Bentley
Refactor to increase code sharing, allow multiple command names for tbird
2749
2750
2751
class MailClientNotFound(BzrError):
2752
2753
    _fmt = "Unable to find mail client with the following names:"\
2754
        " %(mail_command_list_string)s"
2755
2756
    def __init__(self, mail_command_list):
2757
        mail_command_list_string = ', '.join(mail_command_list)
2758
        BzrError.__init__(self, mail_command_list=mail_command_list,
2759
                          mail_command_list_string=mail_command_list_string)
2681.1.31 by Aaron Bentley
Merge bzr.dev
2760
2694.2.1 by Aaron Bentley
Make error handling nicer when SMTP server not working
2761
class SMTPConnectionRefused(SMTPError):
2762
2763
    _fmt = "SMTP connection to %(host)s refused"
2764
2765
    def __init__(self, error, host):
2766
        self.error = error
2767
        self.host = host
2768
2769
2770
class DefaultSMTPConnectionRefused(SMTPConnectionRefused):
2771
2772
    _fmt = "Please specify smtp_server.  No server at default %(host)s."
2796.2.1 by Aaron Bentley
Begin work on reconfigure command
2773
2774
2775
class BzrDirError(BzrError):
2776
2777
    def __init__(self, bzrdir):
2778
        import bzrlib.urlutils as urlutils
5158.6.9 by Martin Pool
Simplify various code to use user_url
2779
        display_url = urlutils.unescape_for_display(bzrdir.user_url,
2796.2.1 by Aaron Bentley
Begin work on reconfigure command
2780
                                                    'ascii')
2781
        BzrError.__init__(self, bzrdir=bzrdir, display_url=display_url)
2782
2783
3338.1.1 by Aaron Bentley
Raise an error when converting a branch to a lightweight checkout loses data
2784
class UnsyncedBranches(BzrDirError):
2785
3338.1.4 by Aaron Bentley
Add sync-for-reconfigure help topic
2786
    _fmt = ("'%(display_url)s' is not in sync with %(target_url)s.  See"
3338.1.5 by Aaron Bentley
Tweak text
2787
            " bzr help sync-for-reconfigure.")
3338.1.1 by Aaron Bentley
Raise an error when converting a branch to a lightweight checkout loses data
2788
2789
    def __init__(self, bzrdir, target_branch):
2790
        BzrDirError.__init__(self, bzrdir)
2791
        import bzrlib.urlutils as urlutils
2792
        self.target_url = urlutils.unescape_for_display(target_branch.base,
2793
                                                        'ascii')
2794
2795
2796.2.1 by Aaron Bentley
Begin work on reconfigure command
2796
class AlreadyBranch(BzrDirError):
2797
2798
    _fmt = "'%(display_url)s' is already a branch."
2799
2800
2796.2.3 by Aaron Bentley
Implement conversion to tree and checkout
2801
class AlreadyTree(BzrDirError):
2802
2803
    _fmt = "'%(display_url)s' is already a tree."
2804
2805
2806
class AlreadyCheckout(BzrDirError):
2807
2808
    _fmt = "'%(display_url)s' is already a checkout."
2809
2810
2796.2.19 by Aaron Bentley
Support reconfigure --lightweight-checkout
2811
class AlreadyLightweightCheckout(BzrDirError):
2812
2813
    _fmt = "'%(display_url)s' is already a lightweight checkout."
2814
2815
3311.2.6 by Aaron Bentley
rename 'sharing' to 'use-shared'
2816
class AlreadyUsingShared(BzrDirError):
3311.2.2 by Aaron Bentley
Flesh out to_sharing
2817
3311.2.6 by Aaron Bentley
rename 'sharing' to 'use-shared'
2818
    _fmt = "'%(display_url)s' is already using a shared repository."
3311.2.2 by Aaron Bentley
Flesh out to_sharing
2819
2820
3311.2.4 by Aaron Bentley
Implement conversion to standalone
2821
class AlreadyStandalone(BzrDirError):
2822
2823
    _fmt = "'%(display_url)s' is already standalone."
2824
2825
3921.4.1 by Matthew Fuller
Add some error classes for manipulating trees/no-trees settings on
2826
class AlreadyWithTrees(BzrDirError):
2827
3983.3.8 by Marius Kruger
use brakets for long string wrapping
2828
    _fmt = ("Shared repository '%(display_url)s' already creates "
3983.3.11 by Vincent Ladeuil
Fix indentation as per Aaron's review and then some.
2829
            "working trees.")
3921.4.1 by Matthew Fuller
Add some error classes for manipulating trees/no-trees settings on
2830
2831
2832
class AlreadyWithNoTrees(BzrDirError):
2833
3983.3.8 by Marius Kruger
use brakets for long string wrapping
2834
    _fmt = ("Shared repository '%(display_url)s' already doesn't create "
3983.3.11 by Vincent Ladeuil
Fix indentation as per Aaron's review and then some.
2835
            "working trees.")
3921.4.1 by Matthew Fuller
Add some error classes for manipulating trees/no-trees settings on
2836
2837
2796.2.1 by Aaron Bentley
Begin work on reconfigure command
2838
class ReconfigurationNotSupported(BzrDirError):
2839
2840
    _fmt = "Requested reconfiguration of '%(display_url)s' is not supported."
2841
2842
2796.2.3 by Aaron Bentley
Implement conversion to tree and checkout
2843
class NoBindLocation(BzrDirError):
2844
2845
    _fmt = "No location could be found to bind to at %(display_url)s."
2846
2847
2796.2.1 by Aaron Bentley
Begin work on reconfigure command
2848
class UncommittedChanges(BzrError):
2849
4487.2.4 by Vincent Ladeuil
Start addressing jam's concerns.
2850
    _fmt = ('Working tree "%(display_url)s" has uncommitted changes'
4487.2.6 by Vincent Ladeuil
Fixed as per jam's review.
2851
            ' (See bzr status).%(more)s')
2796.2.1 by Aaron Bentley
Begin work on reconfigure command
2852
4487.2.6 by Vincent Ladeuil
Fixed as per jam's review.
2853
    def __init__(self, tree, more=None):
2854
        if more is None:
2855
            more = ''
2856
        else:
2857
            more = ' ' + more
2796.2.1 by Aaron Bentley
Begin work on reconfigure command
2858
        import bzrlib.urlutils as urlutils
5368.1.1 by Jelmer Vernooij
Allow passing a tree without a user_url attribute to UncommittedChanges.
2859
        user_url = getattr(tree, "user_url", None)
2860
        if user_url is None:
2861
            display_url = str(tree)
2862
        else:
2863
            display_url = urlutils.unescape_for_display(user_url, 'ascii')
4487.2.6 by Vincent Ladeuil
Fixed as per jam's review.
2864
        BzrError.__init__(self, tree=tree, display_url=display_url, more=more)
3006.2.1 by Alexander Belchenko
workaround for bug #81689: give a proper error message instead of traceback when symlink cannot be created (e.g. on Windows)
2865
2866
5268.3.1 by Matt Giuca
remove-tree now refuses to run without --force if there are shelved changes.
2867
class ShelvedChanges(UncommittedChanges):
2868
2869
    _fmt = ('Working tree "%(display_url)s" has shelved changes'
2870
            ' (See bzr shelve --list).%(more)s')
2871
2872
2948.4.6 by Lukáš Lalinský
Don't subclass dict in Template and raise an error on missing variable.
2873
class MissingTemplateVariable(BzrError):
2874
2875
    _fmt = 'Variable {%(name)s} is not available.'
2876
2877
    def __init__(self, name):
2878
        self.name = name
2948.4.7 by Lukáš Lalinský
Merge bzr.dev.
2879
2880
3207.1.1 by Lukáš Lalinský
Raise a proper error when 'version-info --custom' is used without a template
2881
class NoTemplate(BzrError):
2882
2883
    _fmt = 'No template specified.'
2884
2885
3006.2.1 by Alexander Belchenko
workaround for bug #81689: give a proper error message instead of traceback when symlink cannot be created (e.g. on Windows)
2886
class UnableCreateSymlink(BzrError):
2887
3006.2.2 by Alexander Belchenko
tests added.
2888
    _fmt = 'Unable to create symlink %(path_str)son this platform'
2889
2890
    def __init__(self, path=None):
2891
        path_str = ''
2892
        if path:
2893
            try:
2894
                path_str = repr(str(path))
2895
            except UnicodeEncodeError:
2896
                path_str = repr(path)
2897
            path_str += ' '
2898
        self.path_str = path_str
3144.1.1 by Lukáš Lalinský
Fixed error reporting of unsupported timezone format.
2899
2900
2901
class UnsupportedTimezoneFormat(BzrError):
2902
2903
    _fmt = ('Unsupported timezone format "%(timezone)s", '
2904
            'options are "utc", "original", "local".')
2905
2906
    def __init__(self, timezone):
2907
        self.timezone = timezone
3246.7.1 by Martin Albisetti
Core code for automatic plugin suggestion
2908
2909
2910
class CommandAvailableInPlugin(StandardError):
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
2911
3246.7.1 by Martin Albisetti
Core code for automatic plugin suggestion
2912
    internal_error = False
2913
2914
    def __init__(self, cmd_name, plugin_metadata, provider):
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
2915
3246.7.1 by Martin Albisetti
Core code for automatic plugin suggestion
2916
        self.plugin_metadata = plugin_metadata
2917
        self.cmd_name = cmd_name
2918
        self.provider = provider
2919
2920
    def __str__(self):
2921
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
2922
        _fmt = ('"%s" is not a standard bzr command. \n'
3246.7.1 by Martin Albisetti
Core code for automatic plugin suggestion
2923
                'However, the following official plugin provides this command: %s\n'
2924
                'You can install it by going to: %s'
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
2925
                % (self.cmd_name, self.plugin_metadata['name'],
3246.7.1 by Martin Albisetti
Core code for automatic plugin suggestion
2926
                    self.plugin_metadata['url']))
2927
2928
        return _fmt
2929
2930
2931
class NoPluginAvailable(BzrError):
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
2932
    pass
3246.7.1 by Martin Albisetti
Core code for automatic plugin suggestion
2933
3246.7.4 by Martin Albisetti
Merge from bzr.dev
2934
3234.2.6 by Alexander Belchenko
because every mail client has different rules to compose command line we should encode arguments to 8 bit string only when needed.
2935
class UnableEncodePath(BzrError):
2936
3234.2.8 by Alexander Belchenko
fix grammar in formatting string of UnableEncodePath error.
2937
    _fmt = ('Unable to encode %(kind)s path %(path)r in '
3234.2.6 by Alexander Belchenko
because every mail client has different rules to compose command line we should encode arguments to 8 bit string only when needed.
2938
            'user encoding %(user_encoding)s')
2939
2940
    def __init__(self, path, kind):
3224.5.8 by Andrew Bennetts
Fix failing tests.
2941
        from bzrlib.osutils import get_user_encoding
3234.2.6 by Alexander Belchenko
because every mail client has different rules to compose command line we should encode arguments to 8 bit string only when needed.
2942
        self.path = path
2943
        self.kind = kind
6318.2.4 by Martin Packman
Remove module level osutils import
2944
        self.user_encoding = get_user_encoding()
3365.1.1 by Andrea Corbellini
Handle errors raised by socket.bind() (bug 200575)
2945
3408.4.1 by Ian Clatworthy
Nicer error when smart server started on an address already in use (Andrea Corbellini)
2946
5447.4.10 by Vincent Ladeuil
Using dedicated exceptions feels cleaner.
2947
class NoSuchConfig(BzrError):
2948
2949
    _fmt = ('The "%(config_id)s" configuration does not exist.')
2950
2951
    def __init__(self, config_id):
2952
        BzrError.__init__(self, config_id=config_id)
2953
2954
2955
class NoSuchConfigOption(BzrError):
2956
2957
    _fmt = ('The "%(option_name)s" configuration option does not exist.')
2958
2959
    def __init__(self, option_name):
2960
        BzrError.__init__(self, option_name=option_name)
2961
2962
2900.3.7 by Tim Penhey
Updates from Aaron's review.
2963
class NoSuchAlias(BzrError):
2964
2965
    _fmt = ('The alias "%(alias_name)s" does not exist.')
2966
2967
    def __init__(self, alias_name):
2968
        BzrError.__init__(self, alias_name=alias_name)
2900.3.13 by Tim Penhey
Merge bzr.dev and resolve conflicts.
2969
2970
3512.2.1 by Aaron Bentley
Add support for branch-associated locations
2971
class DirectoryLookupFailure(BzrError):
2972
    """Base type for lookup errors."""
2973
2974
    pass
2975
2976
2977
class InvalidLocationAlias(DirectoryLookupFailure):
2978
2979
    _fmt = '"%(alias_name)s" is not a valid location alias.'
2980
2981
    def __init__(self, alias_name):
2982
        DirectoryLookupFailure.__init__(self, alias_name=alias_name)
2983
2984
2985
class UnsetLocationAlias(DirectoryLookupFailure):
2986
2987
    _fmt = 'No %(alias_name)s location assigned.'
2988
2989
    def __init__(self, alias_name):
2990
        DirectoryLookupFailure.__init__(self, alias_name=alias_name[1:])
2991
2992
3365.1.1 by Andrea Corbellini
Handle errors raised by socket.bind() (bug 200575)
2993
class CannotBindAddress(BzrError):
2994
2995
    _fmt = 'Cannot bind address "%(host)s:%(port)i": %(orig_error)s.'
2996
2997
    def __init__(self, host, port, orig_error):
4634.1.5 by Martin Pool
python2.4 socket.error doesn't have a useful repr
2998
        # nb: in python2.4 socket.error doesn't have a useful repr
3365.1.1 by Andrea Corbellini
Handle errors raised by socket.bind() (bug 200575)
2999
        BzrError.__init__(self, host=host, port=port,
4634.1.5 by Martin Pool
python2.4 socket.error doesn't have a useful repr
3000
            orig_error=repr(orig_error.args))
3398.1.29 by Ian Clatworthy
add UnknownRules class & test
3001
3002
3003
class UnknownRules(BzrError):
3004
3005
    _fmt = ('Unknown rules detected: %(unknowns_str)s.')
3006
3007
    def __init__(self, unknowns):
3008
        BzrError.__init__(self, unknowns_str=", ".join(unknowns))
3577.1.1 by Andrew Bennetts
Cherry-pick TipChangeRejected changes from pre-branch-tip-changed-hook loom.
3009
3010
3011
class TipChangeRejected(BzrError):
3012
    """A pre_change_branch_tip hook function may raise this to cleanly and
3013
    explicitly abort a change to a branch tip.
3014
    """
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
3015
3577.1.1 by Andrew Bennetts
Cherry-pick TipChangeRejected changes from pre-branch-tip-changed-hook loom.
3016
    _fmt = u"Tip change rejected: %(msg)s"
3017
3018
    def __init__(self, msg):
3019
        self.msg = msg
3020
0.12.68 by Aaron Bentley
Update docs, move items to proper files.
3021
0.15.41 by Aaron Bentley
Replace assert with proper error handling
3022
class ShelfCorrupt(BzrError):
3023
3024
    _fmt = "Shelf corrupt."
0.12.75 by Aaron Bentley
Merge unshelve into shelf-manager
3025
3026
5927.2.2 by Jonathan Riddell
throw the error
3027
class DecompressCorruption(BzrError):
3028
5927.2.7 by Jonathan Riddell
in DecompressCorruption keep _fmt as a class member. in test use with for opening files
3029
    _fmt = "Corruption while decompressing repository file%(orig_error)s"
5927.2.6 by Jonathan Riddell
Make error message less specific (might not be a local disk issue) and pass through zlib error
3030
3031
    def __init__(self, orig_error=None):
5927.2.7 by Jonathan Riddell
in DecompressCorruption keep _fmt as a class member. in test use with for opening files
3032
        if orig_error is not None:
3033
            self.orig_error = ", %s" % (orig_error,)
5927.2.6 by Jonathan Riddell
Make error message less specific (might not be a local disk issue) and pass through zlib error
3034
        else:
5927.2.7 by Jonathan Riddell
in DecompressCorruption keep _fmt as a class member. in test use with for opening files
3035
            self.orig_error = ""
5927.2.6 by Jonathan Riddell
Make error message less specific (might not be a local disk issue) and pass through zlib error
3036
        BzrError.__init__(self)
5927.2.2 by Jonathan Riddell
throw the error
3037
3038
0.12.68 by Aaron Bentley
Update docs, move items to proper files.
3039
class NoSuchShelfId(BzrError):
3040
3041
    _fmt = 'No changes are shelved with id "%(shelf_id)d".'
3042
3043
    def __init__(self, shelf_id):
3044
        BzrError.__init__(self, shelf_id=shelf_id)
0.16.103 by Aaron Bentley
raise UserAbort instead of doing sys.exit
3045
3046
3990.2.2 by Daniel Watkins
Added InvalidShelfId error and accompanying test.
3047
class InvalidShelfId(BzrError):
3048
3990.2.3 by Daniel Watkins
Made error message slightly more friendly.
3049
    _fmt = '"%(invalid_id)s" is not a valid shelf id, try a number instead.'
3990.2.2 by Daniel Watkins
Added InvalidShelfId error and accompanying test.
3050
3051
    def __init__(self, invalid_id):
3052
        BzrError.__init__(self, invalid_id=invalid_id)
3053
3054
4294.2.8 by Robert Collins
Reduce round trips pushing new branches substantially.
3055
class JailBreak(BzrError):
3056
3057
    _fmt = "An attempt to access a url outside the server jail was made: '%(url)s'."
3058
3059
    def __init__(self, url):
3060
        BzrError.__init__(self, url=url)
3061
3062
0.16.103 by Aaron Bentley
raise UserAbort instead of doing sys.exit
3063
class UserAbort(BzrError):
3064
3065
    _fmt = 'The user aborted the operation.'
3983.1.8 by Daniel Watkins
Added MustHaveWorkingTree error and accompanying test.
3066
3067
3068
class MustHaveWorkingTree(BzrError):
3069
3983.1.10 by Daniel Watkins
Made exception message slightly better.
3070
    _fmt = ("Branching '%(url)s'(%(format)s) must create a working tree.")
3983.1.8 by Daniel Watkins
Added MustHaveWorkingTree error and accompanying test.
3071
3072
    def __init__(self, format, url):
3073
        BzrError.__init__(self, format=format, url=url)
4002.1.1 by Andrew Bennetts
Implement suspend_write_group/resume_write_group.
3074
3075
3586.1.1 by Ian Clatworthy
add view-related errors and tests
3076
class NoSuchView(BzrError):
3077
    """A view does not exist.
3078
    """
4032.1.2 by John Arbash Meinel
Track down a few more files that have trailing whitespace.
3079
3586.1.1 by Ian Clatworthy
add view-related errors and tests
3080
    _fmt = u"No such view: %(view_name)s."
3081
3082
    def __init__(self, view_name):
3083
        self.view_name = view_name
3084
3085
3086
class ViewsNotSupported(BzrError):
3087
    """Views are not supported by a tree format.
3088
    """
4032.1.2 by John Arbash Meinel
Track down a few more files that have trailing whitespace.
3089
3586.1.1 by Ian Clatworthy
add view-related errors and tests
3090
    _fmt = ("Views are not supported by %(tree)s;"
3091
            " use 'bzr upgrade' to change your tree to a later format.")
3092
3093
    def __init__(self, tree):
3094
        self.tree = tree
3586.1.9 by Ian Clatworthy
first cut at view command
3095
3096
3097
class FileOutsideView(BzrError):
3098
3099
    _fmt = ('Specified file "%(file_name)s" is outside the current view: '
3100
            '%(view_str)s')
3101
3102
    def __init__(self, file_name, view_files):
3103
        self.file_name = file_name
3104
        self.view_str = ", ".join(view_files)
3586.1.35 by Ian Clatworthy
merge bzr.dev r4029
3105
3106
4002.1.7 by Andrew Bennetts
Rename UnresumableWriteGroups to UnresumableWriteGroup.
3107
class UnresumableWriteGroup(BzrError):
4032.1.2 by John Arbash Meinel
Track down a few more files that have trailing whitespace.
3108
4002.1.7 by Andrew Bennetts
Rename UnresumableWriteGroups to UnresumableWriteGroup.
3109
    _fmt = ("Repository %(repository)s cannot resume write group "
4002.1.1 by Andrew Bennetts
Implement suspend_write_group/resume_write_group.
3110
            "%(write_groups)r: %(reason)s")
3111
3112
    internal_error = True
3113
3114
    def __init__(self, repository, write_groups, reason):
3115
        self.repository = repository
3116
        self.write_groups = write_groups
3117
        self.reason = reason
3118
3119
3120
class UnsuspendableWriteGroup(BzrError):
4032.1.2 by John Arbash Meinel
Track down a few more files that have trailing whitespace.
3121
4002.1.1 by Andrew Bennetts
Implement suspend_write_group/resume_write_group.
3122
    _fmt = ("Repository %(repository)s cannot suspend a write group.")
3123
3124
    internal_error = True
3125
3126
    def __init__(self, repository):
3127
        self.repository = repository
4347.2.1 by Jelmer Vernooij
Move dpush onto an InterBranch object.
3128
3129
4347.2.3 by Jelmer Vernooij
Clarify name for LossyPushToSameVCS exception.
3130
class LossyPushToSameVCS(BzrError):
3131
3132
    _fmt = ("Lossy push not possible between %(source_branch)r and "
3133
            "%(target_branch)r that are in the same VCS.")
3134
3135
    internal_error = True
3136
3137
    def __init__(self, source_branch, target_branch):
3138
        self.source_branch = source_branch
3139
        self.target_branch = target_branch
4925.1.1 by Jelmer Vernooij
Print a proper error when attempting to push to a foreign VCS for which
3140
3141
3142
class NoRoundtrippingSupport(BzrError):
3143
3144
    _fmt = ("Roundtripping is not supported between %(source_branch)r and "
3145
            "%(target_branch)r.")
3146
3147
    internal_error = True
3148
3149
    def __init__(self, source_branch, target_branch):
3150
        self.source_branch = source_branch
3151
        self.target_branch = target_branch
4976.1.1 by Jelmer Vernooij
Add FileTimestampUnavailable exception.
3152
3153
3154
class FileTimestampUnavailable(BzrError):
3155
3156
    _fmt = "The filestamp for %(path)s is not available."
3157
3158
    internal_error = True
3159
3160
    def __init__(self, path):
3161
        self.path = path
5051.3.1 by Jelmer Vernooij
Add optional name argument to BzrDir.destroy_branch.
3162
3163
3164
class NoColocatedBranchSupport(BzrError):
3165
5051.3.5 by Jelmer Vernooij
Fix exception error string.
3166
    _fmt = ("%(bzrdir)r does not support co-located branches.")
5051.3.1 by Jelmer Vernooij
Add optional name argument to BzrDir.destroy_branch.
3167
3168
    def __init__(self, bzrdir):
3169
        self.bzrdir = bzrdir
3170
5050.7.2 by Parth Malwankar
recursive binding now shows a clear error
3171
5187.2.6 by Parth Malwankar
lockdir no long mandates whoami but uses unicode version of getuser
3172
class NoWhoami(BzrError):
3173
3174
    _fmt = ('Unable to determine your name.\n'
3175
        "Please, set your name with the 'whoami' command.\n"
3176
        'E.g. bzr whoami "Your Name <name@example.com>"')
3177
5050.7.2 by Parth Malwankar
recursive binding now shows a clear error
3178
5326.2.1 by Parth Malwankar
added InvalidPattern error.
3179
class InvalidPattern(BzrError):
3180
5339.1.1 by Parth Malwankar
fixes errors.InvalidPattern to work on Python2.5
3181
    _fmt = ('Invalid pattern(s) found. %(msg)s')
5326.2.1 by Parth Malwankar
added InvalidPattern error.
3182
5339.1.1 by Parth Malwankar
fixes errors.InvalidPattern to work on Python2.5
3183
    def __init__(self, msg):
3184
        self.msg = msg
5187.2.6 by Parth Malwankar
lockdir no long mandates whoami but uses unicode version of getuser
3185
5050.7.2 by Parth Malwankar
recursive binding now shows a clear error
3186
3187
class RecursiveBind(BzrError):
3188
5050.7.5 by Parth Malwankar
better error message for RecursiveBind
3189
    _fmt = ('Branch "%(branch_url)s" appears to be bound to itself. '
3190
        'Please use `bzr unbind` to fix.')
3191
3192
    def __init__(self, branch_url):
3193
        self.branch_url = branch_url
5050.7.2 by Parth Malwankar
recursive binding now shows a clear error
3194
5676.1.4 by Jelmer Vernooij
merge bzr.dev.
3195
3196
# FIXME: I would prefer to define the config related exception classes in
3197
# config.py but the lazy import mechanism proscribes this -- vila 20101222
3198
class OptionExpansionLoop(BzrError):
3199
3200
    _fmt = 'Loop involving %(refs)r while expanding "%(string)s".'
3201
3202
    def __init__(self, string, refs):
3203
        self.string = string
3204
        self.refs = '->'.join(refs)
3205
3206
3207
class ExpandingUnknownOption(BzrError):
3208
3209
    _fmt = 'Option %(name)s is not defined while expanding "%(string)s".'
3210
3211
    def __init__(self, name, string):
3212
        self.name = name
3213
        self.string = string
5837.1.1 by Jelmer Vernooij
Make Inter.get raise NoCompatibleInter.
3214
3215
3216
class NoCompatibleInter(BzrError):
3217
3218
    _fmt = ('No compatible object available for operations from %(source)r '
3219
            'to %(target)r.')
3220
3221
    def __init__(self, source, target):
3222
        self.source = source
3223
        self.target = target
6060.7.4 by Jelmer Vernooij
Update NEWS
3224
3225
3226
class HpssVfsRequestNotAllowed(BzrError):
3227
3228
    _fmt = ("VFS requests over the smart server are not allowed. Encountered: "
3229
            "%(method)s, %(arguments)s.")
3230
3231
    def __init__(self, method, arguments):
3232
        self.method = method
3233
        self.arguments = arguments
6217.2.1 by Jelmer Vernooij
Allow tree implementations to not support kind changes.
3234
3235
3236
class UnsupportedKindChange(BzrError):
3237
6217.2.2 by Jelmer Vernooij
Tweak error message.
3238
    _fmt = ("Kind change from %(from_kind)s to %(to_kind)s for "
3239
            "%(path)s not supported by format %(format)r")
6217.2.1 by Jelmer Vernooij
Allow tree implementations to not support kind changes.
3240
6217.2.2 by Jelmer Vernooij
Tweak error message.
3241
    def __init__(self, path, from_kind, to_kind, format):
6217.2.1 by Jelmer Vernooij
Allow tree implementations to not support kind changes.
3242
        self.path = path
6217.2.2 by Jelmer Vernooij
Tweak error message.
3243
        self.from_kind = from_kind
3244
        self.to_kind = to_kind
3245
        self.format = format
6289.2.1 by Jelmer Vernooij
Move the primary definition of the patches exceptions to bzrlib.errors.
3246
3247
3248
class PatchSyntax(BzrError):
3249
    """Base class for patch syntax errors."""
3250
3251
3252
class BinaryFiles(BzrError):
3253
3254
    _fmt = 'Binary files section encountered.'
3255
3256
    def __init__(self, orig_name, mod_name):
3257
        self.orig_name = orig_name
3258
        self.mod_name = mod_name
3259
3260
3261
class MalformedPatchHeader(PatchSyntax):
3262
3263
    _fmt = "Malformed patch header.  %(desc)s\n%(line)r"
3264
3265
    def __init__(self, desc, line):
3266
        self.desc = desc
3267
        self.line = line
3268
3269
3270
class MalformedHunkHeader(PatchSyntax):
3271
3272
    _fmt = "Malformed hunk header.  %(desc)s\n%(line)r"
3273
3274
    def __init__(self, desc, line):
3275
        self.desc = desc
3276
        self.line = line
3277
3278
3279
class MalformedLine(PatchSyntax):
3280
3281
    _fmt = "Malformed line.  %(desc)s\n%(line)r"
3282
3283
    def __init__(self, desc, line):
3284
        self.desc = desc
3285
        self.line = line
3286
3287
3288
class PatchConflict(BzrError):
3289
3290
    _fmt = ('Text contents mismatch at line %(line_no)d.  Original has '
3291
            '"%(orig_line)s", but patch says it should be "%(patch_line)s"')
3292
3293
    def __init__(self, line_no, orig_line, patch_line):
3294
        self.line_no = line_no
3295
        self.orig_line = orig_line.rstrip('\n')
3296
        self.patch_line = patch_line.rstrip('\n')