85
34
# constructed to make sure it will succeed. But that says nothing about
86
35
# 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.
37
# TODO: selftest assertRaises should probably also check that every error
38
# raised can be formatted as a string successfully, and without giving
96
42
class BzrError(StandardError):
44
Base class for errors raised by bzrlib.
46
:cvar internal_error: if true (or absent) this was probably caused by a
47
bzr bug and should be displayed with a traceback; if False this was
48
probably a user or environment error and they don't need the gory details.
49
(That can be overridden by -Derror on the command line.)
51
:cvar _fmt: Format string to display the error; this is expanded
52
by the instance's dict.
55
internal_error = False
57
def __init__(self, msg=None, **kwds):
58
"""Construct a new BzrError.
60
There are two alternative forms for constructing these objects.
61
Either a preformatted string may be passed, or a set of named
62
arguments can be given. The first is for generic "user" errors which
63
are not intended to be caught and so do not need a specific subclass.
64
The second case is for use with subclasses that provide a _fmt format
65
string to print the arguments.
67
Keyword arguments are taken as parameters to the error, which can
68
be inserted into the format string template. It's recommended
69
that subclasses override the __init__ method to require specific
72
:param msg: If given, this is the literal complete text for the error,
73
not subject to expansion.
75
StandardError.__init__(self)
77
# I was going to deprecate this, but it actually turns out to be
78
# quite handy - mbp 20061103.
79
self._preformatted_string = msg
81
self._preformatted_string = None
82
for key, value in kwds.items():
83
setattr(self, key, value)
100
85
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
115
return n + `self.args`
86
s = getattr(self, '_preformatted_string', None)
88
# contains a preformatted message; must be cast to plain str
91
fmt = self._get_format_string()
93
s = fmt % self.__dict__
94
# __str__() should always return a 'str' object
95
# never a 'unicode' object.
96
if isinstance(s, unicode):
97
return s.encode('utf8')
99
except (AttributeError, TypeError, NameError, ValueError, KeyError), e:
100
return 'Unprintable exception %s: dict=%r, fmt=%r, error=%s' \
101
% (self.__class__.__name__,
103
getattr(self, '_fmt', None),
106
def _get_format_string(self):
107
"""Return format string for this exception or None"""
108
fmt = getattr(self, '_fmt', None)
111
fmt = getattr(self, '__doc__', None)
113
symbol_versioning.warn("%s uses its docstring as a format, "
114
"it should use _fmt instead" % self.__class__.__name__,
117
return 'Unprintable exception %s: dict=%r, fmt=%r' \
118
% (self.__class__.__name__,
120
getattr(self, '_fmt', None),
118
124
class BzrNewError(BzrError):
125
"""Deprecated error base class."""
120
126
# base classes should override the docstring with their human-
121
127
# readable explanation
142
153
self.__dict__, str(e))
145
class AlreadyBuilding(BzrNewError):
146
"""The tree builder is already building a tree."""
149
class BzrCheckError(BzrNewError):
150
"""Internal check failed: %(message)s"""
152
is_user_error = False
156
class AlreadyBuilding(BzrError):
158
_fmt = "The tree builder is already building a tree."
161
class BzrCheckError(BzrError):
163
_fmt = "Internal check failed: %(message)s"
165
internal_error = True
154
167
def __init__(self, message):
155
BzrNewError.__init__(self)
168
BzrError.__init__(self)
156
169
self.message = message
159
class InvalidEntryName(BzrNewError):
160
"""Invalid entry name: %(name)s"""
172
class InvalidEntryName(BzrError):
174
_fmt = "Invalid entry name: %(name)s"
162
is_user_error = False
176
internal_error = True
164
178
def __init__(self, name):
165
BzrNewError.__init__(self)
179
BzrError.__init__(self)
169
class InvalidRevisionNumber(BzrNewError):
170
"""Invalid revision number %(revno)d"""
183
class InvalidRevisionNumber(BzrError):
185
_fmt = "Invalid revision number %(revno)s"
171
187
def __init__(self, revno):
172
BzrNewError.__init__(self)
188
BzrError.__init__(self)
173
189
self.revno = revno
176
class InvalidRevisionId(BzrNewError):
177
"""Invalid revision-id {%(revision_id)s} in %(branch)s"""
192
class InvalidRevisionId(BzrError):
194
_fmt = "Invalid revision-id {%(revision_id)s} in %(branch)s"
179
196
def __init__(self, revision_id, branch):
180
197
# branch can be any string or object with __str__ defined
181
BzrNewError.__init__(self)
198
BzrError.__init__(self)
182
199
self.revision_id = revision_id
183
200
self.branch = branch
186
class InventoryModified(BzrNewError):
187
"""The current inventory for the tree %(tree)r has been modified, so a clean inventory cannot be read without data loss."""
189
def __init__(self, tree):
190
BzrNewError.__init__(self)
194
class NoSuchId(BzrNewError):
195
"""The file id %(file_id)s is not present in the tree %(tree)s."""
203
class NoSuchId(BzrError):
205
_fmt = "The file id %(file_id)s is not present in the tree %(tree)s."
197
207
def __init__(self, tree, file_id):
198
BzrNewError.__init__(self)
208
BzrError.__init__(self)
199
209
self.file_id = file_id
203
class NoWorkingTree(BzrNewError):
204
"""No WorkingTree exists for %(base)s."""
213
class InventoryModified(BzrError):
215
_fmt = ("The current inventory for the tree %(tree)r has been modified, "
216
"so a clean inventory cannot be read without data loss.")
218
internal_error = True
220
def __init__(self, tree):
224
class NoWorkingTree(BzrError):
226
_fmt = "No WorkingTree exists for %(base)s."
206
228
def __init__(self, base):
207
BzrNewError.__init__(self)
229
BzrError.__init__(self)
211
class NotBuilding(BzrNewError):
212
"""Not currently building a tree."""
215
class NotLocalUrl(BzrNewError):
216
"""%(url)s is not a local path."""
233
class NotBuilding(BzrError):
235
_fmt = "Not currently building a tree."
238
class NotLocalUrl(BzrError):
240
_fmt = "%(url)s is not a local path."
218
242
def __init__(self, url):
219
BzrNewError.__init__(self)
223
class NotWriteLocked(BzrNewError):
224
"""%(not_locked)r is not write locked but needs to be."""
226
def __init__(self, not_locked):
227
BzrNewError.__init__(self)
228
self.not_locked = not_locked
231
class BzrCommandError(BzrNewError):
246
class WorkingTreeAlreadyPopulated(BzrError):
248
_fmt = """Working tree already populated in %(base)s"""
250
internal_error = True
252
def __init__(self, base):
255
class BzrCommandError(BzrError):
232
256
"""Error from user command"""
258
internal_error = False
236
260
# Error from malformed user command; please avoid raising this as a
237
261
# generic exception not caused by user input.
385
437
class InaccessibleParent(PathError):
386
"""Parent not accessible given base %(base)s and relative path %(path)s"""
439
_fmt = "Parent not accessible given base %(base)s and relative path %(path)s"
388
441
def __init__(self, path, base):
389
442
PathError.__init__(self, path)
393
class NoRepositoryPresent(BzrNewError):
394
"""No repository present: %(path)r"""
446
class NoRepositoryPresent(BzrError):
448
_fmt = "No repository present: %(path)r"
395
449
def __init__(self, bzrdir):
396
BzrNewError.__init__(self)
450
BzrError.__init__(self)
397
451
self.path = bzrdir.transport.clone('..').base
400
class FileInWrongBranch(BzrNewError):
401
"""File %(path)s in not in branch %(branch_base)s."""
454
class FileInWrongBranch(BzrError):
456
_fmt = "File %(path)s in not in branch %(branch_base)s."
403
458
def __init__(self, branch, path):
404
BzrNewError.__init__(self)
459
BzrError.__init__(self)
405
460
self.branch = branch
406
461
self.branch_base = branch.base
410
class UnsupportedFormatError(BzrNewError):
411
"""Unsupported branch format: %(format)s"""
414
class UnknownFormatError(BzrNewError):
415
"""Unknown branch format: %(format)r"""
418
class IncompatibleFormat(BzrNewError):
419
"""Format %(format)s is not compatible with .bzr version %(bzrdir)s."""
465
class UnsupportedFormatError(BzrError):
467
_fmt = "Unsupported branch format: %(format)s"
470
class UnknownFormatError(BzrError):
472
_fmt = "Unknown branch format: %(format)r"
475
class IncompatibleFormat(BzrError):
477
_fmt = "Format %(format)s is not compatible with .bzr version %(bzrdir)s."
421
479
def __init__(self, format, bzrdir_format):
422
BzrNewError.__init__(self)
480
BzrError.__init__(self)
423
481
self.format = format
424
482
self.bzrdir = bzrdir_format
427
class IncompatibleRevision(BzrNewError):
428
"""Revision is not compatible with %(repo_format)s"""
485
class IncompatibleRevision(BzrError):
487
_fmt = "Revision is not compatible with %(repo_format)s"
430
489
def __init__(self, repo_format):
431
BzrNewError.__init__(self)
490
BzrError.__init__(self)
432
491
self.repo_format = repo_format
435
class NotVersionedError(BzrNewError):
436
"""%(path)s is not versioned"""
494
class NotVersionedError(BzrError):
496
_fmt = "%(path)s is not versioned"
437
498
def __init__(self, path):
438
BzrNewError.__init__(self)
499
BzrError.__init__(self)
442
class PathsNotVersionedError(BzrNewError):
503
class PathsNotVersionedError(BzrError):
443
504
# used when reporting several paths are not versioned
444
"""Path(s) are not versioned: %(paths_as_string)s"""
506
_fmt = "Path(s) are not versioned: %(paths_as_string)s"
446
508
def __init__(self, paths):
447
509
from bzrlib.osutils import quotefn
448
BzrNewError.__init__(self)
510
BzrError.__init__(self)
449
511
self.paths = paths
450
512
self.paths_as_string = ' '.join([quotefn(p) for p in paths])
453
class PathsDoNotExist(BzrNewError):
454
"""Path(s) do not exist: %(paths_as_string)s"""
515
class PathsDoNotExist(BzrError):
517
_fmt = "Path(s) do not exist: %(paths_as_string)s"
456
519
# used when reporting that paths are neither versioned nor in the working
553
638
class LockNotHeld(LockError):
554
"""Lock not held: %(lock)s"""
640
_fmt = "Lock not held: %(lock)s"
555
642
def __init__(self, lock):
559
class PointlessCommit(BzrNewError):
560
"""No changes to commit"""
563
class UpgradeReadonly(BzrNewError):
564
"""Upgrade URL cannot work with readonly URL's."""
567
class UpToDateFormat(BzrNewError):
568
"""The branch format %(format)s is already at the most recent format."""
646
class PointlessCommit(BzrError):
648
_fmt = "No changes to commit"
651
class UpgradeReadonly(BzrError):
653
_fmt = "Upgrade URL cannot work with readonly URLs."
656
class UpToDateFormat(BzrError):
658
_fmt = "The branch format %(format)s is already at the most recent format."
570
660
def __init__(self, format):
571
BzrNewError.__init__(self)
661
BzrError.__init__(self)
572
662
self.format = format
575
665
class StrictCommitFailed(Exception):
576
"""Commit refused because there are unknowns in the tree."""
579
class NoSuchRevision(BzrNewError):
580
"""Branch %(branch)s has no revision %(revision)s"""
582
is_user_error = False
667
_fmt = "Commit refused because there are unknowns in the tree."
670
class NoSuchRevision(BzrError):
672
_fmt = "Branch %(branch)s has no revision %(revision)s"
674
internal_error = True
584
676
def __init__(self, branch, revision):
585
BzrNewError.__init__(self, branch=branch, revision=revision)
588
class NoSuchRevisionSpec(BzrNewError):
589
"""No namespace registered for string: %(spec)r"""
677
BzrError.__init__(self, branch=branch, revision=revision)
680
class NoSuchRevisionSpec(BzrError):
682
_fmt = "No namespace registered for string: %(spec)r"
591
684
def __init__(self, spec):
592
BzrNewError.__init__(self, spec=spec)
595
class InvalidRevisionSpec(BzrNewError):
596
"""Requested revision: '%(spec)s' does not exist in branch:
597
%(branch)s%(extra)s"""
685
BzrError.__init__(self, spec=spec)
688
class InvalidRevisionSpec(BzrError):
690
_fmt = "Requested revision: %(spec)r does not exist in branch: %(branch)s%(extra)s"
599
692
def __init__(self, spec, branch, extra=None):
600
BzrNewError.__init__(self, branch=branch, spec=spec)
693
BzrError.__init__(self, branch=branch, spec=spec)
602
695
self.extra = '\n' + str(extra)
670
766
self.bases = bases
673
class NoCommits(BzrNewError):
674
"""Branch %(branch)s has no commits."""
769
class NoCommits(BzrError):
771
_fmt = "Branch %(branch)s has no commits."
676
773
def __init__(self, branch):
677
BzrNewError.__init__(self, branch=branch)
774
BzrError.__init__(self, branch=branch)
680
777
class UnlistableStore(BzrError):
681
779
def __init__(self, store):
682
780
BzrError.__init__(self, "Store %s is not listable" % store)
686
784
class UnlistableBranch(BzrError):
687
786
def __init__(self, br):
688
787
BzrError.__init__(self, "Stores for branch %s are not listable" % br)
691
class BoundBranchOutOfDate(BzrNewError):
692
"""Bound branch %(branch)s is out of date with master branch %(master)s."""
790
class BoundBranchOutOfDate(BzrError):
792
_fmt = "Bound branch %(branch)s is out of date with master branch %(master)s."
693
794
def __init__(self, branch, master):
694
BzrNewError.__init__(self)
795
BzrError.__init__(self)
695
796
self.branch = branch
696
797
self.master = master
699
class CommitToDoubleBoundBranch(BzrNewError):
700
"""Cannot commit to branch %(branch)s. It is bound to %(master)s, which is bound to %(remote)s."""
800
class CommitToDoubleBoundBranch(BzrError):
802
_fmt = "Cannot commit to branch %(branch)s. It is bound to %(master)s, which is bound to %(remote)s."
701
804
def __init__(self, branch, master, remote):
702
BzrNewError.__init__(self)
805
BzrError.__init__(self)
703
806
self.branch = branch
704
807
self.master = master
705
808
self.remote = remote
708
class OverwriteBoundBranch(BzrNewError):
709
"""Cannot pull --overwrite to a branch which is bound %(branch)s"""
811
class OverwriteBoundBranch(BzrError):
813
_fmt = "Cannot pull --overwrite to a branch which is bound %(branch)s"
710
815
def __init__(self, branch):
711
BzrNewError.__init__(self)
816
BzrError.__init__(self)
712
817
self.branch = branch
715
class BoundBranchConnectionFailure(BzrNewError):
716
"""Unable to connect to target of bound branch %(branch)s => %(target)s: %(error)s"""
820
class BoundBranchConnectionFailure(BzrError):
822
_fmt = "Unable to connect to target of bound branch %(branch)s => %(target)s: %(error)s"
717
824
def __init__(self, branch, target, error):
718
BzrNewError.__init__(self)
825
BzrError.__init__(self)
719
826
self.branch = branch
720
827
self.target = target
721
828
self.error = error
724
class WeaveError(BzrNewError):
725
"""Error in processing weave: %(message)s"""
831
class WeaveError(BzrError):
833
_fmt = "Error in processing weave: %(message)s"
727
835
def __init__(self, message=None):
728
BzrNewError.__init__(self)
836
BzrError.__init__(self)
729
837
self.message = message
732
840
class WeaveRevisionAlreadyPresent(WeaveError):
733
"""Revision {%(revision_id)s} already present in %(weave)s"""
842
_fmt = "Revision {%(revision_id)s} already present in %(weave)s"
734
844
def __init__(self, revision_id, weave):
736
846
WeaveError.__init__(self)
926
1081
BzrError.__init__(self, message)
929
class NoEmailInUsername(BzrNewError):
930
"""%(username)r does not seem to contain a reasonable email address"""
1084
class NoEmailInUsername(BzrError):
1086
_fmt = "%(username)r does not seem to contain a reasonable email address"
932
1088
def __init__(self, username):
933
BzrNewError.__init__(self)
1089
BzrError.__init__(self)
934
1090
self.username = username
937
1093
class SigningFailed(BzrError):
1095
_fmt = "Failed to gpg sign data with command %(command_line)r"
938
1097
def __init__(self, command_line):
939
BzrError.__init__(self, "Failed to gpg sign data with command '%s'"
1098
BzrError.__init__(self, command_line=command_line)
943
1101
class WorkingTreeNotRevision(BzrError):
1103
_fmt = ("The working tree for %(basedir)s has changed since"
1104
" the last commit, but weave merge requires that it be"
944
1107
def __init__(self, tree):
945
BzrError.__init__(self, "The working tree for %s has changed since"
946
" last commit, but weave merge requires that it be"
947
" unchanged." % tree.basedir)
950
class WritingCompleted(BzrNewError):
951
"""The MediumRequest '%(request)s' has already had finish_writing called upon it - accept bytes may not be called anymore."""
953
is_user_error = False
955
def __init__(self, request):
956
BzrNewError.__init__(self)
957
self.request = request
960
class WritingNotComplete(BzrNewError):
961
"""The MediumRequest '%(request)s' has not has finish_writing called upon it - until the write phase is complete no data may be read."""
963
is_user_error = False
965
def __init__(self, request):
966
BzrNewError.__init__(self)
967
self.request = request
970
class CantReprocessAndShowBase(BzrNewError):
971
"""Can't reprocess and show base.
972
Reprocessing obscures relationship of conflicting lines to base."""
975
class GraphCycleError(BzrNewError):
976
"""Cycle in graph %(graph)r"""
1108
BzrError.__init__(self, basedir=tree.basedir)
1111
class CantReprocessAndShowBase(BzrError):
1113
_fmt = "Can't reprocess and show base, because reprocessing obscures " \
1114
"the relationship of conflicting lines to the base"
1117
class GraphCycleError(BzrError):
1119
_fmt = "Cycle in graph %(graph)r"
977
1121
def __init__(self, graph):
978
BzrNewError.__init__(self)
1122
BzrError.__init__(self)
979
1123
self.graph = graph
982
class NotConflicted(BzrNewError):
983
"""File %(filename)s is not conflicted."""
1126
class WritingCompleted(BzrError):
1128
_fmt = ("The MediumRequest '%(request)s' has already had finish_writing "
1129
"called upon it - accept bytes may not be called anymore.")
1131
internal_error = True
1133
def __init__(self, request):
1134
self.request = request
1137
class WritingNotComplete(BzrError):
1139
_fmt = ("The MediumRequest '%(request)s' has not has finish_writing "
1140
"called upon it - until the write phase is complete no "
1141
"data may be read.")
1143
internal_error = True
1145
def __init__(self, request):
1146
self.request = request
1149
class NotConflicted(BzrError):
1151
_fmt = "File %(filename)s is not conflicted."
985
1153
def __init__(self, filename):
986
BzrNewError.__init__(self)
1154
BzrError.__init__(self)
987
1155
self.filename = filename
990
class MediumNotConnected(BzrNewError):
991
"""The medium '%(medium)s' is not connected."""
1158
class MediumNotConnected(BzrError):
1160
_fmt = """The medium '%(medium)s' is not connected."""
1162
internal_error = True
993
1164
def __init__(self, medium):
994
BzrNewError.__init__(self)
995
1165
self.medium = medium
998
1168
class MustUseDecorated(Exception):
999
"""A decorating function has requested its original command be used.
1001
This should never escape bzr, so does not need to be printable.
1005
class NoBundleFound(BzrNewError):
1006
"""No bundle was found in %(filename)s"""
1170
_fmt = """A decorating function has requested its original command be used."""
1173
class NoBundleFound(BzrError):
1175
_fmt = "No bundle was found in %(filename)s"
1007
1177
def __init__(self, filename):
1008
BzrNewError.__init__(self)
1178
BzrError.__init__(self)
1009
1179
self.filename = filename
1012
class BundleNotSupported(BzrNewError):
1013
"""Unable to handle bundle version %(version)s: %(msg)s"""
1182
class BundleNotSupported(BzrError):
1184
_fmt = "Unable to handle bundle version %(version)s: %(msg)s"
1014
1186
def __init__(self, version, msg):
1015
BzrNewError.__init__(self)
1187
BzrError.__init__(self)
1016
1188
self.version = version
1020
class MissingText(BzrNewError):
1021
"""Branch %(base)s is missing revision %(text_revision)s of %(file_id)s"""
1192
class MissingText(BzrError):
1194
_fmt = "Branch %(base)s is missing revision %(text_revision)s of %(file_id)s"
1023
1196
def __init__(self, branch, text_revision, file_id):
1024
BzrNewError.__init__(self)
1197
BzrError.__init__(self)
1025
1198
self.branch = branch
1026
1199
self.base = branch.base
1027
1200
self.text_revision = text_revision
1028
1201
self.file_id = file_id
1031
class DuplicateKey(BzrNewError):
1032
"""Key %(key)s is already present in map"""
1035
class MalformedTransform(BzrNewError):
1036
"""Tree transform is malformed %(conflicts)r"""
1039
class NoFinalPath(BzrNewError):
1040
"""No final name for trans_id %(trans_id)r
1041
file-id: %(file_id)r"
1042
root trans-id: %(root_trans_id)r
1204
class DuplicateKey(BzrError):
1206
_fmt = "Key %(key)s is already present in map"
1209
class MalformedTransform(BzrError):
1211
_fmt = "Tree transform is malformed %(conflicts)r"
1214
class NoFinalPath(BzrError):
1216
_fmt = ("No final name for trans_id %(trans_id)r\n"
1217
"file-id: %(file_id)r\n"
1218
"root trans-id: %(root_trans_id)r\n")
1045
1220
def __init__(self, trans_id, transform):
1046
1221
self.trans_id = trans_id
1048
1223
self.root_trans_id = transform.root
1051
class BzrBadParameter(BzrNewError):
1052
"""A bad parameter : %(param)s is not usable.
1054
This exception should never be thrown, but it is a base class for all
1055
parameter-to-function errors.
1226
class BzrBadParameter(BzrError):
1228
_fmt = "Bad parameter: %(param)r"
1230
# This exception should never be thrown, but it is a base class for all
1231
# parameter-to-function errors.
1057
1233
def __init__(self, param):
1058
BzrNewError.__init__(self)
1234
BzrError.__init__(self)
1059
1235
self.param = param
1062
1238
class BzrBadParameterNotUnicode(BzrBadParameter):
1063
"""Parameter %(param)s is neither unicode nor utf8."""
1066
class ReusingTransform(BzrNewError):
1067
"""Attempt to reuse a transform that has already been applied."""
1070
class CantMoveRoot(BzrNewError):
1071
"""Moving the root directory is not supported at this time"""
1240
_fmt = "Parameter %(param)s is neither unicode nor utf8."
1243
class ReusingTransform(BzrError):
1245
_fmt = "Attempt to reuse a transform that has already been applied."
1248
class CantMoveRoot(BzrError):
1250
_fmt = "Moving the root directory is not supported at this time"
1074
1253
class BzrBadParameterNotString(BzrBadParameter):
1075
"""Parameter %(param)s is not a string or unicode string."""
1255
_fmt = "Parameter %(param)s is not a string or unicode string."
1078
1258
class BzrBadParameterMissing(BzrBadParameter):
1079
"""Parameter $(param)s is required but not present."""
1260
_fmt = "Parameter $(param)s is required but not present."
1082
1263
class BzrBadParameterUnicode(BzrBadParameter):
1083
"""Parameter %(param)s is unicode but only byte-strings are permitted."""
1265
_fmt = "Parameter %(param)s is unicode but only byte-strings are permitted."
1086
1268
class BzrBadParameterContainsNewline(BzrBadParameter):
1087
"""Parameter %(param)s contains a newline."""
1090
class DependencyNotPresent(BzrNewError):
1091
"""Unable to import library "%(library)s": %(error)s"""
1270
_fmt = "Parameter %(param)s contains a newline."
1273
class DependencyNotPresent(BzrError):
1275
_fmt = 'Unable to import library "%(library)s": %(error)s'
1093
1277
def __init__(self, library, error):
1094
BzrNewError.__init__(self, library=library, error=error)
1278
BzrError.__init__(self, library=library, error=error)
1097
1281
class ParamikoNotPresent(DependencyNotPresent):
1098
"""Unable to import paramiko (required for sftp support): %(error)s"""
1283
_fmt = "Unable to import paramiko (required for sftp support): %(error)s"
1100
1285
def __init__(self, error):
1101
1286
DependencyNotPresent.__init__(self, 'paramiko', error)
1104
class PointlessMerge(BzrNewError):
1105
"""Nothing to merge."""
1108
class UninitializableFormat(BzrNewError):
1109
"""Format %(format)s cannot be initialised by this version of bzr."""
1289
class PointlessMerge(BzrError):
1291
_fmt = "Nothing to merge."
1294
class UninitializableFormat(BzrError):
1296
_fmt = "Format %(format)s cannot be initialised by this version of bzr."
1111
1298
def __init__(self, format):
1112
BzrNewError.__init__(self)
1299
BzrError.__init__(self)
1113
1300
self.format = format
1116
class BadConversionTarget(BzrNewError):
1117
"""Cannot convert to format %(format)s. %(problem)s"""
1303
class BadConversionTarget(BzrError):
1305
_fmt = "Cannot convert to format %(format)s. %(problem)s"
1119
1307
def __init__(self, problem, format):
1120
BzrNewError.__init__(self)
1308
BzrError.__init__(self)
1121
1309
self.problem = problem
1122
1310
self.format = format
1125
class NoDiff(BzrNewError):
1126
"""Diff is not installed on this machine: %(msg)s"""
1313
class NoDiff(BzrError):
1315
_fmt = "Diff is not installed on this machine: %(msg)s"
1128
1317
def __init__(self, msg):
1129
BzrNewError.__init__(self, msg=msg)
1132
class NoDiff3(BzrNewError):
1133
"""Diff3 is not installed on this machine."""
1136
class ExistingLimbo(BzrNewError):
1137
"""This tree contains left-over files from a failed operation.
1138
Please examine %(limbo_dir)s to see if it contains any files you wish to
1139
keep, and delete it when you are done.
1141
def __init__(self, limbo_dir):
1142
BzrNewError.__init__(self)
1143
self.limbo_dir = limbo_dir
1146
class ImmortalLimbo(BzrNewError):
1147
"""Unable to delete transform temporary directory $(limbo_dir)s.
1148
Please examine %(limbo_dir)s to see if it contains any files you wish to
1149
keep, and delete it when you are done.
1151
def __init__(self, limbo_dir):
1152
BzrNewError.__init__(self)
1153
self.limbo_dir = limbo_dir
1156
class OutOfDateTree(BzrNewError):
1157
"""Working tree is out of date, please run 'bzr update'."""
1318
BzrError.__init__(self, msg=msg)
1321
class NoDiff3(BzrError):
1323
_fmt = "Diff3 is not installed on this machine."
1326
class ExistingLimbo(BzrError):
1328
_fmt = """This tree contains left-over files from a failed operation.
1329
Please examine %(limbo_dir)s to see if it contains any files you wish to
1330
keep, and delete it when you are done."""
1332
def __init__(self, limbo_dir):
1333
BzrError.__init__(self)
1334
self.limbo_dir = limbo_dir
1337
class ImmortalLimbo(BzrError):
1339
_fmt = """Unable to delete transform temporary directory $(limbo_dir)s.
1340
Please examine %(limbo_dir)s to see if it contains any files you wish to
1341
keep, and delete it when you are done."""
1343
def __init__(self, limbo_dir):
1344
BzrError.__init__(self)
1345
self.limbo_dir = limbo_dir
1348
class OutOfDateTree(BzrError):
1350
_fmt = "Working tree is out of date, please run 'bzr update'."
1159
1352
def __init__(self, tree):
1160
BzrNewError.__init__(self)
1353
BzrError.__init__(self)
1161
1354
self.tree = tree
1164
class MergeModifiedFormatError(BzrNewError):
1165
"""Error in merge modified format"""
1168
class ConflictFormatError(BzrNewError):
1169
"""Format error in conflict listings"""
1172
class CorruptRepository(BzrNewError):
1173
"""An error has been detected in the repository %(repo_path)s.
1357
class MergeModifiedFormatError(BzrError):
1359
_fmt = "Error in merge modified format"
1362
class ConflictFormatError(BzrError):
1364
_fmt = "Format error in conflict listings"
1367
class CorruptRepository(BzrError):
1369
_fmt = """An error has been detected in the repository %(repo_path)s.
1174
1370
Please run bzr reconcile on this repository."""
1176
1372
def __init__(self, repo):
1177
BzrNewError.__init__(self)
1373
BzrError.__init__(self)
1178
1374
self.repo_path = repo.bzrdir.root_transport.base
1181
class UpgradeRequired(BzrNewError):
1182
"""To use this feature you must upgrade your branch at %(path)s."""
1377
class UpgradeRequired(BzrError):
1379
_fmt = "To use this feature you must upgrade your branch at %(path)s."
1184
1381
def __init__(self, path):
1185
BzrNewError.__init__(self)
1382
BzrError.__init__(self)
1186
1383
self.path = path
1189
class LocalRequiresBoundBranch(BzrNewError):
1190
"""Cannot perform local-only commits on unbound branches."""
1193
class MissingProgressBarFinish(BzrNewError):
1194
"""A nested progress bar was not 'finished' correctly."""
1197
class InvalidProgressBarType(BzrNewError):
1198
"""Environment variable BZR_PROGRESS_BAR='%(bar_type)s is not a supported type
1386
class LocalRequiresBoundBranch(BzrError):
1388
_fmt = "Cannot perform local-only commits on unbound branches."
1391
class MissingProgressBarFinish(BzrError):
1393
_fmt = "A nested progress bar was not 'finished' correctly."
1396
class InvalidProgressBarType(BzrError):
1398
_fmt = """Environment variable BZR_PROGRESS_BAR='%(bar_type)s is not a supported type
1199
1399
Select one of: %(valid_types)s"""
1201
1401
def __init__(self, bar_type, valid_types):
1202
BzrNewError.__init__(self, bar_type=bar_type, valid_types=valid_types)
1205
class UnsupportedOperation(BzrNewError):
1206
"""The method %(mname)s is not supported on objects of type %(tname)s."""
1402
BzrError.__init__(self, bar_type=bar_type, valid_types=valid_types)
1405
class UnsupportedOperation(BzrError):
1407
_fmt = "The method %(mname)s is not supported on objects of type %(tname)s."
1207
1409
def __init__(self, method, method_self):
1208
1410
self.method = method
1209
1411
self.mname = method.__name__
1210
1412
self.tname = type(method_self).__name__
1213
class BinaryFile(BzrNewError):
1214
"""File is binary but should be text."""
1217
class IllegalPath(BzrNewError):
1218
"""The path %(path)s is not permitted on this platform"""
1415
class BinaryFile(BzrError):
1417
_fmt = "File is binary but should be text."
1420
class IllegalPath(BzrError):
1422
_fmt = "The path %(path)s is not permitted on this platform"
1220
1424
def __init__(self, path):
1221
BzrNewError.__init__(self)
1425
BzrError.__init__(self)
1222
1426
self.path = path
1225
class TestamentMismatch(BzrNewError):
1226
"""Testament did not match expected value.
1429
class TestamentMismatch(BzrError):
1431
_fmt = """Testament did not match expected value.
1227
1432
For revision_id {%(revision_id)s}, expected {%(expected)s}, measured
1230
1435
def __init__(self, revision_id, expected, measured):
1231
1436
self.revision_id = revision_id
1232
1437
self.expected = expected
1233
1438
self.measured = measured
1236
class NotABundle(BzrNewError):
1237
"""Not a bzr revision-bundle: %(text)r"""
1441
class NotABundle(BzrError):
1443
_fmt = "Not a bzr revision-bundle: %(text)r"
1239
1445
def __init__(self, text):
1240
BzrNewError.__init__(self)
1446
BzrError.__init__(self)
1241
1447
self.text = text
1244
class BadBundle(BzrNewError):
1245
"""Bad bzr revision-bundle: %(text)r"""
1450
class BadBundle(BzrError):
1452
_fmt = "Bad bzr revision-bundle: %(text)r"
1247
1454
def __init__(self, text):
1248
BzrNewError.__init__(self)
1455
BzrError.__init__(self)
1249
1456
self.text = text
1252
1459
class MalformedHeader(BadBundle):
1253
"""Malformed bzr revision-bundle header: %(text)r"""
1255
def __init__(self, text):
1256
BzrNewError.__init__(self)
1461
_fmt = "Malformed bzr revision-bundle header: %(text)r"
1260
1464
class MalformedPatches(BadBundle):
1261
"""Malformed patches in bzr revision-bundle: %(text)r"""
1263
def __init__(self, text):
1264
BzrNewError.__init__(self)
1466
_fmt = "Malformed patches in bzr revision-bundle: %(text)r"
1268
1469
class MalformedFooter(BadBundle):
1269
"""Malformed footer in bzr revision-bundle: %(text)r"""
1271
def __init__(self, text):
1272
BzrNewError.__init__(self)
1471
_fmt = "Malformed footer in bzr revision-bundle: %(text)r"
1276
1474
class UnsupportedEOLMarker(BadBundle):
1277
"""End of line marker was not \\n in bzr revision-bundle"""
1476
_fmt = "End of line marker was not \\n in bzr revision-bundle"
1279
1478
def __init__(self):
1280
BzrNewError.__init__(self)
1283
class IncompatibleFormat(BzrNewError):
1284
"""Bundle format %(bundle_format)s is incompatible with %(other)s"""
1479
# XXX: BadBundle's constructor assumes there's explanatory text,
1480
# but for this there is not
1481
BzrError.__init__(self)
1484
class IncompatibleBundleFormat(BzrError):
1486
_fmt = "Bundle format %(bundle_format)s is incompatible with %(other)s"
1286
1488
def __init__(self, bundle_format, other):
1287
BzrNewError.__init__(self)
1489
BzrError.__init__(self)
1288
1490
self.bundle_format = bundle_format
1289
1491
self.other = other
1292
class BadInventoryFormat(BzrNewError):
1293
"""Root class for inventory serialization errors"""
1494
class BadInventoryFormat(BzrError):
1496
_fmt = "Root class for inventory serialization errors"
1296
1499
class UnexpectedInventoryFormat(BadInventoryFormat):
1297
"""The inventory was not in the expected format:\n %(msg)s"""
1501
_fmt = "The inventory was not in the expected format:\n %(msg)s"
1299
1503
def __init__(self, msg):
1300
1504
BadInventoryFormat.__init__(self, msg=msg)
1303
class NoSmartMedium(BzrNewError):
1304
"""The transport '%(transport)s' cannot tunnel the smart protocol."""
1507
class NoSmartMedium(BzrError):
1509
_fmt = "The transport '%(transport)s' cannot tunnel the smart protocol."
1306
1511
def __init__(self, transport):
1307
BzrNewError.__init__(self)
1308
1512
self.transport = transport
1311
1515
class NoSmartServer(NotBranchError):
1312
"""No smart server available at %(url)s"""
1517
_fmt = "No smart server available at %(url)s"
1314
1519
def __init__(self, url):
1318
class UnknownSSH(BzrNewError):
1319
"""Unrecognised value for BZR_SSH environment variable: %(vendor)s"""
1523
class UnknownSSH(BzrError):
1525
_fmt = "Unrecognised value for BZR_SSH environment variable: %(vendor)s"
1321
1527
def __init__(self, vendor):
1322
BzrNewError.__init__(self)
1528
BzrError.__init__(self)
1323
1529
self.vendor = vendor
1326
class GhostRevisionUnusableHere(BzrNewError):
1327
"""Ghost revision {%(revision_id)s} cannot be used here."""
1532
class GhostRevisionUnusableHere(BzrError):
1534
_fmt = "Ghost revision {%(revision_id)s} cannot be used here."
1329
1536
def __init__(self, revision_id):
1330
BzrNewError.__init__(self)
1537
BzrError.__init__(self)
1331
1538
self.revision_id = revision_id
1334
class IllegalUseOfScopeReplacer(BzrNewError):
1335
"""ScopeReplacer object %(name)r was used incorrectly: %(msg)s%(extra)s"""
1337
is_user_error = False
1541
class IllegalUseOfScopeReplacer(BzrError):
1543
_fmt = "ScopeReplacer object %(name)r was used incorrectly: %(msg)s%(extra)s"
1545
internal_error = True
1339
1547
def __init__(self, name, msg, extra=None):
1340
BzrNewError.__init__(self)
1548
BzrError.__init__(self)
1341
1549
self.name = name