/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
1553.5.24 by Martin Pool
Warning to check storage when lock was broken
1
# Copyright (C) 2005, 2006 Canonical
1 by mbp at sourcefrog
import from baz patch-364
2
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.
7
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.
12
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
Exceptions are caught at a high level to report errors to the user, and
20
might also be caught inside the program.  Therefore it needs to be
21
possible to convert them to a meaningful string, and also for them to be
22
interrogated by the program.
23
24
Exceptions are defined such that the arguments given to the constructor
25
are stored in the object as properties of the same name.  When the
26
object is printed as a string, the doc string of the class is used as
27
a format string with the property dictionary available to it.
28
29
This means that exceptions can used like this:
30
31
>>> import sys
32
>>> try:
33
...   raise NotBranchError(path='/foo/bar')
34
... except:
35
...   print sys.exc_type
36
...   print sys.exc_value
1185.50.38 by John Arbash Meinel
Changed exception traceback route to not use hasattr, which generates its own exception.
37
...   path = getattr(sys.exc_value, 'path')
38
...   if path is not None:
39
...     print path
1185.16.61 by mbp at sourcefrog
- start introducing hct error classes
40
bzrlib.errors.NotBranchError
41
Not a branch: /foo/bar
42
/foo/bar
43
44
Therefore:
45
46
 * create a new exception class for any class of error that can be
47
   usefully distinguished.
48
49
 * the printable form of an exception is generated by the base class
50
   __str__ method
1185.33.7 by Martin Pool
Better formatting of builtin errors
51
52
Exception strings should start with a capital letter and not have a final
53
fullstop.
1185.16.61 by mbp at sourcefrog
- start introducing hct error classes
54
"""
55
1614.2.13 by Olaf Conradi
Re-added AmbiguousBase with a deprecated warning.
56
from warnings import warn
57
1185.16.61 by mbp at sourcefrog
- start introducing hct error classes
58
# based on Scott James Remnant's hct error classes
59
1185.16.62 by mbp at sourcefrog
- convert NotBranchError to new exception base
60
# TODO: is there any value in providing the .args field used by standard
61
# python exceptions?   A list of values with no names seems less useful 
62
# to me.
63
1185.16.63 by Martin Pool
- more error conversion
64
# TODO: Perhaps convert the exception to a string at the moment it's 
65
# constructed to make sure it will succeed.  But that says nothing about
66
# exceptions that are never raised.
67
68
# TODO: Convert all the other error classes here to BzrNewError, and eliminate
69
# the old one.
1185.16.62 by mbp at sourcefrog
- convert NotBranchError to new exception base
70
1662.1.12 by Martin Pool
Translate unknown sftp errors to PathError, no NoSuchFile
71
# TODO: The pattern (from hct) of using classes docstrings as message
72
# templates is cute but maybe not such a great idea - perhaps should have a
73
# separate static message_template.
74
1185.16.61 by mbp at sourcefrog
- start introducing hct error classes
75
1 by mbp at sourcefrog
import from baz patch-364
76
class BzrError(StandardError):
1193 by Martin Pool
- better string formatting of BzrErrors with explanation
77
    def __str__(self):
1393.1.64 by Martin Pool
- improved display of some errors, including NotBranchError
78
        # XXX: Should we show the exception class in 
79
        # exceptions that don't provide their own message?  
80
        # maybe it should be done at a higher level
81
        ## n = self.__class__.__name__ + ': '
82
        n = ''
1195 by Martin Pool
- better error display
83
        if len(self.args) == 1:
1449 by Robert Collins
teach check about ghosts
84
            return str(self.args[0])
1195 by Martin Pool
- better error display
85
        elif len(self.args) == 2:
1193 by Martin Pool
- better string formatting of BzrErrors with explanation
86
            # further explanation or suggestions
1405 by Robert Collins
remove some of the upgrade code that was duplicated with inventory_entry, and give all inventory entries a weave
87
            try:
1393.1.64 by Martin Pool
- improved display of some errors, including NotBranchError
88
                return n + '\n  '.join([self.args[0]] + self.args[1])
1405 by Robert Collins
remove some of the upgrade code that was duplicated with inventory_entry, and give all inventory entries a weave
89
            except TypeError:
1393.1.64 by Martin Pool
- improved display of some errors, including NotBranchError
90
                return n + "%r" % self
1193 by Martin Pool
- better string formatting of BzrErrors with explanation
91
        else:
1393.1.64 by Martin Pool
- improved display of some errors, including NotBranchError
92
            return n + `self.args`
1193 by Martin Pool
- better string formatting of BzrErrors with explanation
93
1185.1.14 by Robert Collins
remove more duplicate merged hunks. Bad MERGE3, BAD.
94
1185.16.62 by mbp at sourcefrog
- convert NotBranchError to new exception base
95
class BzrNewError(BzrError):
1185.16.61 by mbp at sourcefrog
- start introducing hct error classes
96
    """bzr error"""
97
    # base classes should override the docstring with their human-
98
    # readable explanation
99
100
    def __init__(self, **kwds):
101
        for key, value in kwds.items():
102
            setattr(self, key, value)
103
104
    def __str__(self):
105
        try:
106
            return self.__doc__ % self.__dict__
107
        except (NameError, ValueError, KeyError), e:
108
            return 'Unprintable exception %s: %s' \
109
                % (self.__class__.__name__, str(e))
110
111
1185.16.63 by Martin Pool
- more error conversion
112
class BzrCheckError(BzrNewError):
113
    """Internal check failed: %(message)s"""
1508.1.22 by Robert Collins
implement out of date working tree checks in commit.
114
1185.16.63 by Martin Pool
- more error conversion
115
    def __init__(self, message):
1185.16.103 by mbp at sourcefrog
Fix up all calls to InvalidRevisionId() to specify parameters.
116
        BzrNewError.__init__(self)
1185.16.63 by Martin Pool
- more error conversion
117
        self.message = message
118
119
120
class InvalidEntryName(BzrNewError):
121
    """Invalid entry name: %(name)s"""
122
    def __init__(self, name):
1185.16.103 by mbp at sourcefrog
Fix up all calls to InvalidRevisionId() to specify parameters.
123
        BzrNewError.__init__(self)
1185.16.63 by Martin Pool
- more error conversion
124
        self.name = name
125
126
127
class InvalidRevisionNumber(BzrNewError):
128
    """Invalid revision number %(revno)d"""
129
    def __init__(self, revno):
1185.16.103 by mbp at sourcefrog
Fix up all calls to InvalidRevisionId() to specify parameters.
130
        BzrNewError.__init__(self)
1185.16.63 by Martin Pool
- more error conversion
131
        self.revno = revno
132
133
134
class InvalidRevisionId(BzrNewError):
1185.16.103 by mbp at sourcefrog
Fix up all calls to InvalidRevisionId() to specify parameters.
135
    """Invalid revision-id {%(revision_id)s} in %(branch)s"""
136
    def __init__(self, revision_id, branch):
137
        BzrNewError.__init__(self)
1185.12.90 by Aaron Bentley
Fixed InvalidRevisionID handling in Branch.get_revision_xml
138
        self.revision_id = revision_id
1185.16.103 by mbp at sourcefrog
Fix up all calls to InvalidRevisionId() to specify parameters.
139
        self.branch = branch
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
140
141
1497 by Robert Collins
Move Branch.read_working_inventory to WorkingTree.
142
class NoWorkingTree(BzrNewError):
1662.1.6 by Martin Pool
Fix formatting of NoWorkingTree and NotLocalUrl exceptions
143
    """No WorkingTree exists for %(base)s."""
1497 by Robert Collins
Move Branch.read_working_inventory to WorkingTree.
144
    
145
    def __init__(self, base):
146
        BzrNewError.__init__(self)
147
        self.base = base
1506 by Robert Collins
Merge Johns current integration work.
148
149
1534.4.42 by Robert Collins
add working tree to the BzrDir facilities.
150
class NotLocalUrl(BzrNewError):
1662.1.6 by Martin Pool
Fix formatting of NoWorkingTree and NotLocalUrl exceptions
151
    """%(url)s is not a local path."""
1534.4.42 by Robert Collins
add working tree to the BzrDir facilities.
152
    
153
    def __init__(self, url):
154
        BzrNewError.__init__(self)
155
        self.url = url
156
157
329 by Martin Pool
- refactor command functions into command classes
158
class BzrCommandError(BzrError):
159
    # Error from malformed user command
1495 by Robert Collins
Add a --create-prefix to the new push command.
160
    # This is being misused as a generic exception
161
    # pleae subclass. RBC 20051030
1185.54.18 by Aaron Bentley
Noted difference of opinion wrt BzrCommandError
162
    #
163
    # I think it's a waste of effort to differentiate between errors that
164
    # are not intended to be caught anyway.  UI code need not subclass
165
    # BzrCommandError, and non-UI code should not throw a subclass of
166
    # BzrCommandError.  ADHB 20051211
1393.1.64 by Martin Pool
- improved display of some errors, including NotBranchError
167
    def __str__(self):
168
        return self.args[0]
1 by mbp at sourcefrog
import from baz patch-364
169
1495 by Robert Collins
Add a --create-prefix to the new push command.
170
171
class BzrOptionError(BzrCommandError):
172
    """Some missing or otherwise incorrect option was supplied."""
173
174
    
1185.16.65 by mbp at sourcefrog
- new commit --strict option
175
class StrictCommitFailed(Exception):
176
    """Commit refused because there are unknowns in the tree."""
1 by mbp at sourcefrog
import from baz patch-364
177
1185.31.41 by John Arbash Meinel
Creating a PathNotChild exception, and using relpath in HTTPTestUtil
178
1662.1.12 by Martin Pool
Translate unknown sftp errors to PathError, no NoSuchFile
179
# XXX: Should be unified with TransportError; they seem to represent the
180
# same thing
1185.31.44 by John Arbash Meinel
Cleaned up Exceptions for all transports.
181
class PathError(BzrNewError):
182
    """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.
