/brz/remove-bazaar

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