~bzr-pqm/bzr/bzr.dev

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