183
1185.31.44 by John Arbash Meinel
Cleaned up Exceptions for all transports.
184
    def __init__(self, path, extra=None):
185
        BzrNewError.__init__(self)
186
        self.path = path
187
        if extra:
188
            self.extra = ': ' + str(extra)
189
        else:
190
            self.extra = ''
191
192
193
class NoSuchFile(PathError):
194
    """No such file: %(path)r%(extra)s"""
195
196
197
class FileExists(PathError):
198
    """File exists: %(path)r%(extra)s"""
199
200
1553.5.10 by Martin Pool
New DirectoryNotEmpty exception, and raise this from local and memory
201
class DirectoryNotEmpty(PathError):
202
    """Directory not empty: %(path)r%(extra)s"""
203
204
1558.10.1 by Aaron Bentley
Handle lockdirs over NFS properly
205
class ResourceBusy(PathError):
206
    """Device or resource busy: %(path)r%(extra)s"""
207
208
1185.31.44 by John Arbash Meinel
Cleaned up Exceptions for all transports.
209
class PermissionDenied(PathError):
210
    """Permission denied: %(path)r%(extra)s"""
211
212
1185.85.76 by John Arbash Meinel
Adding an InvalidURL so transports can report they expect utf-8 quoted paths. Updated tests
213
class InvalidURL(PathError):
214
    """Invalid url supplied to transport: %(path)r%(extra)s"""
215
216
1685.1.55 by John Arbash Meinel
Adding bzrlib.urlutils.join() to handle joining URLs
217
class InvalidURLJoin(PathError):
218
    """Invalid URL join request: %(args)s%(extra)s"""
219
220
    def __init__(self, msg, base, args):
221
        PathError.__init__(self, base, msg)
222
        self.args = [base]
223
        self.args.extend(args)
224
225
1185.31.41 by John Arbash Meinel
Creating a PathNotChild exception, and using relpath in HTTPTestUtil
226
class PathNotChild(BzrNewError):
1185.31.44 by John Arbash Meinel
Cleaned up Exceptions for all transports.
227
    """Path %(path)r is not a child of path %(base)r%(extra)s"""
228
    def __init__(self, path, base, extra=None):
1185.31.41 by John Arbash Meinel
Creating a PathNotChild exception, and using relpath in HTTPTestUtil
229
        BzrNewError.__init__(self)
230
        self.path = path
231
        self.base = base
1185.31.44 by John Arbash Meinel
Cleaned up Exceptions for all transports.
232
        if extra:
233
            self.extra = ': ' + str(extra)
234
        else:
