/brz/remove-bazaar

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