85
39
# constructed to make sure it will succeed. But that says nothing about
86
40
# exceptions that are never raised.
88
# TODO: Convert all the other error classes here to BzrNewError, and eliminate
91
# TODO: The pattern (from hct) of using classes docstrings as message
92
# templates is cute but maybe not such a great idea - perhaps should have a
93
# separate static message_template.
42
# TODO: selftest assertRaises should probably also check that every error
43
# raised can be formatted as a string successfully, and without giving
47
# return codes from the bzr program
50
EXIT_INTERNAL_ERROR = 4
96
53
class BzrError(StandardError):
55
Base class for errors raised by bzrlib.
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
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.)
62
:cvar _fmt: Format string to display the error; this is expanded
63
by the instance's dict.
66
internal_error = False
68
def __init__(self, msg=None, **kwds):
69
"""Construct a new BzrError.
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
76
string to print the arguments.
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
83
:param msg: If given, this is the literal complete text for the error,
84
not subject to expansion.
86
StandardError.__init__(self)
88
# I was going to deprecate this, but it actually turns out to be
89
# quite handy - mbp 20061103.
90
self._preformatted_string = msg
92
self._preformatted_string = None
93
for key, value in kwds.items():
94
setattr(self, key, value)
97
s = getattr(self, '_preformatted_string', None)
99
# contains a preformatted message
102
fmt = self._get_format_string()
104
d = dict(self.__dict__)
105
# special case: python2.5 puts the 'message' attribute in a
106
# slot, so it isn't seen in __dict__
107
d['message'] = getattr(self, 'message', 'no message')
109
# __str__() should always return a 'str' object
110
# never a 'unicode' object.
112
except (AttributeError, TypeError, NameError, ValueError, KeyError), e:
113
return 'Unprintable exception %s: dict=%r, fmt=%r, error=%r' \
114
% (self.__class__.__name__,
116
getattr(self, '_fmt', None),
119
def __unicode__(self):
121
if isinstance(u, str):
122
# Try decoding the str using the default encoding.
124
elif not isinstance(u, unicode):
125
# Try to make a unicode object from it, because __unicode__ must
126
# return a unicode object.
100
130
def __str__(self):
101
# XXX: Should we show the exception class in
102
# exceptions that don't provide their own message?
103
# maybe it should be done at a higher level
104
## n = self.__class__.__name__ + ': '
106
if len(self.args) == 1:
107
return str(self.args[0])
108
elif len(self.args) == 2:
109
# further explanation or suggestions
111
return n + '\n '.join([self.args[0]] + self.args[1])
113
return n + "%r" % self
132
if isinstance(s, unicode):
115
return n + `self.args`
135
# __str__ must return a str.
139
def _get_format_string(self):
140
"""Return format string for this exception or None"""
141
fmt = getattr(self, '_fmt', None)
144
fmt = getattr(self, '__doc__', None)
146
symbol_versioning.warn("%s uses its docstring as a format, "
147
"it should use _fmt instead" % self.__class__.__name__,
150
return 'Unprintable exception %s: dict=%r, fmt=%r' \
151
% (self.__class__.__name__,
153
getattr(self, '_fmt', None),
156
def __eq__(self, other):
157
if self.__class__ != other.__class__:
158
return NotImplemented
159
return self.__dict__ == other.__dict__
162
class InternalBzrError(BzrError):
163
"""Base class for errors that are internal in nature.
165
This is a convenience class for errors that are internal. The
166
internal_error attribute can still be altered in subclasses, if needed.
167
Using this class is simply an easy way to get internal errors.
170
internal_error = True
118
173
class BzrNewError(BzrError):
174
"""Deprecated error base class."""
120
175
# base classes should override the docstring with their human-
121
176
# readable explanation
123
def __init__(self, **kwds):
178
def __init__(self, *args, **kwds):
179
# XXX: Use the underlying BzrError to always generate the args
180
# attribute if it doesn't exist. We can't use super here, because
181
# exceptions are old-style classes in python2.4 (but new in 2.5).
183
symbol_versioning.warn('BzrNewError was deprecated in bzr 0.13; '
184
'please convert %s to use BzrError instead'
185
% self.__class__.__name__,
188
BzrError.__init__(self, *args)
124
189
for key, value in kwds.items():
125
190
setattr(self, key, value)
133
198
return s.encode('utf8')
135
200
except (TypeError, NameError, ValueError, KeyError), e:
136
return 'Unprintable exception %s(%r): %s' \
201
return 'Unprintable exception %s(%r): %r' \
137
202
% (self.__class__.__name__,
138
self.__dict__, str(e))
141
class BzrCheckError(BzrNewError):
142
"""Internal check failed: %(message)s"""
144
is_user_error = False
206
class AlreadyBuilding(BzrError):
208
_fmt = "The tree builder is already building a tree."
211
class BranchError(BzrError):
212
"""Base class for concrete 'errors about a branch'."""
214
def __init__(self, branch):
215
BzrError.__init__(self, branch=branch)
218
class BzrCheckError(InternalBzrError):
220
_fmt = "Internal check failed: %(message)s"
146
222
def __init__(self, message):
147
BzrNewError.__init__(self)
223
BzrError.__init__(self)
148
224
self.message = message
151
class InvalidEntryName(BzrNewError):
152
"""Invalid entry name: %(name)s"""
154
is_user_error = False
227
class DisabledMethod(InternalBzrError):
229
_fmt = "The smart server method '%(class_name)s' is disabled."
231
def __init__(self, class_name):
232
BzrError.__init__(self)
233
self.class_name = class_name
236
class IncompatibleAPI(BzrError):
238
_fmt = 'The API for "%(api)s" is not compatible with "%(wanted)s". '\
239
'It supports versions "%(minimum)s" to "%(current)s".'
241
def __init__(self, api, wanted, minimum, current):
244
self.minimum = minimum
245
self.current = current
248
class InProcessTransport(BzrError):
250
_fmt = "The transport '%(transport)s' is only accessible within this " \
253
def __init__(self, transport):
254
self.transport = transport
257
class InvalidEntryName(InternalBzrError):
259
_fmt = "Invalid entry name: %(name)s"
156
261
def __init__(self, name):
157
BzrNewError.__init__(self)
262
BzrError.__init__(self)
161
class InvalidRevisionNumber(BzrNewError):
162
"""Invalid revision number %(revno)d"""
266
class InvalidRevisionNumber(BzrError):
268
_fmt = "Invalid revision number %(revno)s"
163
270
def __init__(self, revno):
164
BzrNewError.__init__(self)
271
BzrError.__init__(self)
165
272
self.revno = revno
168
class InvalidRevisionId(BzrNewError):
169
"""Invalid revision-id {%(revision_id)s} in %(branch)s"""
275
class InvalidRevisionId(BzrError):
277
_fmt = "Invalid revision-id {%(revision_id)s} in %(branch)s"
171
279
def __init__(self, revision_id, branch):
172
280
# branch can be any string or object with __str__ defined
173
BzrNewError.__init__(self)
281
BzrError.__init__(self)
174
282
self.revision_id = revision_id
175
283
self.branch = branch
178
class NoSuchId(BzrNewError):
179
"""The file id %(file_id)s is not present in the tree %(tree)s."""
286
class ReservedId(BzrError):
288
_fmt = "Reserved revision-id {%(revision_id)s}"
290
def __init__(self, revision_id):
291
self.revision_id = revision_id
294
class RootMissing(InternalBzrError):
296
_fmt = ("The root entry of a tree must be the first entry supplied to "
297
"record_entry_contents.")
300
class NoPublicBranch(BzrError):
302
_fmt = 'There is no public branch set for "%(branch_url)s".'
304
def __init__(self, branch):
305
import bzrlib.urlutils as urlutils
306
public_location = urlutils.unescape_for_display(branch.base, 'ascii')
307
BzrError.__init__(self, branch_url=public_location)
310
class NoHelpTopic(BzrError):
312
_fmt = ("No help could be found for '%(topic)s'. "
313
"Please use 'bzr help topics' to obtain a list of topics.")
315
def __init__(self, topic):
319
class NoSuchId(BzrError):
321
_fmt = 'The file id "%(file_id)s" is not present in the tree %(tree)s.'
181
323
def __init__(self, tree, file_id):
182
BzrNewError.__init__(self)
324
BzrError.__init__(self)
183
325
self.file_id = file_id
187
class NoWorkingTree(BzrNewError):
188
"""No WorkingTree exists for %(base)s."""
329
class NoSuchIdInRepository(NoSuchId):
331
_fmt = ('The file id "%(file_id)s" is not present in the repository'
334
def __init__(self, repository, file_id):
335
BzrError.__init__(self, repository=repository, file_id=file_id)
338
class NotStacked(BranchError):
340
_fmt = "The branch '%(branch)s' is not stacked."
343
class InventoryModified(InternalBzrError):
345
_fmt = ("The current inventory for the tree %(tree)r has been modified,"
346
" so a clean inventory cannot be read without data loss.")
348
def __init__(self, tree):
352
class NoWorkingTree(BzrError):
354
_fmt = 'No WorkingTree exists for "%(base)s".'
190
356
def __init__(self, base):
191
BzrNewError.__init__(self)
357
BzrError.__init__(self)
195
class NotLocalUrl(BzrNewError):
196
"""%(url)s is not a local path."""
361
class NotBuilding(BzrError):
363
_fmt = "Not currently building a tree."
366
class NotLocalUrl(BzrError):
368
_fmt = "%(url)s is not a local path."
198
370
def __init__(self, url):
199
BzrNewError.__init__(self)
203
class BzrCommandError(BzrNewError):
374
class WorkingTreeAlreadyPopulated(InternalBzrError):
376
_fmt = 'Working tree already populated in "%(base)s"'
378
def __init__(self, base):
382
class BzrCommandError(BzrError):
204
383
"""Error from user command"""
208
385
# Error from malformed user command; please avoid raising this as a
209
386
# generic exception not caused by user input.
249
495
class NoSuchFile(PathError):
250
"""No such file: %(path)r%(extra)s"""
497
_fmt = "No such file: %(path)r%(extra)s"
253
500
class FileExists(PathError):
254
"""File exists: %(path)r%(extra)s"""
502
_fmt = "File exists: %(path)r%(extra)s"
505
class RenameFailedFilesExist(BzrError):
506
"""Used when renaming and both source and dest exist."""
508
_fmt = ("Could not rename %(source)s => %(dest)s because both files exist."
509
" (Use --after to tell bzr about a rename that has already"
510
" happened)%(extra)s")
512
def __init__(self, source, dest, extra=None):
513
BzrError.__init__(self)
514
self.source = str(source)
515
self.dest = str(dest)
517
self.extra = ' ' + str(extra)
522
class NotADirectory(PathError):
524
_fmt = '"%(path)s" is not a directory %(extra)s'
527
class NotInWorkingDirectory(PathError):
529
_fmt = '"%(path)s" is not in the working directory %(extra)s'
257
532
class DirectoryNotEmpty(PathError):
258
"""Directory not empty: %(path)r%(extra)s"""
534
_fmt = 'Directory not empty: "%(path)s"%(extra)s'
537
class HardLinkNotSupported(PathError):
539
_fmt = 'Hard-linking "%(path)s" is not supported'
542
class ReadingCompleted(InternalBzrError):
544
_fmt = ("The MediumRequest '%(request)s' has already had finish_reading "
545
"called upon it - the request has been completed and no more "
548
def __init__(self, request):
549
self.request = request
261
552
class ResourceBusy(PathError):
262
"""Device or resource busy: %(path)r%(extra)s"""
554
_fmt = 'Device or resource busy: "%(path)s"%(extra)s'
265
557
class PermissionDenied(PathError):
266
"""Permission denied: %(path)r%(extra)s"""
559
_fmt = 'Permission denied: "%(path)s"%(extra)s'
269
562
class InvalidURL(PathError):
270
"""Invalid url supplied to transport: %(path)r%(extra)s"""
564
_fmt = 'Invalid url supplied to transport: "%(path)s"%(extra)s'
273
567
class InvalidURLJoin(PathError):
274
"""Invalid URL join request: %(args)s%(extra)s"""
276
def __init__(self, msg, base, args):
277
PathError.__init__(self, base, msg)
279
self.args.extend(args)
569
_fmt = "Invalid URL join request: %(reason)s: %(base)r + %(join_args)r"
571
def __init__(self, reason, base, join_args):
574
self.join_args = join_args
575
PathError.__init__(self, base, reason)
578
class InvalidRebaseURLs(PathError):
580
_fmt = "URLs differ by more than path: %(from_)r and %(to)r"
582
def __init__(self, from_, to):
585
PathError.__init__(self, from_, 'URLs differ by more than path.')
588
class UnavailableRepresentation(InternalBzrError):
590
_fmt = ("The encoding '%(wanted)s' is not available for key %(key)s which "
591
"is encoded as '%(native)s'.")
593
def __init__(self, key, wanted, native):
594
InternalBzrError.__init__(self)
600
class UnknownHook(BzrError):
602
_fmt = "The %(type)s hook '%(hook)s' is unknown in this version of bzrlib."
604
def __init__(self, hook_type, hook_name):
605
BzrError.__init__(self)
606
self.type = hook_type
607
self.hook = hook_name
282
610
class UnsupportedProtocol(PathError):
283
"""Unsupported protocol for url "%(path)s"%(extra)s"""
612
_fmt = 'Unsupported protocol for url "%(path)s"%(extra)s'
285
614
def __init__(self, url, extra):
286
615
PathError.__init__(self, url, extra=extra)
289
class PathNotChild(BzrNewError):
290
"""Path %(path)r is not a child of path %(base)r%(extra)s"""
292
is_user_error = False
618
class UnstackableBranchFormat(BzrError):
620
_fmt = ("The branch '%(url)s'(%(format)s) is not a stackable format. "
621
"You will need to upgrade the branch to permit branch stacking.")
623
def __init__(self, format, url):
624
BzrError.__init__(self)
629
class UnstackableRepositoryFormat(BzrError):
631
_fmt = ("The repository '%(url)s'(%(format)s) is not a stackable format. "
632
"You will need to upgrade the repository to permit branch stacking.")
634
def __init__(self, format, url):
635
BzrError.__init__(self)
640
class ReadError(PathError):
642
_fmt = """Error reading from %(path)r."""
645
class ShortReadvError(PathError):
647
_fmt = ('readv() read %(actual)s bytes rather than %(length)s bytes'
648
' at %(offset)s for "%(path)s"%(extra)s')
650
internal_error = True
652
def __init__(self, path, offset, length, actual, extra=None):
653
PathError.__init__(self, path, extra=extra)
659
class PathNotChild(PathError):
661
_fmt = 'Path "%(path)s" is not a child of path "%(base)s"%(extra)s'
663
internal_error = True
294
665
def __init__(self, path, base, extra=None):
295
BzrNewError.__init__(self)
666
BzrError.__init__(self)
336
722
class InaccessibleParent(PathError):
337
"""Parent not accessible given base %(base)s and relative path %(path)s"""
724
_fmt = ('Parent not accessible given base "%(base)s" and'
725
' relative path "%(path)s"')
339
727
def __init__(self, path, base):
340
728
PathError.__init__(self, path)
344
class NoRepositoryPresent(BzrNewError):
345
"""No repository present: %(path)r"""
732
class NoRepositoryPresent(BzrError):
734
_fmt = 'No repository present: "%(path)s"'
346
735
def __init__(self, bzrdir):
347
BzrNewError.__init__(self)
736
BzrError.__init__(self)
348
737
self.path = bzrdir.transport.clone('..').base
351
class FileInWrongBranch(BzrNewError):
352
"""File %(path)s in not in branch %(branch_base)s."""
740
class FileInWrongBranch(BzrError):
742
_fmt = 'File "%(path)s" is not in branch %(branch_base)s.'
354
744
def __init__(self, branch, path):
355
BzrNewError.__init__(self)
745
BzrError.__init__(self)
356
746
self.branch = branch
357
747
self.branch_base = branch.base
361
class UnsupportedFormatError(BzrNewError):
362
"""Unsupported branch format: %(format)s"""
365
class UnknownFormatError(BzrNewError):
366
"""Unknown branch format: %(format)r"""
369
class IncompatibleFormat(BzrNewError):
370
"""Format %(format)s is not compatible with .bzr version %(bzrdir)s."""
751
class UnsupportedFormatError(BzrError):
753
_fmt = "Unsupported branch format: %(format)s\nPlease run 'bzr upgrade'"
756
class UnknownFormatError(BzrError):
758
_fmt = "Unknown %(kind)s format: %(format)r"
760
def __init__(self, format, kind='branch'):
765
class IncompatibleFormat(BzrError):
767
_fmt = "Format %(format)s is not compatible with .bzr version %(bzrdir)s."
372
769
def __init__(self, format, bzrdir_format):
373
BzrNewError.__init__(self)
770
BzrError.__init__(self)
374
771
self.format = format
375
772
self.bzrdir = bzrdir_format
378
class NotVersionedError(BzrNewError):
379
"""%(path)s is not versioned"""
380
def __init__(self, path):
381
BzrNewError.__init__(self)
385
class PathsNotVersionedError(BzrNewError):
386
# used when reporting several paths are not versioned
387
"""Path(s) are not versioned: %(paths_as_string)s"""
775
class IncompatibleRepositories(BzrError):
777
_fmt = "%(target)s\n" \
778
"is not compatible with\n" \
782
def __init__(self, source, target, details=None):
784
details = "(no details)"
785
BzrError.__init__(self, target=target, source=source, details=details)
788
class IncompatibleRevision(BzrError):
790
_fmt = "Revision is not compatible with %(repo_format)s"
792
def __init__(self, repo_format):
793
BzrError.__init__(self)
794
self.repo_format = repo_format
797
class AlreadyVersionedError(BzrError):
798
"""Used when a path is expected not to be versioned, but it is."""
800
_fmt = "%(context_info)s%(path)s is already versioned."
802
def __init__(self, path, context_info=None):
803
"""Construct a new AlreadyVersionedError.
805
:param path: This is the path which is versioned,
806
which should be in a user friendly form.
807
:param context_info: If given, this is information about the context,
808
which could explain why this is expected to not be versioned.
810
BzrError.__init__(self)
812
if context_info is None:
813
self.context_info = ''
815
self.context_info = context_info + ". "
818
class NotVersionedError(BzrError):
819
"""Used when a path is expected to be versioned, but it is not."""
821
_fmt = "%(context_info)s%(path)s is not versioned."
823
def __init__(self, path, context_info=None):
824
"""Construct a new NotVersionedError.
826
:param path: This is the path which is not versioned,
827
which should be in a user friendly form.
828
:param context_info: If given, this is information about the context,
829
which could explain why this is expected to be versioned.
831
BzrError.__init__(self)
833
if context_info is None:
834
self.context_info = ''
836
self.context_info = context_info + ". "
839
class PathsNotVersionedError(BzrError):
840
"""Used when reporting several paths which are not versioned"""
842
_fmt = "Path(s) are not versioned: %(paths_as_string)s"
389
844
def __init__(self, paths):
390
845
from bzrlib.osutils import quotefn
391
BzrNewError.__init__(self)
846
BzrError.__init__(self)
392
847
self.paths = paths
393
848
self.paths_as_string = ' '.join([quotefn(p) for p in paths])
396
class PathsDoNotExist(BzrNewError):
397
"""Path(s) do not exist: %(paths_as_string)s"""
851
class PathsDoNotExist(BzrError):
853
_fmt = "Path(s) do not exist: %(paths_as_string)s%(extra)s"
399
855
# used when reporting that paths are neither versioned nor in the working
402
def __init__(self, paths):
858
def __init__(self, paths, extra=None):
403
859
# circular import
404
860
from bzrlib.osutils import quotefn
405
BzrNewError.__init__(self)
861
BzrError.__init__(self)
406
862
self.paths = paths
407
863
self.paths_as_string = ' '.join([quotefn(p) for p in paths])
410
class BadFileKindError(BzrNewError):
411
"""Cannot operate on %(filename)s of unsupported kind %(kind)s"""
414
class ForbiddenControlFileError(BzrNewError):
415
"""Cannot operate on %(filename)s because it is a control file"""
418
class LockError(BzrNewError):
419
"""Lock error: %(message)s"""
865
self.extra = ': ' + str(extra)
870
class BadFileKindError(BzrError):
872
_fmt = 'Cannot operate on "%(filename)s" of unsupported kind "%(kind)s"'
874
def __init__(self, filename, kind):
875
BzrError.__init__(self, filename=filename, kind=kind)
878
class BadFilenameEncoding(BzrError):
880
_fmt = ('Filename %(filename)r is not valid in your current filesystem'
881
' encoding %(fs_encoding)s')
883
def __init__(self, filename, fs_encoding):
884
BzrError.__init__(self)
885
self.filename = filename
886
self.fs_encoding = fs_encoding
889
class ForbiddenControlFileError(BzrError):
891
_fmt = 'Cannot operate on "%(filename)s" because it is a control file'
894
class LockError(InternalBzrError):
896
_fmt = "Lock error: %(msg)s"
420
898
# All exceptions from the lock/unlock functions should be from
421
899
# this exception class. They will be translated as necessary. The
422
900
# original exception is available as e.original_error
424
902
# New code should prefer to raise specific subclasses
425
903
def __init__(self, message):
426
self.message = message
904
# Python 2.5 uses a slot for StandardError.message,
905
# so use a different variable name. We now work around this in
906
# BzrError.__str__, but this member name is kept for compatability.
910
class LockActive(LockError):
912
_fmt = "The lock for '%(lock_description)s' is in use and cannot be broken."
914
internal_error = False
916
def __init__(self, lock_description):
917
self.lock_description = lock_description
429
920
class CommitNotPossible(LockError):
430
"""A commit was attempted but we do not have a write lock open."""
922
_fmt = "A commit was attempted but we do not have a write lock open."
431
924
def __init__(self):
435
928
class AlreadyCommitted(LockError):
436
"""A rollback was requested, but is not able to be accomplished."""
930
_fmt = "A rollback was requested, but is not able to be accomplished."
437
932
def __init__(self):
441
936
class ReadOnlyError(LockError):
442
"""A write attempt was made in a read only transaction on %(obj)s"""
938
_fmt = "A write attempt was made in a read only transaction on %(obj)s"
940
# TODO: There should also be an error indicating that you need a write
941
# lock and don't have any lock at all... mbp 20070226
443
943
def __init__(self, obj):
447
class OutSideTransaction(BzrNewError):
448
"""A transaction related operation was attempted after the transaction finished."""
947
class LockFailed(LockError):
949
internal_error = False
951
_fmt = "Cannot lock %(lock)s: %(why)s"
953
def __init__(self, lock, why):
954
LockError.__init__(self, '')
959
class OutSideTransaction(BzrError):
961
_fmt = ("A transaction related operation was attempted after"
962
" the transaction finished.")
451
965
class ObjectNotLocked(LockError):
452
"""%(obj)r is not locked"""
454
is_user_error = False
967
_fmt = "%(obj)r is not locked"
456
969
# this can indicate that any particular object is not locked; see also
457
970
# LockNotHeld which means that a particular *lock* object is not held by
582
1201
class NoCommonRoot(BzrError):
1203
_fmt = ("Revisions are not derived from the same root: "
1204
"%(revision_a)s %(revision_b)s.")
583
1206
def __init__(self, revision_a, revision_b):
584
msg = "Revisions are not derived from the same root: %s %s." \
585
% (revision_a, revision_b)
586
BzrError.__init__(self, msg)
1207
BzrError.__init__(self, revision_a=revision_a, revision_b=revision_b)
590
1210
class NotAncestor(BzrError):
1212
_fmt = "Revision %(rev_id)s is not an ancestor of %(not_ancestor_id)s"
591
1214
def __init__(self, rev_id, not_ancestor_id):
592
msg = "Revision %s is not an ancestor of %s" % (not_ancestor_id,
594
BzrError.__init__(self, msg)
596
self.not_ancestor_id = not_ancestor_id
1215
BzrError.__init__(self, rev_id=rev_id,
1216
not_ancestor_id=not_ancestor_id)
599
1219
class InstallFailed(BzrError):
600
1221
def __init__(self, revisions):
601
msg = "Could not install revisions:\n%s" % " ,".join(revisions)
1222
revision_str = ", ".join(str(r) for r in revisions)
1223
msg = "Could not install revisions:\n%s" % revision_str
602
1224
BzrError.__init__(self, msg)
603
1225
self.revisions = revisions
606
1228
class AmbiguousBase(BzrError):
607
1230
def __init__(self, bases):
608
1231
warn("BzrError AmbiguousBase has been deprecated as of bzrlib 0.8.",
609
1232
DeprecationWarning)
610
msg = "The correct base is unclear, because %s are all equally close" %\
1233
msg = ("The correct base is unclear, because %s are all equally close"
612
1235
BzrError.__init__(self, msg)
613
1236
self.bases = bases
616
class NoCommits(BzrNewError):
617
"""Branch %(branch)s has no commits."""
1239
class NoCommits(BranchError):
619
def __init__(self, branch):
620
BzrNewError.__init__(self, branch=branch)
1241
_fmt = "Branch %(branch)s has no commits."
623
1244
class UnlistableStore(BzrError):
624
1246
def __init__(self, store):
625
1247
BzrError.__init__(self, "Store %s is not listable" % store)
629
1251
class UnlistableBranch(BzrError):
630
1253
def __init__(self, br):
631
1254
BzrError.__init__(self, "Stores for branch %s are not listable" % br)
634
class BoundBranchOutOfDate(BzrNewError):
635
"""Bound branch %(branch)s is out of date with master branch %(master)s."""
1257
class BoundBranchOutOfDate(BzrError):
1259
_fmt = ("Bound branch %(branch)s is out of date with master branch"
636
1262
def __init__(self, branch, master):
637
BzrNewError.__init__(self)
1263
BzrError.__init__(self)
638
1264
self.branch = branch
639
1265
self.master = master
642
class CommitToDoubleBoundBranch(BzrNewError):
643
"""Cannot commit to branch %(branch)s. It is bound to %(master)s, which is bound to %(remote)s."""
1268
class CommitToDoubleBoundBranch(BzrError):
1270
_fmt = ("Cannot commit to branch %(branch)s."
1271
" It is bound to %(master)s, which is bound to %(remote)s.")
644
1273
def __init__(self, branch, master, remote):
645
BzrNewError.__init__(self)
1274
BzrError.__init__(self)
646
1275
self.branch = branch
647
1276
self.master = master
648
1277
self.remote = remote
651
class OverwriteBoundBranch(BzrNewError):
652
"""Cannot pull --overwrite to a branch which is bound %(branch)s"""
1280
class OverwriteBoundBranch(BzrError):
1282
_fmt = "Cannot pull --overwrite to a branch which is bound %(branch)s"
653
1284
def __init__(self, branch):
654
BzrNewError.__init__(self)
1285
BzrError.__init__(self)
655
1286
self.branch = branch
658
class BoundBranchConnectionFailure(BzrNewError):
659
"""Unable to connect to target of bound branch %(branch)s => %(target)s: %(error)s"""
1289
class BoundBranchConnectionFailure(BzrError):
1291
_fmt = ("Unable to connect to target of bound branch %(branch)s"
1292
" => %(target)s: %(error)s")
660
1294
def __init__(self, branch, target, error):
661
BzrNewError.__init__(self)
1295
BzrError.__init__(self)
662
1296
self.branch = branch
663
1297
self.target = target
664
1298
self.error = error
667
class WeaveError(BzrNewError):
668
"""Error in processing weave: %(message)s"""
1301
class WeaveError(BzrError):
1303
_fmt = "Error in processing weave: %(message)s"
670
1305
def __init__(self, message=None):
671
BzrNewError.__init__(self)
1306
BzrError.__init__(self)
672
1307
self.message = message
675
1310
class WeaveRevisionAlreadyPresent(WeaveError):
676
"""Revision {%(revision_id)s} already present in %(weave)s"""
1312
_fmt = "Revision {%(revision_id)s} already present in %(weave)s"
677
1314
def __init__(self, revision_id, weave):
679
1316
WeaveError.__init__(self)
852
1667
BzrError.__init__(self, message)
1670
class NoEmailInUsername(BzrError):
1672
_fmt = "%(username)r does not seem to contain a reasonable email address"
1674
def __init__(self, username):
1675
BzrError.__init__(self)
1676
self.username = username
855
1679
class SigningFailed(BzrError):
1681
_fmt = 'Failed to gpg sign data with command "%(command_line)s"'
856
1683
def __init__(self, command_line):
857
BzrError.__init__(self, "Failed to gpg sign data with command '%s'"
1684
BzrError.__init__(self, command_line=command_line)
861
1687
class WorkingTreeNotRevision(BzrError):
1689
_fmt = ("The working tree for %(basedir)s has changed since"
1690
" the last commit, but weave merge requires that it be"
862
1693
def __init__(self, tree):
863
BzrError.__init__(self, "The working tree for %s has changed since"
864
" last commit, but weave merge requires that it be"
865
" unchanged." % tree.basedir)
868
class CantReprocessAndShowBase(BzrNewError):
869
"""Can't reprocess and show base.
870
Reprocessing obscures relationship of conflicting lines to base."""
873
class GraphCycleError(BzrNewError):
874
"""Cycle in graph %(graph)r"""
1694
BzrError.__init__(self, basedir=tree.basedir)
1697
class CantReprocessAndShowBase(BzrError):
1699
_fmt = ("Can't reprocess and show base, because reprocessing obscures "
1700
"the relationship of conflicting lines to the base")
1703
class GraphCycleError(BzrError):
1705
_fmt = "Cycle in graph %(graph)r"
875
1707
def __init__(self, graph):
876
BzrNewError.__init__(self)
1708
BzrError.__init__(self)
877
1709
self.graph = graph
880
class NotConflicted(BzrNewError):
881
"""File %(filename)s is not conflicted."""
1712
class WritingCompleted(InternalBzrError):
1714
_fmt = ("The MediumRequest '%(request)s' has already had finish_writing "
1715
"called upon it - accept bytes may not be called anymore.")
1717
def __init__(self, request):
1718
self.request = request
1721
class WritingNotComplete(InternalBzrError):
1723
_fmt = ("The MediumRequest '%(request)s' has not has finish_writing "
1724
"called upon it - until the write phase is complete no "
1725
"data may be read.")
1727
def __init__(self, request):
1728
self.request = request
1731
class NotConflicted(BzrError):
1733
_fmt = "File %(filename)s is not conflicted."
883
1735
def __init__(self, filename):
884
BzrNewError.__init__(self)
1736
BzrError.__init__(self)
885
1737
self.filename = filename
1740
class MediumNotConnected(InternalBzrError):
1742
_fmt = """The medium '%(medium)s' is not connected."""
1744
def __init__(self, medium):
1745
self.medium = medium
888
1748
class MustUseDecorated(Exception):
889
"""A decorating function has requested its original command be used.
891
This should never escape bzr, so does not need to be printable.
895
class NoBundleFound(BzrNewError):
896
"""No bundle was found in %(filename)s"""
1750
_fmt = "A decorating function has requested its original command be used."
1753
class NoBundleFound(BzrError):
1755
_fmt = 'No bundle was found in "%(filename)s".'
897
1757
def __init__(self, filename):
898
BzrNewError.__init__(self)
1758
BzrError.__init__(self)
899
1759
self.filename = filename
902
class BundleNotSupported(BzrNewError):
903
"""Unable to handle bundle version %(version)s: %(msg)s"""
1762
class BundleNotSupported(BzrError):
1764
_fmt = "Unable to handle bundle version %(version)s: %(msg)s"
904
1766
def __init__(self, version, msg):
905
BzrNewError.__init__(self)
1767
BzrError.__init__(self)
906
1768
self.version = version
910
class MissingText(BzrNewError):
911
"""Branch %(base)s is missing revision %(text_revision)s of %(file_id)s"""
1772
class MissingText(BzrError):
1774
_fmt = ("Branch %(base)s is missing revision"
1775
" %(text_revision)s of %(file_id)s")
913
1777
def __init__(self, branch, text_revision, file_id):
914
BzrNewError.__init__(self)
1778
BzrError.__init__(self)
915
1779
self.branch = branch
916
1780
self.base = branch.base
917
1781
self.text_revision = text_revision
918
1782
self.file_id = file_id
921
class DuplicateKey(BzrNewError):
922
"""Key %(key)s is already present in map"""
925
class MalformedTransform(BzrNewError):
926
"""Tree transform is malformed %(conflicts)r"""
929
class BzrBadParameter(BzrNewError):
930
"""A bad parameter : %(param)s is not usable.
932
This exception should never be thrown, but it is a base class for all
933
parameter-to-function errors.
1785
class DuplicateFileId(BzrError):
1787
_fmt = "File id {%(file_id)s} already exists in inventory as %(entry)s"
1789
def __init__(self, file_id, entry):
1790
BzrError.__init__(self)
1791
self.file_id = file_id
1795
class DuplicateKey(BzrError):
1797
_fmt = "Key %(key)s is already present in map"
1800
class DuplicateHelpPrefix(BzrError):
1802
_fmt = "The prefix %(prefix)s is in the help search path twice."
1804
def __init__(self, prefix):
1805
self.prefix = prefix
1808
class MalformedTransform(BzrError):
1810
_fmt = "Tree transform is malformed %(conflicts)r"
1813
class NoFinalPath(BzrError):
1815
_fmt = ("No final name for trans_id %(trans_id)r\n"
1816
"file-id: %(file_id)r\n"
1817
"root trans-id: %(root_trans_id)r\n")
1819
def __init__(self, trans_id, transform):
1820
self.trans_id = trans_id
1821
self.file_id = transform.final_file_id(trans_id)
1822
self.root_trans_id = transform.root
1825
class BzrBadParameter(InternalBzrError):
1827
_fmt = "Bad parameter: %(param)r"
1829
# This exception should never be thrown, but it is a base class for all
1830
# parameter-to-function errors.
935
1832
def __init__(self, param):
936
BzrNewError.__init__(self)
1833
BzrError.__init__(self)
937
1834
self.param = param
940
1837
class BzrBadParameterNotUnicode(BzrBadParameter):
941
"""Parameter %(param)s is neither unicode nor utf8."""
944
class ReusingTransform(BzrNewError):
945
"""Attempt to reuse a transform that has already been applied."""
948
class CantMoveRoot(BzrNewError):
949
"""Moving the root directory is not supported at this time"""
1839
_fmt = "Parameter %(param)s is neither unicode nor utf8."
1842
class ReusingTransform(BzrError):
1844
_fmt = "Attempt to reuse a transform that has already been applied."
1847
class CantMoveRoot(BzrError):
1849
_fmt = "Moving the root directory is not supported at this time"
1852
class BzrMoveFailedError(BzrError):
1854
_fmt = "Could not move %(from_path)s%(operator)s %(to_path)s%(extra)s"
1856
def __init__(self, from_path='', to_path='', extra=None):
1857
BzrError.__init__(self)
1859
self.extra = ': ' + str(extra)
1863
has_from = len(from_path) > 0
1864
has_to = len(to_path) > 0
1866
self.from_path = osutils.splitpath(from_path)[-1]
1871
self.to_path = osutils.splitpath(to_path)[-1]
1876
if has_from and has_to:
1877
self.operator = " =>"
1879
self.from_path = "from " + from_path
1881
self.operator = "to"
1883
self.operator = "file"
1886
class BzrRenameFailedError(BzrMoveFailedError):
1888
_fmt = "Could not rename %(from_path)s%(operator)s %(to_path)s%(extra)s"
1890
def __init__(self, from_path, to_path, extra=None):
1891
BzrMoveFailedError.__init__(self, from_path, to_path, extra)
1893
class BzrRemoveChangedFilesError(BzrError):
1894
"""Used when user is trying to remove changed files."""
1896
_fmt = ("Can't safely remove modified or unknown files:\n"
1897
"%(changes_as_text)s"
1898
"Use --keep to not delete them, or --force to delete them regardless.")
1900
def __init__(self, tree_delta):
1901
BzrError.__init__(self)
1902
self.changes_as_text = tree_delta.get_changes_as_text()
1903
#self.paths_as_string = '\n'.join(changed_files)
1904
#self.paths_as_string = '\n'.join([quotefn(p) for p in changed_files])
952
1907
class BzrBadParameterNotString(BzrBadParameter):
953
"""Parameter %(param)s is not a string or unicode string."""
1909
_fmt = "Parameter %(param)s is not a string or unicode string."
956
1912
class BzrBadParameterMissing(BzrBadParameter):
957
"""Parameter $(param)s is required but not present."""
1914
_fmt = "Parameter $(param)s is required but not present."
960
1917
class BzrBadParameterUnicode(BzrBadParameter):
961
"""Parameter %(param)s is unicode but only byte-strings are permitted."""
1919
_fmt = ("Parameter %(param)s is unicode but"
1920
" only byte-strings are permitted.")
964
1923
class BzrBadParameterContainsNewline(BzrBadParameter):
965
"""Parameter %(param)s contains a newline."""
968
class DependencyNotPresent(BzrNewError):
969
"""Unable to import library "%(library)s": %(error)s"""
1925
_fmt = "Parameter %(param)s contains a newline."
1928
class DependencyNotPresent(BzrError):
1930
_fmt = 'Unable to import library "%(library)s": %(error)s'
971
1932
def __init__(self, library, error):
972
BzrNewError.__init__(self, library=library, error=error)
1933
BzrError.__init__(self, library=library, error=error)
975
1936
class ParamikoNotPresent(DependencyNotPresent):
976
"""Unable to import paramiko (required for sftp support): %(error)s"""
1938
_fmt = "Unable to import paramiko (required for sftp support): %(error)s"
978
1940
def __init__(self, error):
979
1941
DependencyNotPresent.__init__(self, 'paramiko', error)
982
class PointlessMerge(BzrNewError):
983
"""Nothing to merge."""
986
class UninitializableFormat(BzrNewError):
987
"""Format %(format)s cannot be initialised by this version of bzr."""
1944
class PointlessMerge(BzrError):
1946
_fmt = "Nothing to merge."
1949
class UninitializableFormat(BzrError):
1951
_fmt = "Format %(format)s cannot be initialised by this version of bzr."
989
1953
def __init__(self, format):
990
BzrNewError.__init__(self)
1954
BzrError.__init__(self)
991
1955
self.format = format
994
class BadConversionTarget(BzrNewError):
995
"""Cannot convert to format %(format)s. %(problem)s"""
1958
class BadConversionTarget(BzrError):
1960
_fmt = "Cannot convert to format %(format)s. %(problem)s"
997
1962
def __init__(self, problem, format):
998
BzrNewError.__init__(self)
1963
BzrError.__init__(self)
999
1964
self.problem = problem
1000
1965
self.format = format
1003
class NoDiff(BzrNewError):
1004
"""Diff is not installed on this machine: %(msg)s"""
1968
class NoDiffFound(BzrError):
1970
_fmt = 'Could not find an appropriate Differ for file "%(path)s"'
1972
def __init__(self, path):
1973
BzrError.__init__(self, path)
1976
class ExecutableMissing(BzrError):
1978
_fmt = "%(exe_name)s could not be found on this machine"
1980
def __init__(self, exe_name):
1981
BzrError.__init__(self, exe_name=exe_name)
1984
class NoDiff(BzrError):
1986
_fmt = "Diff is not installed on this machine: %(msg)s"
1006
1988
def __init__(self, msg):
1007
BzrNewError.__init__(self, msg=msg)
1010
class NoDiff3(BzrNewError):
1011
"""Diff3 is not installed on this machine."""
1014
class ExistingLimbo(BzrNewError):
1015
"""This tree contains left-over files from a failed operation.
1016
Please examine %(limbo_dir)s to see if it contains any files you wish to
1017
keep, and delete it when you are done.
1019
def __init__(self, limbo_dir):
1020
BzrNewError.__init__(self)
1021
self.limbo_dir = limbo_dir
1024
class ImmortalLimbo(BzrNewError):
1025
"""Unable to delete transform temporary directory $(limbo_dir)s.
1026
Please examine %(limbo_dir)s to see if it contains any files you wish to
1027
keep, and delete it when you are done.
1029
def __init__(self, limbo_dir):
1030
BzrNewError.__init__(self)
1031
self.limbo_dir = limbo_dir
1034
class OutOfDateTree(BzrNewError):
1035
"""Working tree is out of date, please run 'bzr update'."""
1989
BzrError.__init__(self, msg=msg)
1992
class NoDiff3(BzrError):
1994
_fmt = "Diff3 is not installed on this machine."
1997
class ExistingContent(BzrError):
1998
# Added in bzrlib 0.92, used by VersionedFile.add_lines.
2000
_fmt = "The content being inserted is already present."
2003
class ExistingLimbo(BzrError):
2005
_fmt = """This tree contains left-over files from a failed operation.
2006
Please examine %(limbo_dir)s to see if it contains any files you wish to
2007
keep, and delete it when you are done."""
2009
def __init__(self, limbo_dir):
2010
BzrError.__init__(self)
2011
self.limbo_dir = limbo_dir
2014
class ExistingPendingDeletion(BzrError):
2016
_fmt = """This tree contains left-over files from a failed operation.
2017
Please examine %(pending_deletion)s to see if it contains any files you
2018
wish to keep, and delete it when you are done."""
2020
def __init__(self, pending_deletion):
2021
BzrError.__init__(self, pending_deletion=pending_deletion)
2024
class ImmortalLimbo(BzrError):
2026
_fmt = """Unable to delete transform temporary directory %(limbo_dir)s.
2027
Please examine %(limbo_dir)s to see if it contains any files you wish to
2028
keep, and delete it when you are done."""
2030
def __init__(self, limbo_dir):
2031
BzrError.__init__(self)
2032
self.limbo_dir = limbo_dir
2035
class ImmortalPendingDeletion(BzrError):
2037
_fmt = ("Unable to delete transform temporary directory "
2038
"%(pending_deletion)s. Please examine %(pending_deletion)s to see if it "
2039
"contains any files you wish to keep, and delete it when you are done.")
2041
def __init__(self, pending_deletion):
2042
BzrError.__init__(self, pending_deletion=pending_deletion)
2045
class OutOfDateTree(BzrError):
2047
_fmt = "Working tree is out of date, please run 'bzr update'."
1037
2049
def __init__(self, tree):
1038
BzrNewError.__init__(self)
2050
BzrError.__init__(self)
1039
2051
self.tree = tree
1042
class MergeModifiedFormatError(BzrNewError):
1043
"""Error in merge modified format"""
1046
class ConflictFormatError(BzrNewError):
1047
"""Format error in conflict listings"""
1050
class CorruptRepository(BzrNewError):
1051
"""An error has been detected in the repository %(repo_path)s.
1052
Please run bzr reconcile on this repository."""
2054
class PublicBranchOutOfDate(BzrError):
2056
_fmt = 'Public branch "%(public_location)s" lacks revision '\
2059
def __init__(self, public_location, revstring):
2060
import bzrlib.urlutils as urlutils
2061
public_location = urlutils.unescape_for_display(public_location,
2063
BzrError.__init__(self, public_location=public_location,
2064
revstring=revstring)
2067
class MergeModifiedFormatError(BzrError):
2069
_fmt = "Error in merge modified format"
2072
class ConflictFormatError(BzrError):
2074
_fmt = "Format error in conflict listings"
2077
class CorruptDirstate(BzrError):
2079
_fmt = ("Inconsistency in dirstate file %(dirstate_path)s.\n"
2080
"Error: %(description)s")
2082
def __init__(self, dirstate_path, description):
2083
BzrError.__init__(self)
2084
self.dirstate_path = dirstate_path
2085
self.description = description
2088
class CorruptRepository(BzrError):
2090
_fmt = ("An error has been detected in the repository %(repo_path)s.\n"
2091
"Please run bzr reconcile on this repository.")
1054
2093
def __init__(self, repo):
1055
BzrNewError.__init__(self)
2094
BzrError.__init__(self)
1056
2095
self.repo_path = repo.bzrdir.root_transport.base
1059
class UpgradeRequired(BzrNewError):
1060
"""To use this feature you must upgrade your branch at %(path)s."""
2098
class InconsistentDelta(BzrError):
2099
"""Used when we get a delta that is not valid."""
2101
_fmt = ("An inconsistent delta was supplied involving %(path)r,"
2102
" %(file_id)r\nreason: %(reason)s")
2104
def __init__(self, path, file_id, reason):
2105
BzrError.__init__(self)
2107
self.file_id = file_id
2108
self.reason = reason
2111
class UpgradeRequired(BzrError):
2113
_fmt = "To use this feature you must upgrade your branch at %(path)s."
1062
2115
def __init__(self, path):
1063
BzrNewError.__init__(self)
2116
BzrError.__init__(self)
1064
2117
self.path = path
1067
class LocalRequiresBoundBranch(BzrNewError):
1068
"""Cannot perform local-only commits on unbound branches."""
1071
class MissingProgressBarFinish(BzrNewError):
1072
"""A nested progress bar was not 'finished' correctly."""
1075
class InvalidProgressBarType(BzrNewError):
1076
"""Environment variable BZR_PROGRESS_BAR='%(bar_type)s is not a supported type
1077
Select one of: %(valid_types)s"""
2120
class RepositoryUpgradeRequired(UpgradeRequired):
2122
_fmt = "To use this feature you must upgrade your repository at %(path)s."
2125
class LocalRequiresBoundBranch(BzrError):
2127
_fmt = "Cannot perform local-only commits on unbound branches."
2130
class MissingProgressBarFinish(BzrError):
2132
_fmt = "A nested progress bar was not 'finished' correctly."
2135
class InvalidProgressBarType(BzrError):
2137
_fmt = ("Environment variable BZR_PROGRESS_BAR='%(bar_type)s"
2138
" is not a supported type Select one of: %(valid_types)s")
1079
2140
def __init__(self, bar_type, valid_types):
1080
BzrNewError.__init__(self, bar_type=bar_type, valid_types=valid_types)
1083
class UnsupportedOperation(BzrNewError):
1084
"""The method %(mname)s is not supported on objects of type %(tname)s."""
2141
BzrError.__init__(self, bar_type=bar_type, valid_types=valid_types)
2144
class UnsupportedOperation(BzrError):
2146
_fmt = ("The method %(mname)s is not supported on"
2147
" objects of type %(tname)s.")
1085
2149
def __init__(self, method, method_self):
1086
2150
self.method = method
1087
2151
self.mname = method.__name__
1088
2152
self.tname = type(method_self).__name__
1091
class BinaryFile(BzrNewError):
1092
"""File is binary but should be text."""
1095
class IllegalPath(BzrNewError):
1096
"""The path %(path)s is not permitted on this platform"""
2155
class CannotSetRevisionId(UnsupportedOperation):
2156
"""Raised when a commit is attempting to set a revision id but cant."""
2159
class NonAsciiRevisionId(UnsupportedOperation):
2160
"""Raised when a commit is attempting to set a non-ascii revision id
2165
class BinaryFile(BzrError):
2167
_fmt = "File is binary but should be text."
2170
class IllegalPath(BzrError):
2172
_fmt = "The path %(path)s is not permitted on this platform"
1098
2174
def __init__(self, path):
1099
BzrNewError.__init__(self)
2175
BzrError.__init__(self)
1100
2176
self.path = path
1103
class TestamentMismatch(BzrNewError):
1104
"""Testament did not match expected value.
1105
For revision_id {%(revision_id)s}, expected {%(expected)s}, measured
2179
class TestamentMismatch(BzrError):
2181
_fmt = """Testament did not match expected value.
2182
For revision_id {%(revision_id)s}, expected {%(expected)s}, measured
1108
2185
def __init__(self, revision_id, expected, measured):
1109
2186
self.revision_id = revision_id
1110
2187
self.expected = expected
1111
2188
self.measured = measured
1114
class NotABundle(BzrNewError):
1115
"""Not a bzr revision-bundle: %(text)r"""
2191
class NotABundle(BzrError):
2193
_fmt = "Not a bzr revision-bundle: %(text)r"
1117
2195
def __init__(self, text):
1118
BzrNewError.__init__(self)
2196
BzrError.__init__(self)
1119
2197
self.text = text
1122
class BadBundle(BzrNewError):
1123
"""Bad bzr revision-bundle: %(text)r"""
2200
class BadBundle(BzrError):
2202
_fmt = "Bad bzr revision-bundle: %(text)r"
1125
2204
def __init__(self, text):
1126
BzrNewError.__init__(self)
2205
BzrError.__init__(self)
1127
2206
self.text = text
1130
2209
class MalformedHeader(BadBundle):
1131
"""Malformed bzr revision-bundle header: %(text)r"""
1133
def __init__(self, text):
1134
BzrNewError.__init__(self)
2211
_fmt = "Malformed bzr revision-bundle header: %(text)r"
1138
2214
class MalformedPatches(BadBundle):
1139
"""Malformed patches in bzr revision-bundle: %(text)r"""
1141
def __init__(self, text):
1142
BzrNewError.__init__(self)
2216
_fmt = "Malformed patches in bzr revision-bundle: %(text)r"
1146
2219
class MalformedFooter(BadBundle):
1147
"""Malformed footer in bzr revision-bundle: %(text)r"""
1149
def __init__(self, text):
1150
BzrNewError.__init__(self)
2221
_fmt = "Malformed footer in bzr revision-bundle: %(text)r"
1154
2224
class UnsupportedEOLMarker(BadBundle):
1155
"""End of line marker was not \\n in bzr revision-bundle"""
2226
_fmt = "End of line marker was not \\n in bzr revision-bundle"
1157
2228
def __init__(self):
1158
BzrNewError.__init__(self)
1161
class BadInventoryFormat(BzrNewError):
1162
"""Root class for inventory serialization errors"""
2229
# XXX: BadBundle's constructor assumes there's explanatory text,
2230
# but for this there is not
2231
BzrError.__init__(self)
2234
class IncompatibleBundleFormat(BzrError):
2236
_fmt = "Bundle format %(bundle_format)s is incompatible with %(other)s"
2238
def __init__(self, bundle_format, other):
2239
BzrError.__init__(self)
2240
self.bundle_format = bundle_format
2244
class BadInventoryFormat(BzrError):
2246
_fmt = "Root class for inventory serialization errors"
1165
2249
class UnexpectedInventoryFormat(BadInventoryFormat):
1166
"""The inventory was not in the expected format:\n %(msg)s"""
2251
_fmt = "The inventory was not in the expected format:\n %(msg)s"
1168
2253
def __init__(self, msg):
1169
2254
BadInventoryFormat.__init__(self, msg=msg)
1172
class UnknownSSH(BzrNewError):
1173
"""Unrecognised value for BZR_SSH environment variable: %(vendor)s"""
2257
class RootNotRich(BzrError):
2259
_fmt = """This operation requires rich root data storage"""
2262
class NoSmartMedium(InternalBzrError):
2264
_fmt = "The transport '%(transport)s' cannot tunnel the smart protocol."
2266
def __init__(self, transport):
2267
self.transport = transport
2270
class NoSmartServer(NotBranchError):
2272
_fmt = "No smart server available at %(url)s"
2274
@symbol_versioning.deprecated_method(symbol_versioning.one_four)
2275
def __init__(self, url):
2279
class UnknownSSH(BzrError):
2281
_fmt = "Unrecognised value for BZR_SSH environment variable: %(vendor)s"
1175
2283
def __init__(self, vendor):
1176
BzrNewError.__init__(self)
2284
BzrError.__init__(self)
1177
2285
self.vendor = vendor
1180
class GhostRevisionUnusableHere(BzrNewError):
1181
"""Ghost revision {%(revision_id)s} cannot be used here."""
2288
class SSHVendorNotFound(BzrError):
2290
_fmt = ("Don't know how to handle SSH connections."
2291
" Please set BZR_SSH environment variable.")
2294
class GhostRevisionsHaveNoRevno(BzrError):
2295
"""When searching for revnos, if we encounter a ghost, we are stuck"""
2297
_fmt = ("Could not determine revno for {%(revision_id)s} because"
2298
" its ancestry shows a ghost at {%(ghost_revision_id)s}")
2300
def __init__(self, revision_id, ghost_revision_id):
2301
self.revision_id = revision_id
2302
self.ghost_revision_id = ghost_revision_id
2305
class GhostRevisionUnusableHere(BzrError):
2307
_fmt = "Ghost revision {%(revision_id)s} cannot be used here."
1183
2309
def __init__(self, revision_id):
1184
BzrNewError.__init__(self)
2310
BzrError.__init__(self)
1185
2311
self.revision_id = revision_id
1188
class IllegalUseOfScopeReplacer(BzrNewError):
1189
"""ScopeReplacer object %(name)r was used incorrectly: %(msg)s%(extra)s"""
2314
class IllegalUseOfScopeReplacer(InternalBzrError):
1191
is_user_error = False
2316
_fmt = ("ScopeReplacer object %(name)r was used incorrectly:"
2317
" %(msg)s%(extra)s")
1193
2319
def __init__(self, name, msg, extra=None):
1194
BzrNewError.__init__(self)
2320
BzrError.__init__(self)
1195
2321
self.name = name
1200
2326
self.extra = ''
1203
class InvalidImportLine(BzrNewError):
1204
"""Not a valid import statement: %(msg)\n%(text)s"""
2329
class InvalidImportLine(InternalBzrError):
1206
is_user_error = False
2331
_fmt = "Not a valid import statement: %(msg)\n%(text)s"
1208
2333
def __init__(self, text, msg):
1209
BzrNewError.__init__(self)
2334
BzrError.__init__(self)
1210
2335
self.text = text
1214
class ImportNameCollision(BzrNewError):
1215
"""Tried to import an object to the same name as an existing object. %(name)s"""
1217
is_user_error = False
1219
def __init__(self, name):
1220
BzrNewError.__init__(self)
2339
class ImportNameCollision(InternalBzrError):
2341
_fmt = ("Tried to import an object to the same name as"
2342
" an existing object. %(name)s")
2344
def __init__(self, name):
2345
BzrError.__init__(self)
2349
class NotAMergeDirective(BzrError):
2350
"""File starting with %(firstline)r is not a merge directive"""
2351
def __init__(self, firstline):
2352
BzrError.__init__(self, firstline=firstline)
2355
class NoMergeSource(BzrError):
2356
"""Raise if no merge source was specified for a merge directive"""
2358
_fmt = "A merge directive must provide either a bundle or a public"\
2362
class IllegalMergeDirectivePayload(BzrError):
2363
"""A merge directive contained something other than a patch or bundle"""
2365
_fmt = "Bad merge directive payload %(start)r"
2367
def __init__(self, start):
2372
class PatchVerificationFailed(BzrError):
2373
"""A patch from a merge directive could not be verified"""
2375
_fmt = "Preview patch does not match requested changes."
2378
class PatchMissing(BzrError):
2379
"""Raise a patch type was specified but no patch supplied"""
2381
_fmt = "Patch_type was %(patch_type)s, but no patch was supplied."
2383
def __init__(self, patch_type):
2384
BzrError.__init__(self)
2385
self.patch_type = patch_type
2388
class TargetNotBranch(BzrError):
2389
"""A merge directive's target branch is required, but isn't a branch"""
2391
_fmt = ("Your branch does not have all of the revisions required in "
2392
"order to merge this merge directive and the target "
2393
"location specified in the merge directive is not a branch: "
2396
def __init__(self, location):
2397
BzrError.__init__(self)
2398
self.location = location
2401
class UnsupportedInventoryKind(BzrError):
2403
_fmt = """Unsupported entry kind %(kind)s"""
2405
def __init__(self, kind):
2409
class BadSubsumeSource(BzrError):
2411
_fmt = "Can't subsume %(other_tree)s into %(tree)s. %(reason)s"
2413
def __init__(self, tree, other_tree, reason):
2415
self.other_tree = other_tree
2416
self.reason = reason
2419
class SubsumeTargetNeedsUpgrade(BzrError):
2421
_fmt = """Subsume target %(other_tree)s needs to be upgraded."""
2423
def __init__(self, other_tree):
2424
self.other_tree = other_tree
2427
class BadReferenceTarget(InternalBzrError):
2429
_fmt = "Can't add reference to %(other_tree)s into %(tree)s." \
2432
def __init__(self, tree, other_tree, reason):
2434
self.other_tree = other_tree
2435
self.reason = reason
2438
class NoSuchTag(BzrError):
2440
_fmt = "No such tag: %(tag_name)s"
2442
def __init__(self, tag_name):
2443
self.tag_name = tag_name
2446
class TagsNotSupported(BzrError):
2448
_fmt = ("Tags not supported by %(branch)s;"
2449
" you may be able to use bzr upgrade.")
2451
def __init__(self, branch):
2452
self.branch = branch
2455
class TagAlreadyExists(BzrError):
2457
_fmt = "Tag %(tag_name)s already exists."
2459
def __init__(self, tag_name):
2460
self.tag_name = tag_name
2463
class MalformedBugIdentifier(BzrError):
2465
_fmt = "Did not understand bug identifier %(bug_id)s: %(reason)s"
2467
def __init__(self, bug_id, reason):
2468
self.bug_id = bug_id
2469
self.reason = reason
2472
class InvalidBugTrackerURL(BzrError):
2474
_fmt = ("The URL for bug tracker \"%(abbreviation)s\" doesn't "
2475
"contain {id}: %(url)s")
2477
def __init__(self, abbreviation, url):
2478
self.abbreviation = abbreviation
2482
class UnknownBugTrackerAbbreviation(BzrError):
2484
_fmt = ("Cannot find registered bug tracker called %(abbreviation)s "
2487
def __init__(self, abbreviation, branch):
2488
self.abbreviation = abbreviation
2489
self.branch = branch
2492
class UnexpectedSmartServerResponse(BzrError):
2494
_fmt = "Could not understand response from smart server: %(response_tuple)r"
2496
def __init__(self, response_tuple):
2497
self.response_tuple = response_tuple
2500
class ErrorFromSmartServer(BzrError):
2502
_fmt = "Error received from smart server: %(error_tuple)r"
2504
internal_error = True
2506
def __init__(self, error_tuple):
2507
self.error_tuple = error_tuple
2509
self.error_verb = error_tuple[0]
2511
self.error_verb = None
2512
self.error_args = error_tuple[1:]
2515
class ContainerError(BzrError):
2516
"""Base class of container errors."""
2519
class UnknownContainerFormatError(ContainerError):
2521
_fmt = "Unrecognised container format: %(container_format)r"
2523
def __init__(self, container_format):
2524
self.container_format = container_format
2527
class UnexpectedEndOfContainerError(ContainerError):
2529
_fmt = "Unexpected end of container stream"
2532
class UnknownRecordTypeError(ContainerError):
2534
_fmt = "Unknown record type: %(record_type)r"
2536
def __init__(self, record_type):
2537
self.record_type = record_type
2540
class InvalidRecordError(ContainerError):
2542
_fmt = "Invalid record: %(reason)s"
2544
def __init__(self, reason):
2545
self.reason = reason
2548
class ContainerHasExcessDataError(ContainerError):
2550
_fmt = "Container has data after end marker: %(excess)r"
2552
def __init__(self, excess):
2553
self.excess = excess
2556
class DuplicateRecordNameError(ContainerError):
2558
_fmt = "Container has multiple records with the same name: %(name)s"
2560
def __init__(self, name):
2564
class NoDestinationAddress(InternalBzrError):
2566
_fmt = "Message does not have a destination address."
2569
class RepositoryDataStreamError(BzrError):
2571
_fmt = "Corrupt or incompatible data stream: %(reason)s"
2573
def __init__(self, reason):
2574
self.reason = reason
2577
class SMTPError(BzrError):
2579
_fmt = "SMTP error: %(error)s"
2581
def __init__(self, error):
2585
class NoMessageSupplied(BzrError):
2587
_fmt = "No message supplied."
2590
class NoMailAddressSpecified(BzrError):
2592
_fmt = "No mail-to address specified."
2595
class UnknownMailClient(BzrError):
2597
_fmt = "Unknown mail client: %(mail_client)s"
2599
def __init__(self, mail_client):
2600
BzrError.__init__(self, mail_client=mail_client)
2603
class MailClientNotFound(BzrError):
2605
_fmt = "Unable to find mail client with the following names:"\
2606
" %(mail_command_list_string)s"
2608
def __init__(self, mail_command_list):
2609
mail_command_list_string = ', '.join(mail_command_list)
2610
BzrError.__init__(self, mail_command_list=mail_command_list,
2611
mail_command_list_string=mail_command_list_string)
2613
class SMTPConnectionRefused(SMTPError):
2615
_fmt = "SMTP connection to %(host)s refused"
2617
def __init__(self, error, host):
2622
class DefaultSMTPConnectionRefused(SMTPConnectionRefused):
2624
_fmt = "Please specify smtp_server. No server at default %(host)s."
2627
class BzrDirError(BzrError):
2629
def __init__(self, bzrdir):
2630
import bzrlib.urlutils as urlutils
2631
display_url = urlutils.unescape_for_display(bzrdir.root_transport.base,
2633
BzrError.__init__(self, bzrdir=bzrdir, display_url=display_url)
2636
class UnsyncedBranches(BzrDirError):
2638
_fmt = ("'%(display_url)s' is not in sync with %(target_url)s. See"
2639
" bzr help sync-for-reconfigure.")
2641
def __init__(self, bzrdir, target_branch):
2642
BzrDirError.__init__(self, bzrdir)
2643
import bzrlib.urlutils as urlutils
2644
self.target_url = urlutils.unescape_for_display(target_branch.base,
2648
class AlreadyBranch(BzrDirError):
2650
_fmt = "'%(display_url)s' is already a branch."
2653
class AlreadyTree(BzrDirError):
2655
_fmt = "'%(display_url)s' is already a tree."
2658
class AlreadyCheckout(BzrDirError):
2660
_fmt = "'%(display_url)s' is already a checkout."
2663
class AlreadyLightweightCheckout(BzrDirError):
2665
_fmt = "'%(display_url)s' is already a lightweight checkout."
2668
class AlreadyUsingShared(BzrDirError):
2670
_fmt = "'%(display_url)s' is already using a shared repository."
2673
class AlreadyStandalone(BzrDirError):
2675
_fmt = "'%(display_url)s' is already standalone."
2678
class ReconfigurationNotSupported(BzrDirError):
2680
_fmt = "Requested reconfiguration of '%(display_url)s' is not supported."
2683
class NoBindLocation(BzrDirError):
2685
_fmt = "No location could be found to bind to at %(display_url)s."
2688
class UncommittedChanges(BzrError):
2690
_fmt = 'Working tree "%(display_url)s" has uncommitted changes.'
2692
def __init__(self, tree):
2693
import bzrlib.urlutils as urlutils
2694
display_url = urlutils.unescape_for_display(
2695
tree.bzrdir.root_transport.base, 'ascii')
2696
BzrError.__init__(self, tree=tree, display_url=display_url)
2699
class MissingTemplateVariable(BzrError):
2701
_fmt = 'Variable {%(name)s} is not available.'
2703
def __init__(self, name):
2707
class NoTemplate(BzrError):
2709
_fmt = 'No template specified.'
2712
class UnableCreateSymlink(BzrError):
2714
_fmt = 'Unable to create symlink %(path_str)son this platform'
2716
def __init__(self, path=None):
2720
path_str = repr(str(path))
2721
except UnicodeEncodeError:
2722
path_str = repr(path)
2724
self.path_str = path_str
2727
class UnsupportedTimezoneFormat(BzrError):
2729
_fmt = ('Unsupported timezone format "%(timezone)s", '
2730
'options are "utc", "original", "local".')
2732
def __init__(self, timezone):
2733
self.timezone = timezone
2736
class CommandAvailableInPlugin(StandardError):
2738
internal_error = False
2740
def __init__(self, cmd_name, plugin_metadata, provider):
2742
self.plugin_metadata = plugin_metadata
2743
self.cmd_name = cmd_name
2744
self.provider = provider
2748
_fmt = ('"%s" is not a standard bzr command. \n'
2749
'However, the following official plugin provides this command: %s\n'
2750
'You can install it by going to: %s'
2751
% (self.cmd_name, self.plugin_metadata['name'],
2752
self.plugin_metadata['url']))
2757
class NoPluginAvailable(BzrError):
2761
class NotATerminal(BzrError):
2763
_fmt = 'Unable to ask for a password without real terminal.'
2766
class UnableEncodePath(BzrError):
2768
_fmt = ('Unable to encode %(kind)s path %(path)r in '
2769
'user encoding %(user_encoding)s')
2771
def __init__(self, path, kind):
2774
self.user_encoding = osutils.get_user_encoding()
2777
class NoSuchAlias(BzrError):
2779
_fmt = ('The alias "%(alias_name)s" does not exist.')
2781
def __init__(self, alias_name):
2782
BzrError.__init__(self, alias_name=alias_name)
2785
class DirectoryLookupFailure(BzrError):
2786
"""Base type for lookup errors."""
2791
class InvalidLocationAlias(DirectoryLookupFailure):
2793
_fmt = '"%(alias_name)s" is not a valid location alias.'
2795
def __init__(self, alias_name):
2796
DirectoryLookupFailure.__init__(self, alias_name=alias_name)
2799
class UnsetLocationAlias(DirectoryLookupFailure):
2801
_fmt = 'No %(alias_name)s location assigned.'
2803
def __init__(self, alias_name):
2804
DirectoryLookupFailure.__init__(self, alias_name=alias_name[1:])
2807
class CannotBindAddress(BzrError):
2809
_fmt = 'Cannot bind address "%(host)s:%(port)i": %(orig_error)s.'
2811
def __init__(self, host, port, orig_error):
2812
BzrError.__init__(self, host=host, port=port,
2813
orig_error=orig_error[1])
2816
class UnknownRules(BzrError):
2818
_fmt = ('Unknown rules detected: %(unknowns_str)s.')
2820
def __init__(self, unknowns):
2821
BzrError.__init__(self, unknowns_str=", ".join(unknowns))
2824
class HookFailed(BzrError):
2825
"""Raised when a pre_change_branch_tip hook function fails anything other
2826
than TipChangeRejected.
2829
_fmt = ("Hook '%(hook_name)s' during %(hook_stage)s failed:\n"
2830
"%(traceback_text)s%(exc_value)s")
2832
def __init__(self, hook_stage, hook_name, exc_info):
2834
self.hook_stage = hook_stage
2835
self.hook_name = hook_name
2836
self.exc_info = exc_info
2837
self.exc_type = exc_info[0]
2838
self.exc_value = exc_info[1]
2839
self.exc_tb = exc_info[2]
2840
self.traceback_text = ''.join(traceback.format_tb(self.exc_tb))
2843
class TipChangeRejected(BzrError):
2844
"""A pre_change_branch_tip hook function may raise this to cleanly and
2845
explicitly abort a change to a branch tip.
2848
_fmt = u"Tip change rejected: %(msg)s"
2850
def __init__(self, msg):