235
            self.extra = ''
1185.31.41 by John Arbash Meinel
Creating a PathNotChild exception, and using relpath in HTTPTestUtil
236
237
1685.1.60 by Martin Pool
[broken] NotBranchError should unescape the url if possible
238
# TODO: This is given a URL; we try to unescape it but doing that from inside
239
# the exception object is a bit undesirable.
240
# 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.
241
class NotBranchError(PathError):
1685.1.60 by Martin Pool
[broken] NotBranchError should unescape the url if possible
242
    "Not a branch: %(path)s" 
243
244
    def __init__(self, path):
245
       import bzrlib.urlutils as urlutils
246
       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.
247
248
249
class AlreadyBranchError(PathError):
1662.1.19 by Martin Pool
Better error message when initting existing tree
250
    """Already a branch: %(path)s."""
251
252
253
class BranchExistsWithoutWorkingTree(PathError):
254
    """Directory contains a branch, but no working tree \
255
(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
256
573 by Martin Pool
- new exception NotBranchError
257
1534.4.47 by Robert Collins
Split out repository into .bzr/repository
258
class NoRepositoryPresent(BzrNewError):
1185.50.89 by John Arbash Meinel
grammer fix.
259
    """No repository present: %(path)r"""
1534.4.47 by Robert Collins
Split out repository into .bzr/repository
260
    def __init__(self, bzrdir):
261
        BzrNewError.__init__(self)
262
        self.path = bzrdir.transport.clone('..').base
263
264
1185.35.32 by Aaron Bentley
Fixed handling of files in mixed branches
265
class FileInWrongBranch(BzrNewError):
266
    """File %(path)s in 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.
267
1185.35.32 by Aaron Bentley
Fixed handling of files in mixed branches
268
    def __init__(self, branch, path):
269
        BzrNewError.__init__(self)
270
        self.branch = branch
271
        self.branch_base = branch.base
272
        self.path = path
273
274
1185.1.53 by Robert Collins
raise a specific error on unsupported branches so that they can be distinguished from generic errors
275
class UnsupportedFormatError(BzrError):
1534.4.7 by Robert Collins
Move downlevel check up to the Branch.open logic, removing it from the Branch constructor and deprecating relax_version_check to the same.
276
    """Specified path is a bzr branch that we recognize but cannot read."""
1185.1.53 by Robert Collins
raise a specific error on unsupported branches so that they can be distinguished from generic errors
277
    def __str__(self):
278
        return 'unsupported branch format: %s' % self.args[0]
279
280
1534.4.7 by Robert Collins
Move downlevel check up to the Branch.open logic, removing it from the Branch constructor and deprecating relax_version_check to the same.
281
class UnknownFormatError(BzrError):
282
    """Specified path is a bzr branch whose format we do not recognize."""
283
    def __str__(self):
284
        return 'unknown branch format: %s' % self.args[0]
285
286
1534.4.44 by Robert Collins
Make a new BzrDir format that uses a versioned branch format in a branch/ subdirectory.
287
class IncompatibleFormat(BzrNewError):
288
    """Format %(format)s is not compatible with .bzr version %(bzrdir)s."""
289
290
    def __init__(self, format, bzrdir_format):
291
        BzrNewError.__init__(self)
292
        self.format = format
293
        self.bzrdir = bzrdir_format
294
295
1185.16.72 by Martin Pool
[merge] from robert and fix up tests
296
class NotVersionedError(BzrNewError):
297
    """%(path)s is not versioned"""
298
    def __init__(self, path):
299
        BzrNewError.__init__(self)
300
        self.path = path
753 by Martin Pool
- new exception NotVersionedError
301
302
1658.1.9 by Martin Pool
Give an error for bzr diff on an nonexistent file (Malone #3619)
303
class PathsNotVersionedError(BzrNewError):
304
    # used when reporting several paths are not versioned
305
    """Path(s) are not versioned: %(paths_as_string)s"""
306
307
    def __init__(self, paths):
308
        from bzrlib.osutils import quotefn
309
        BzrNewError.__init__(self)
310
        self.paths = paths
311
        self.paths_as_string = ' '.join([quotefn(p) for p in paths])
312
313
1662.1.9 by Martin Pool
Give a clear error for bzr status of an unversioned, nonexistent file. (Malone #3619)
314
class PathsDoNotExist(BzrNewError):
1662.1.14 by Martin Pool
(PathsDoNotExist) review style comments
315
    """Path(s) do not exist: %(paths_as_string)s"""
316
1662.1.9 by Martin Pool
Give a clear error for bzr status of an unversioned, nonexistent file. (Malone #3619)
317
    # used when reporting that paths are neither versioned nor in the working
318
    # tree
319
320
    def __init__(self, paths):
1662.1.14 by Martin Pool
(PathsDoNotExist) review style comments
321
        # circular import
1662.1.9 by Martin Pool
Give a clear error for bzr status of an unversioned, nonexistent file. (Malone #3619)
322
        from bzrlib.osutils import quotefn
323
        BzrNewError.__init__(self)
324
        self.paths = paths
325
        self.paths_as_string = ' '.join([quotefn(p) for p in paths])
326
327
599 by Martin Pool
- better error reporting from smart_add
328
class BadFileKindError(BzrError):
329
    """Specified file is of a kind that cannot be added.
330
331
    (For example a symlink or device file.)"""
332
333
334
class ForbiddenFileError(BzrError):
335
    """Cannot operate on a file because it is a control file."""
336
337
1553.5.11 by Martin Pool
Change some lock and transaction related exceptions to BzrNewException style
338
class LockError(BzrNewError):
339
    """Lock error: %(message)s"""
1185.16.63 by Martin Pool
- more error conversion
340
    # All exceptions from the lock/unlock functions should be from
341
    # this exception class.  They will be translated as necessary. The
342
    # original exception is available as e.original_error
1553.5.11 by Martin Pool
Change some lock and transaction related exceptions to BzrNewException style
343
    #
344
    # New code should prefer to raise specific subclasses
345
    def __init__(self, message):
346
        self.message = message
882 by Martin Pool
- Optionally raise EmptyCommit if there are no changes. Test for this.
347
348
1417.1.6 by Robert Collins
introduce transactions for grouping actions done to and with branches
349
class CommitNotPossible(LockError):
350
    """A commit was attempted but we do not have a write lock open."""
1553.5.11 by Martin Pool
Change some lock and transaction related exceptions to BzrNewException style
351
    def __init__(self):
352
        pass
1417.1.6 by Robert Collins
introduce transactions for grouping actions done to and with branches
353
354
355
class AlreadyCommitted(LockError):
356
    """A rollback was requested, but is not able to be accomplished."""
1553.5.11 by Martin Pool
Change some lock and transaction related exceptions to BzrNewException style
357
    def __init__(self):
358
        pass
1417.1.6 by Robert Collins
introduce transactions for grouping actions done to and with branches
359
360
1417.1.8 by Robert Collins
use transactions in the weave store interface, which enables caching for log
361
class ReadOnlyError(LockError):
1553.5.33 by Martin Pool
LockDir review comment fixes
362
    """A write attempt was made in a read only transaction on %(obj)s"""
363
    def __init__(self, obj):
364
        self.obj = obj
1553.5.11 by Martin Pool
Change some lock and transaction related exceptions to BzrNewException style
365
366
1594.2.21 by Robert Collins
Teach versioned files to prevent mutation after finishing.
367
class OutSideTransaction(BzrNewError):
368
    """A transaction related operation was attempted after the transaction finished."""
369
370
1553.5.36 by Martin Pool
Clean up duplicate BranchNotLocked error and rename to ObjectNotLocked
371
class ObjectNotLocked(LockError):
372
    """%(obj)r is not locked"""
373
    # this can indicate that any particular object is not locked; see also
374
    # LockNotHeld which means that a particular *lock* object is not held by
375
    # the caller -- perhaps they should be unified.
376
    def __init__(self, obj):
377
        self.obj = obj
1553.5.11 by Martin Pool
Change some lock and transaction related exceptions to BzrNewException style
378
379
380
class ReadOnlyObjectDirtiedError(ReadOnlyError):
381
    """Cannot change object %(obj)r in read only transaction"""
382
    def __init__(self, obj):
383
        self.obj = obj
384
385
386
class UnlockableTransport(LockError):
387
    """Cannot lock: transport is read only: %(transport)s"""
388
    def __init__(self, transport):
389
        self.transport = transport
390
391
392
class LockContention(LockError):
393
    """Could not acquire lock %(lock)s"""
394
    # TODO: show full url for lock, combining the transport and relative bits?
395
    def __init__(self, lock):
396
        self.lock = lock
397
398
1553.5.23 by Martin Pool
Start LockDir.confirm method and LockBroken exception
399
class LockBroken(LockError):
1553.5.24 by Martin Pool
Warning to check storage when lock was broken
400
    """Lock was broken while still open: %(lock)s - check storage consistency!"""
1553.5.23 by Martin Pool
Start LockDir.confirm method and LockBroken exception
401
    def __init__(self, lock):
402
        self.lock = lock
403
404
1553.5.27 by Martin Pool
Confirm that only the intended holder of a lock was broken.
405
class LockBreakMismatch(LockError):
406
    """Lock was released and re-acquired before being broken: %(lock)s: held by %(holder)r, wanted to break %(target)r"""
407
    def __init__(self, lock, holder, target):
408
        self.lock = lock
409
        self.holder = holder
410
        self.target = target
411
412
1553.5.11 by Martin Pool
Change some lock and transaction related exceptions to BzrNewException style
413
class LockNotHeld(LockError):
414
    """Lock not held: %(lock)s"""
415
    def __init__(self, lock):
416
        self.lock = lock
417
418
1185.16.63 by Martin Pool
- more error conversion
419
class PointlessCommit(BzrNewError):
1185.16.64 by Martin Pool
- more error conversions
420
    """No changes to commit"""
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
421
1551.3.1 by Aaron Bentley
PEP8 fixes
422
1534.4.13 by Robert Collins
Give a reasonable warning on attempts to upgrade a readonly url.
423
class UpgradeReadonly(BzrNewError):
424
    """Upgrade URL cannot work with readonly URL's."""
425
426
1534.5.7 by Robert Collins
Start factoring out the upgrade policy logic.
427
class UpToDateFormat(BzrNewError):
428
    """The branch format %(format)s is already at the most recent format."""
429
430
    def __init__(self, format):
431
        BzrNewError.__init__(self)
432
        self.format = format
433
434
1587.1.6 by Robert Collins
Update bound branch implementation to 0.8.
435
1185.22.1 by Michael Ellerman
Implement strict commits with --strict flag.
436
class StrictCommitFailed(Exception):
437
    """Commit refused because there are unknowns in the tree."""
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
438
1551.2.1 by Aaron Bentley
recommit 1527 PEP8 fixes
439
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
440
class NoSuchRevision(BzrError):
441
    def __init__(self, branch, revision):
442
        self.branch = branch
443
        self.revision = revision
444
        msg = "Branch %s has no revision %s" % (branch, revision)
445
        BzrError.__init__(self, msg)
446
1034 by Martin Pool
- merge bzrlib.revision.is_ancestor from aaron
447
1192 by Martin Pool
- clean up code for retrieving stored inventories
448
class HistoryMissing(BzrError):
449
    def __init__(self, branch, object_type, object_id):
450
        self.branch = branch
451
        BzrError.__init__(self,
452
                          '%s is missing %s {%s}'
453
                          % (branch, object_type, object_id))
454
455
1185.2.1 by Lalo Martins
moving DivergedBranches from bzrlib.branch to bzrlib.errors, obeying:
456
class DivergedBranches(BzrError):
1649.1.1 by Robert Collins
* 'pull' and 'push' now normalise the revision history, so that any two
457
1185.2.1 by Lalo Martins
moving DivergedBranches from bzrlib.branch to bzrlib.errors, obeying:
458
    def __init__(self, branch1, branch2):
1185.56.1 by Michael Ellerman
Simplify handling of DivergedBranches in cmd_pull()
459
        BzrError.__init__(self, "These branches have diverged.  Try merge.")
1185.2.1 by Lalo Martins
moving DivergedBranches from bzrlib.branch to bzrlib.errors, obeying:
460
        self.branch1 = branch1
461
        self.branch2 = branch2
462
1390 by Robert Collins
pair programming worx... merge integration and weave
463
1105 by Martin Pool
- expose 'find-merge-base' as a new expert command,
464
class UnrelatedBranches(BzrCommandError):
465
    def __init__(self):
466
        msg = "Branches have no common ancestor, and no base revision"\
467
            " specified."
468
        BzrCommandError.__init__(self, msg)
469
1551.2.1 by Aaron Bentley
recommit 1527 PEP8 fixes
470
974.1.80 by Aaron Bentley
Improved merge error handling and testing
471
class NoCommonAncestor(BzrError):
472
    def __init__(self, revision_a, revision_b):
473
        msg = "Revisions have no common ancestor: %s %s." \
474
            % (revision_a, revision_b) 
475
        BzrError.__init__(self, msg)
476
1551.2.1 by Aaron Bentley
recommit 1527 PEP8 fixes
477
974.1.80 by Aaron Bentley
Improved merge error handling and testing
478
class NoCommonRoot(BzrError):
479
    def __init__(self, revision_a, revision_b):
480
        msg = "Revisions are not derived from the same root: %s %s." \
481
            % (revision_a, revision_b) 
482
        BzrError.__init__(self, msg)
1105 by Martin Pool
- expose 'find-merge-base' as a new expert command,
483
1551.2.1 by Aaron Bentley
recommit 1527 PEP8 fixes
484
1587.1.6 by Robert Collins
Update bound branch implementation to 0.8.
485
974.2.7 by aaron.bentley at utoronto
Merged from bzr.24
486
class NotAncestor(BzrError):
487
    def __init__(self, rev_id, not_ancestor_id):
1185.1.14 by Robert Collins
remove more duplicate merged hunks. Bad MERGE3, BAD.
488
        msg = "Revision %s is not an ancestor of %s" % (not_ancestor_id, 
489
                                                        rev_id)
490
        BzrError.__init__(self, msg)
491
        self.rev_id = rev_id
492
        self.not_ancestor_id = not_ancestor_id
1185.1.12 by Robert Collins
merge in lsdiff/filterdiff friendliness
493
494
974.1.30 by aaron.bentley at utoronto
Changed copy_multi to permit failure and return a tuple, tested missing required revisions
495
class InstallFailed(BzrError):
496
    def __init__(self, revisions):
1185.1.14 by Robert Collins
remove more duplicate merged hunks. Bad MERGE3, BAD.
497
        msg = "Could not install revisions:\n%s" % " ,".join(revisions)
498
        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
499
        self.revisions = revisions
1154 by Martin Pool
- fix imports for moved errors
500
501
1614.2.13 by Olaf Conradi
Re-added AmbiguousBase with a deprecated warning.
502
class AmbiguousBase(BzrError):
503
    def __init__(self, bases):
504
        warn("BzrError AmbiguousBase has been deprecated as of bzrlib 0.8.",
505
                DeprecationWarning)
506
        msg = "The correct base is unclear, becase %s are all equally close" %\
507
            ", ".join(bases)
508
        BzrError.__init__(self, msg)
509
        self.bases = bases
510
511
974.1.80 by Aaron Bentley
Improved merge error handling and testing
512
class NoCommits(BzrError):
513
    def __init__(self, branch):
514
        msg = "Branch %s has no commits." % branch
515
        BzrError.__init__(self, msg)
1185.10.1 by Aaron Bentley
Added --basis option to bzr branch
516
1551.2.1 by Aaron Bentley
recommit 1527 PEP8 fixes
517
1185.10.1 by Aaron Bentley
Added --basis option to bzr branch
518
class UnlistableStore(BzrError):
519
    def __init__(self, store):
520
        BzrError.__init__(self, "Store %s is not listable" % store)
521
1551.2.1 by Aaron Bentley
recommit 1527 PEP8 fixes
522
1587.1.6 by Robert Collins
Update bound branch implementation to 0.8.
523
1185.10.1 by Aaron Bentley
Added --basis option to bzr branch
524
class UnlistableBranch(BzrError):
525
    def __init__(self, br):
526
        BzrError.__init__(self, "Stores for branch %s are not listable" % br)
1392 by Robert Collins
reinstate testfetch test case
527
528
1505.1.24 by John Arbash Meinel
Updated commit to handle bound branches. Included test to handle commit after merge
529
class BoundBranchOutOfDate(BzrNewError):
530
    """Bound branch %(branch)s is out of date with master branch %(master)s."""
531
    def __init__(self, branch, master):
532
        BzrNewError.__init__(self)
533
        self.branch = branch
534
        self.master = master
535
536
        
537
class CommitToDoubleBoundBranch(BzrNewError):
538
    """Cannot commit to branch %(branch)s. It is bound to %(master)s, which is bound to %(remote)s."""
539
    def __init__(self, branch, master, remote):
540
        BzrNewError.__init__(self)
541
        self.branch = branch
542
        self.master = master
543
        self.remote = remote
544
1505.1.25 by John Arbash Meinel
Updated pull. Now all paths which call set_revision_history maintain the branch invariant. All tests pass.
545
546
class OverwriteBoundBranch(BzrNewError):
547
    """Cannot pull --overwrite to a branch which is bound %(branch)s"""
548
    def __init__(self, branch):
549
        BzrNewError.__init__(self)
550
        self.branch = branch
551
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
552
553
class BoundBranchConnectionFailure(BzrNewError):
554
    """Unable to connect to target of bound branch %(branch)s => %(target)s: %(error)s"""
555
    def __init__(self, branch, target, error):
556
        BzrNewError.__init__(self)
557
        self.branch = branch
558
        self.target = target
559
        self.error = error
560
561
1185.16.116 by mbp at sourcefrog
Move weave errors into bzrlib.errors and make consistent with new system.
562
class WeaveError(BzrNewError):
563
    """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.
564
1185.16.116 by mbp at sourcefrog
Move weave errors into bzrlib.errors and make consistent with new system.
565
    def __init__(self, message=None):
566
        BzrNewError.__init__(self)
567
        self.message = message
568
569
570
class WeaveRevisionAlreadyPresent(WeaveError):
571
    """Revision {%(revision_id)s} already present in %(weave)s"""
572
    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.
573
1185.16.116 by mbp at sourcefrog
Move weave errors into bzrlib.errors and make consistent with new system.
574
        WeaveError.__init__(self)
575
        self.revision_id = revision_id
576
        self.weave = weave
577
578
579
class WeaveRevisionNotPresent(WeaveError):
580
    """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.
581
1185.16.116 by mbp at sourcefrog
Move weave errors into bzrlib.errors and make consistent with new system.
582
    def __init__(self, revision_id, weave):
583
        WeaveError.__init__(self)
584
        self.revision_id = revision_id
585
        self.weave = weave
586
587
588
class WeaveFormatError(WeaveError):
589
    """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.
590
1185.16.116 by mbp at sourcefrog
Move weave errors into bzrlib.errors and make consistent with new system.
591
    def __init__(self, what):
592
        WeaveError.__init__(self)
593
        self.what = what
594
595
596
class WeaveParentMismatch(WeaveError):
597
    """Parents are mismatched between two revisions."""
598
    
1393.2.1 by John Arbash Meinel
Merged in split-storage-2 branch. Need to cleanup a little bit more still.
599
1185.50.23 by John Arbash Meinel
Adding sha1 check when weave extracts a text.
600
class WeaveInvalidChecksum(WeaveError):
601
    """Text did not match it's checksum: %(message)s"""
602
603
1551.3.11 by Aaron Bentley
Merge from Robert
604
class WeaveTextDiffers(WeaveError):
605
    """Weaves differ on text content. Revision: {%(revision_id)s}, %(weave_a)s, %(weave_b)s"""
606
607
    def __init__(self, revision_id, weave_a, weave_b):
608
        WeaveError.__init__(self)
609
        self.revision_id = revision_id
610
        self.weave_a = weave_a
611
        self.weave_b = weave_b
612
613
1534.7.158 by Aaron Bentley
Merged John Meinel's integration
614
class WeaveTextDiffers(WeaveError):
615
    """Weaves differ on text content. Revision: {%(revision_id)s}, %(weave_a)s, %(weave_b)s"""
616
617
    def __init__(self, revision_id, weave_a, weave_b):
618
        WeaveError.__init__(self)
619
        self.revision_id = revision_id
620
        self.weave_a = weave_a
621
        self.weave_b = weave_b
622
623
1563.2.1 by Robert Collins
Merge in a variation of the versionedfile api from versioned-file.
624
class VersionedFileError(BzrNewError):
625
    """Versioned file error."""
626
627
628
class RevisionNotPresent(VersionedFileError):
629
    """Revision {%(revision_id)s} not present in %(file_id)s."""
630
631
    def __init__(self, revision_id, file_id):
632
        VersionedFileError.__init__(self)
633
        self.revision_id = revision_id
634
        self.file_id = file_id
635
636
637
class RevisionAlreadyPresent(VersionedFileError):
638
    """Revision {%(revision_id)s} already present in %(file_id)s."""
639
640
    def __init__(self, revision_id, file_id):
641
        VersionedFileError.__init__(self)
642
        self.revision_id = revision_id
643
        self.file_id = file_id
644
645
646
class KnitError(BzrNewError):
647
    """Knit error"""
648
649
650
class KnitHeaderError(KnitError):
651
    """Knit header error: %(badline)r unexpected"""
652
653
    def __init__(self, badline):
654
        KnitError.__init__(self)
655
        self.badline = badline
656
657
658
class KnitCorrupt(KnitError):
659
    """Knit %(filename)s corrupt: %(how)s"""
660
661
    def __init__(self, filename, how):
662
        KnitError.__init__(self)
663
        self.filename = filename
664
        self.how = how
665
666
1185.31.12 by John Arbash Meinel
Refactored the export code to make it easier to add new export formats.
667
class NoSuchExportFormat(BzrNewError):
668
    """Export format %(format)r not supported"""
669
    def __init__(self, format):
670
        BzrNewError.__init__(self)
671
        self.format = format
672
673
1185.11.9 by John Arbash Meinel
Most tests pass, some problems with unavailable socket recv
674
class TransportError(BzrError):
675
    """All errors thrown by Transport implementations should derive
676
    from this class.
677
    """
678
    def __init__(self, msg=None, orig_error=None):
679
        if msg is None and orig_error is not None:
680
            msg = str(orig_error)
681
        BzrError.__init__(self, msg)
682
        self.msg = msg
683
        self.orig_error = orig_error
684
1551.2.1 by Aaron Bentley
recommit 1527 PEP8 fixes
685
1185.11.9 by John Arbash Meinel
Most tests pass, some problems with unavailable socket recv
686
# A set of semi-meaningful errors which can be thrown
687
class TransportNotPossible(TransportError):
688
    """This is for transports where a specific function is explicitly not
689
    possible. Such as pushing files to an HTTP server.
690
    """
691
    pass
692
1185.31.44 by John Arbash Meinel
Cleaned up Exceptions for all transports.
693
694
class ConnectionError(TransportError):
695
    """A connection problem prevents file retrieval.
1185.35.31 by Aaron Bentley
Throw ConnectionError instead of NoSuchFile except when we get a 404
696
    This does not indicate whether the file exists or not; it indicates that a
697
    precondition for requesting the file was not met.
698
    """
1185.31.44 by John Arbash Meinel
Cleaned up Exceptions for all transports.
699
    def __init__(self, msg=None, orig_error=None):
700
        TransportError.__init__(self, msg=msg, orig_error=orig_error)
701
1185.11.9 by John Arbash Meinel
Most tests pass, some problems with unavailable socket recv
702
703
class ConnectionReset(TransportError):
704
    """The connection has been closed."""
705
    pass
706
1551.2.1 by Aaron Bentley
recommit 1527 PEP8 fixes
707
1185.14.10 by Aaron Bentley
Commit aborts with conflicts in the tree.
708
class ConflictsInTree(BzrError):
709
    def __init__(self):
710
        BzrError.__init__(self, "Working tree has conflicts.")
1185.12.49 by Aaron Bentley
Switched to ConfigObj
711
1551.2.1 by Aaron Bentley
recommit 1527 PEP8 fixes
712
1185.12.49 by Aaron Bentley
Switched to ConfigObj
713
class ParseConfigError(BzrError):
714
    def __init__(self, errors, filename):
715
        if filename is None:
716
            filename = ""
717
        message = "Error(s) parsing config file %s:\n%s" % \
718
            (filename, ('\n'.join(e.message for e in errors)))
719
        BzrError.__init__(self, message)
1185.12.52 by Aaron Bentley
Merged more config stuff from Robert
720
1551.2.1 by Aaron Bentley
recommit 1527 PEP8 fixes
721
1442.1.58 by Robert Collins
gpg signing of content
722
class SigningFailed(BzrError):
723
    def __init__(self, command_line):
724
        BzrError.__init__(self, "Failed to gpg sign data with command '%s'"
725
                               % command_line)
1185.12.83 by Aaron Bentley
Preliminary weave merge support
726
1551.2.1 by Aaron Bentley
recommit 1527 PEP8 fixes
727
1185.12.83 by Aaron Bentley
Preliminary weave merge support
728
class WorkingTreeNotRevision(BzrError):
729
    def __init__(self, tree):
730
        BzrError.__init__(self, "The working tree for %s has changed since"
731
                          " last commit, but weave merge requires that it be"
732
                          " unchanged." % tree.basedir)
1185.12.104 by Aaron Bentley
Merged Martin's latest
733
1551.2.1 by Aaron Bentley
recommit 1527 PEP8 fixes
734
1185.24.1 by Aaron Bentley
Got reprocessing working
735
class CantReprocessAndShowBase(BzrNewError):
736
    """Can't reprocess and show base.
737
Reprocessing obscures relationship of conflicting lines to base."""
1185.24.2 by Aaron Bentley
Merge from mainline
738
1551.2.1 by Aaron Bentley
recommit 1527 PEP8 fixes
739
1185.16.114 by mbp at sourcefrog
Improved topological sort
740
class GraphCycleError(BzrNewError):
741
    """Cycle in graph %(graph)r"""
742
    def __init__(self, graph):
743
        BzrNewError.__init__(self)
744
        self.graph = graph
1185.35.1 by Aaron Bentley
Implemented conflicts.restore
745
1505.1.23 by John Arbash Meinel
Whitespace cleanup of bzrlib.errors
746
1185.35.1 by Aaron Bentley
Implemented conflicts.restore
747
class NotConflicted(BzrNewError):
1185.35.4 by Aaron Bentley
Implemented remerge
748
    """File %(filename)s is not conflicted."""
1534.3.1 by Robert Collins
* bzrlib.osutils.safe_unicode now exists to provide parameter coercion
749
1185.35.1 by Aaron Bentley
Implemented conflicts.restore
750
    def __init__(self, filename):
751
        BzrNewError.__init__(self)
752
        self.filename = filename
1185.35.13 by Aaron Bentley
Merged Martin
753
1505.1.23 by John Arbash Meinel
Whitespace cleanup of bzrlib.errors
754
1492 by Robert Collins
Support decoration of commands.
755
class MustUseDecorated(Exception):
756
    """A decorating function has requested its original command be used.
757
    
758
    This should never escape bzr, so does not need to be printable.
759
    """
760
1505.1.23 by John Arbash Meinel
Whitespace cleanup of bzrlib.errors
761
1185.35.42 by Aaron Bentley
Fixed fetch to be safer wrt ghosts and corrupt branches
762
class MissingText(BzrNewError):
763
    """Branch %(base)s is missing revision %(text_revision)s of %(file_id)s"""
1534.3.1 by Robert Collins
* bzrlib.osutils.safe_unicode now exists to provide parameter coercion
764
1185.35.42 by Aaron Bentley
Fixed fetch to be safer wrt ghosts and corrupt branches
765
    def __init__(self, branch, text_revision, file_id):
1534.3.1 by Robert Collins
* bzrlib.osutils.safe_unicode now exists to provide parameter coercion
766
        BzrNewError.__init__(self)
1185.35.42 by Aaron Bentley
Fixed fetch to be safer wrt ghosts and corrupt branches
767
        self.branch = branch
768
        self.base = branch.base
769
        self.text_revision = text_revision
770
        self.file_id = file_id
1534.7.5 by Aaron Bentley
Got unique_add under test
771
1505.1.23 by John Arbash Meinel
Whitespace cleanup of bzrlib.errors
772
1534.7.5 by Aaron Bentley
Got unique_add under test
773
class DuplicateKey(BzrNewError):
774
    """Key %(key)s is already present in map"""
1534.7.6 by Aaron Bentley
Added conflict handling
775
1587.1.6 by Robert Collins
Update bound branch implementation to 0.8.
776
1534.7.6 by Aaron Bentley
Added conflict handling
777
class MalformedTransform(BzrNewError):
1534.7.49 by Aaron Bentley
Printed conflicts in MalformedTransform
778
    """Tree transform is malformed %(conflicts)r"""
1534.7.24 by Aaron Bentley
Merge from the mainline
779
1534.3.1 by Robert Collins
* bzrlib.osutils.safe_unicode now exists to provide parameter coercion
780
781
class BzrBadParameter(BzrNewError):
1185.65.29 by Robert Collins
Implement final review suggestions.
782
    """A bad parameter : %(param)s is not usable.
1534.3.1 by Robert Collins
* bzrlib.osutils.safe_unicode now exists to provide parameter coercion
783
    
1185.65.29 by Robert Collins
Implement final review suggestions.
784
    This exception should never be thrown, but it is a base class for all
785
    parameter-to-function errors.
786
    """
1534.3.1 by Robert Collins
* bzrlib.osutils.safe_unicode now exists to provide parameter coercion
787
    def __init__(self, param):
788
        BzrNewError.__init__(self)
789
        self.param = param
1534.7.32 by Aaron Bentley
Got conflict handling working when conflicts involve existing files
790
1534.4.3 by Robert Collins
Implement BranchTestProviderAdapter, so tests now run across all branch formats.
791
1185.65.29 by Robert Collins
Implement final review suggestions.
792
class BzrBadParameterNotUnicode(BzrBadParameter):
793
    """Parameter %(param)s is neither unicode nor utf8."""
1534.7.120 by Aaron Bentley
PEP8 fixes
794
795
1534.7.32 by Aaron Bentley
Got conflict handling working when conflicts involve existing files
796
class ReusingTransform(BzrNewError):
797
    """Attempt to reuse a transform that has already been applied."""
1534.7.66 by Aaron Bentley
Ensured we don't accidentally move the root directory
798
1534.7.120 by Aaron Bentley
PEP8 fixes
799
1534.7.66 by Aaron Bentley
Ensured we don't accidentally move the root directory
800
class CantMoveRoot(BzrNewError):
801
    """Moving the root directory is not supported at this time"""
1185.65.29 by Robert Collins
Implement final review suggestions.
802
1534.7.120 by Aaron Bentley
PEP8 fixes
803
1185.65.29 by Robert Collins
Implement final review suggestions.
804
class BzrBadParameterNotString(BzrBadParameter):
805
    """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.
806
807
1534.4.44 by Robert Collins
Make a new BzrDir format that uses a versioned branch format in a branch/ subdirectory.
808
class BzrBadParameterMissing(BzrBadParameter):
809
    """Parameter $(param)s is required but not present."""
810
811
1666.1.6 by Robert Collins
Make knit the default format.
812
class BzrBadParameterUnicode(BzrBadParameter):
1666.1.9 by Robert Collins
Mark knits as no longer experimental.
813
    """Parameter %(param)s is unicode but only byte-strings are permitted."""
1666.1.6 by Robert Collins
Make knit the default format.
814
815
816
class BzrBadParameterContainsNewline(BzrBadParameter):
1666.1.9 by Robert Collins
Mark knits as no longer experimental.
817
    """Parameter %(param)s contains a newline."""
1666.1.6 by Robert Collins
Make knit the default format.
818
819
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.
820
class DependencyNotPresent(BzrNewError):
1540.3.7 by Martin Pool
Prepare to select a transport depending on what dependencies can be satisfied.
821
    """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.
822
823
    def __init__(self, library, error):
824
        BzrNewError.__init__(self, library=library, error=error)
825
826
827
class ParamikoNotPresent(DependencyNotPresent):
828
    """Unable to import paramiko (required for sftp support): %(error)s"""
829
830
    def __init__(self, error):
831
        DependencyNotPresent.__init__(self, 'paramiko', error)
832
833
1534.4.3 by Robert Collins
Implement BranchTestProviderAdapter, so tests now run across all branch formats.
834
class UninitializableFormat(BzrNewError):
835
    """Format %(format)s cannot be initialised by this version of bzr."""
836
837
    def __init__(self, format):
838
        BzrNewError.__init__(self)
839
        self.format = format
1551.3.4 by Aaron Bentley
Implemented default command options
840
1534.7.156 by Aaron Bentley
PEP8 fixes
841
1534.7.130 by Aaron Bentley
More conflict handling, test porting
842
class NoDiff3(BzrNewError):
843
    """Diff3 is not installed on this machine."""
1534.7.162 by Aaron Bentley
Handle failures creating/deleting the Limbo directory
844
845
846
class ExistingLimbo(BzrNewError):
847
    """This tree contains left-over files from a failed operation.
848
    Please examine %(limbo_dir)s to see if it contains any files you wish to
849
    keep, and delete it when you are done.
850
    """
851
    def __init__(self, limbo_dir):
852
       BzrNewError.__init__(self)
853
       self.limbo_dir = limbo_dir
854
855
856
class ImmortalLimbo(BzrNewError):
857
    """Unable to delete transform temporary directory $(limbo_dir)s.
858
    Please examine %(limbo_dir)s to see if it contains any files you wish to
859
    keep, and delete it when you are done.
860
    """
861
    def __init__(self, limbo_dir):
862
       BzrNewError.__init__(self)
863
       self.limbo_dir = limbo_dir
1534.7.163 by Aaron Bentley
Merge from Robert [Fails tests]
864
865
1508.1.22 by Robert Collins
implement out of date working tree checks in commit.
866
class OutOfDateTree(BzrNewError):
867
    """Working tree is out of date, please run 'bzr update'."""
1508.1.25 by Robert Collins
Update per review comments.
868
869
    def __init__(self, tree):
870
        BzrNewError.__init__(self)
871
        self.tree = tree
1534.7.196 by Aaron Bentley
Switched to Rio format for merge-modified list
872
1563.2.22 by Robert Collins
Move responsibility for repository.has_revision into RevisionStore
873
1534.7.196 by Aaron Bentley
Switched to Rio format for merge-modified list
874
class MergeModifiedFormatError(BzrNewError):
875
    """Error in merge modified format"""
1534.7.200 by Aaron Bentley
Merge from mainline
876
877
1534.10.7 by Aaron Bentley
Added tests for bad conflict lists
878
class ConflictFormatError(BzrNewError):
879
    """Format error in conflict listings"""
880
881
1570.1.13 by Robert Collins
Check for incorrect revision parentage in the weave during revision access.
882
class CorruptRepository(BzrNewError):
883
    """An error has been detected in the repository %(repo_path)s.
884
Please run bzr reconcile on this repository."""
885
886
    def __init__(self, repo):
887
        BzrNewError.__init__(self)
888
        self.repo_path = repo.bzrdir.root_transport.base
1587.1.6 by Robert Collins
Update bound branch implementation to 0.8.
889
890
891
class UpgradeRequired(BzrNewError):
892
    """To use this feature you must upgrade your branch at %(path)s."""
893
894
    def __init__(self, path):
895
        BzrNewError.__init__(self)
896
        self.path = path
897
1587.1.8 by Robert Collins
Local commits on unbound branches fail.
898
899
class LocalRequiresBoundBranch(BzrNewError):
900
    """Cannot perform local-only commits on unbound branches."""
1594.1.1 by Robert Collins
Introduce new bzr progress bar api. ui_factory.nested_progress_bar.
901
902
903
class MissingProgressBarFinish(BzrNewError):
904
    """A nested progress bar was not 'finished' correctly."""
1534.10.8 by Aaron Bentley
Implemented conflict_lines in terms of old system on WorkingTree
905
906
907
class UnsupportedOperation(BzrNewError):
908
    """The method %(mname)s is not supported on objects of type %(tname)s."""
909
    def __init__(self, method, method_self):
910
        self.method = method
911
        self.mname = method.__name__
912
        self.tname = type(method_self).__name__
1558.15.1 by Aaron Bentley
Add text_file function
913
914
915
class BinaryFile(BzrNewError):
916
    """File is binary but should be text."""
1551.2.55 by abentley
Fix fileid involed tests on win32 (by skipping them for unescaped weave formats)
917
918
919
class IllegalPath(BzrNewError):
920
    """The path %(path)s is not permitted on this platform"""
921
922
    def __init__(self, path):
923
        BzrNewError.__init__(self)
924
        self.path = path