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
767
self.bases = bases
673
class NoCommits(BzrNewError):
674
"""Branch %(branch)s has no commits."""
770
class NoCommits(BzrError):
772
_fmt = "Branch %(branch)s has no commits."
676
774
def __init__(self, branch):
677
BzrNewError.__init__(self, branch=branch)
775
BzrError.__init__(self, branch=branch)
680
778
class UnlistableStore(BzrError):
681
780
def __init__(self, store):
682
781
BzrError.__init__(self, "Store %s is not listable" % store)
686
785
class UnlistableBranch(BzrError):
687
787
def __init__(self, br):
688
788
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."""
791
class BoundBranchOutOfDate(BzrError):
793
_fmt = "Bound branch %(branch)s is out of date with master branch %(master)s."
693
795
def __init__(self, branch, master):
694
BzrNewError.__init__(self)
796
BzrError.__init__(self)
695
797
self.branch = branch
696
798
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."""
801
class CommitToDoubleBoundBranch(BzrError):
803
_fmt = "Cannot commit to branch %(branch)s. It is bound to %(master)s, which is bound to %(remote)s."
701
805
def __init__(self, branch, master, remote):
702
BzrNewError.__init__(self)
806
BzrError.__init__(self)
703
807
self.branch = branch
704
808
self.master = master
705
809
self.remote = remote
708
class OverwriteBoundBranch(BzrNewError):
709
"""Cannot pull --overwrite to a branch which is bound %(branch)s"""
812
class OverwriteBoundBranch(BzrError):
814
_fmt = "Cannot pull --overwrite to a branch which is bound %(branch)s"
710
816
def __init__(self, branch):
711
BzrNewError.__init__(self)
817
BzrError.__init__(self)
712
818
self.branch = branch
715
class BoundBranchConnectionFailure(BzrNewError):
716
"""Unable to connect to target of bound branch %(branch)s => %(target)s: %(error)s"""
821
class BoundBranchConnectionFailure(BzrError):
823
_fmt = "Unable to connect to target of bound branch %(branch)s => %(target)s: %(error)s"
717
825
def __init__(self, branch, target, error):
718
BzrNewError.__init__(self)
826
BzrError.__init__(self)
719
827
self.branch = branch
720
828
self.target = target
721
829
self.error = error
724
class WeaveError(BzrNewError):
725
"""Error in processing weave: %(message)s"""
832
class WeaveError(BzrError):
834
_fmt = "Error in processing weave: %(message)s"
727
836
def __init__(self, message=None):
728
BzrNewError.__init__(self)
837
BzrError.__init__(self)
729
838
self.message = message
732
841
class WeaveRevisionAlreadyPresent(WeaveError):
733
"""Revision {%(revision_id)s} already present in %(weave)s"""
843
_fmt = "Revision {%(revision_id)s} already present in %(weave)s"
734
845
def __init__(self, revision_id, weave):
736
847
WeaveError.__init__(self)
926
1082
BzrError.__init__(self, message)
929
class NoEmailInUsername(BzrNewError):
930
"""%(username)r does not seem to contain a reasonable email address"""
1085
class NoEmailInUsername(BzrError):
1087
_fmt = "%(username)r does not seem to contain a reasonable email address"
932
1089
def __init__(self, username):
933
BzrNewError.__init__(self)
1090
BzrError.__init__(self)
934
1091
self.username = username
937
1094
class SigningFailed(BzrError):
1096
_fmt = "Failed to gpg sign data with command %(command_line)r"
938
1098
def __init__(self, command_line):
939
BzrError.__init__(self, "Failed to gpg sign data with command '%s'"
1099
BzrError.__init__(self, command_line=command_line)
943
1102
class WorkingTreeNotRevision(BzrError):
1104
_fmt = ("The working tree for %(basedir)s has changed since"
1105
" the last commit, but weave merge requires that it be"
944
1108
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"""
1109
BzrError.__init__(self, basedir=tree.basedir)
1112
class CantReprocessAndShowBase(BzrError):
1114
_fmt = "Can't reprocess and show base, because reprocessing obscures " \
1115
"the relationship of conflicting lines to the base"
1118
class GraphCycleError(BzrError):
1120
_fmt = "Cycle in graph %(graph)r"
977
1122
def __init__(self, graph):
978
BzrNewError.__init__(self)
1123
BzrError.__init__(self)
979
1124
self.graph = graph
982
class NotConflicted(BzrNewError):
983
"""File %(filename)s is not conflicted."""
1127
class WritingCompleted(BzrError):
1129
_fmt = ("The MediumRequest '%(request)s' has already had finish_writing "
1130
"called upon it - accept bytes may not be called anymore.")
1132
internal_error = True
1134
def __init__(self, request):
1135
self.request = request
1138
class WritingNotComplete(BzrError):
1140
_fmt = ("The MediumRequest '%(request)s' has not has finish_writing "
1141
"called upon it - until the write phase is complete no "
1142
"data may be read.")
1144
internal_error = True
1146
def __init__(self, request):
1147
self.request = request
1150
class NotConflicted(BzrError):
1152
_fmt = "File %(filename)s is not conflicted."
985
1154
def __init__(self, filename):
986
BzrNewError.__init__(self)
1155
BzrError.__init__(self)
987
1156
self.filename = filename
990
class MediumNotConnected(BzrNewError):
991
"""The medium '%(medium)s' is not connected."""
1159
class MediumNotConnected(BzrError):
1161
_fmt = """The medium '%(medium)s' is not connected."""
1163
internal_error = True
993
1165
def __init__(self, medium):
994
BzrNewError.__init__(self)
995
1166
self.medium = medium
998
1169
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"""
1171
_fmt = """A decorating function has requested its original command be used."""
1174
class NoBundleFound(BzrError):
1176
_fmt = "No bundle was found in %(filename)s"
1007
1178
def __init__(self, filename):
1008
BzrNewError.__init__(self)
1179
BzrError.__init__(self)
1009
1180
self.filename = filename
1012
class BundleNotSupported(BzrNewError):
1013
"""Unable to handle bundle version %(version)s: %(msg)s"""
1183
class BundleNotSupported(BzrError):
1185
_fmt = "Unable to handle bundle version %(version)s: %(msg)s"
1014
1187
def __init__(self, version, msg):
1015
BzrNewError.__init__(self)
1188
BzrError.__init__(self)
1016
1189
self.version = version
1020
class MissingText(BzrNewError):
1021
"""Branch %(base)s is missing revision %(text_revision)s of %(file_id)s"""
1193
class MissingText(BzrError):
1195
_fmt = "Branch %(base)s is missing revision %(text_revision)s of %(file_id)s"
1023
1197
def __init__(self, branch, text_revision, file_id):
1024
BzrNewError.__init__(self)
1198
BzrError.__init__(self)
1025
1199
self.branch = branch
1026
1200
self.base = branch.base
1027
1201
self.text_revision = text_revision
1028
1202
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
1205
class DuplicateKey(BzrError):
1207
_fmt = "Key %(key)s is already present in map"
1210
class MalformedTransform(BzrError):
1212
_fmt = "Tree transform is malformed %(conflicts)r"
1215
class NoFinalPath(BzrError):
1217
_fmt = ("No final name for trans_id %(trans_id)r\n"
1218
"file-id: %(file_id)r\n"
1219
"root trans-id: %(root_trans_id)r\n")
1045
1221
def __init__(self, trans_id, transform):
1046
1222
self.trans_id = trans_id
1048
1224
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.
1227
class BzrBadParameter(BzrError):
1229
_fmt = "Bad parameter: %(param)r"
1231
# This exception should never be thrown, but it is a base class for all
1232
# parameter-to-function errors.
1057
1234
def __init__(self, param):
1058
BzrNewError.__init__(self)
1235
BzrError.__init__(self)
1059
1236
self.param = param
1062
1239
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"""
1241
_fmt = "Parameter %(param)s is neither unicode nor utf8."
1244
class ReusingTransform(BzrError):
1246
_fmt = "Attempt to reuse a transform that has already been applied."
1249
class CantMoveRoot(BzrError):
1251
_fmt = "Moving the root directory is not supported at this time"
1074
1254
class BzrBadParameterNotString(BzrBadParameter):
1075
"""Parameter %(param)s is not a string or unicode string."""
1256
_fmt = "Parameter %(param)s is not a string or unicode string."
1078
1259
class BzrBadParameterMissing(BzrBadParameter):
1079
"""Parameter $(param)s is required but not present."""
1261
_fmt = "Parameter $(param)s is required but not present."
1082
1264
class BzrBadParameterUnicode(BzrBadParameter):
1083
"""Parameter %(param)s is unicode but only byte-strings are permitted."""
1266
_fmt = "Parameter %(param)s is unicode but only byte-strings are permitted."
1086
1269
class BzrBadParameterContainsNewline(BzrBadParameter):
1087
"""Parameter %(param)s contains a newline."""
1090
class DependencyNotPresent(BzrNewError):
1091
"""Unable to import library "%(library)s": %(error)s"""
1271
_fmt = "Parameter %(param)s contains a newline."
1274
class DependencyNotPresent(BzrError):
1276
_fmt = 'Unable to import library "%(library)s": %(error)s'
1093
1278
def __init__(self, library, error):
1094
BzrNewError.__init__(self, library=library, error=error)
1279
BzrError.__init__(self, library=library, error=error)
1097
1282
class ParamikoNotPresent(DependencyNotPresent):
1098
"""Unable to import paramiko (required for sftp support): %(error)s"""
1284
_fmt = "Unable to import paramiko (required for sftp support): %(error)s"
1100
1286
def __init__(self, error):
1101
1287
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."""
1290
class PointlessMerge(BzrError):
1292
_fmt = "Nothing to merge."
1295
class UninitializableFormat(BzrError):
1297
_fmt = "Format %(format)s cannot be initialised by this version of bzr."
1111
1299
def __init__(self, format):
1112
BzrNewError.__init__(self)
1300
BzrError.__init__(self)
1113
1301
self.format = format
1116
class BadConversionTarget(BzrNewError):
1117
"""Cannot convert to format %(format)s. %(problem)s"""
1304
class BadConversionTarget(BzrError):
1306
_fmt = "Cannot convert to format %(format)s. %(problem)s"
1119
1308
def __init__(self, problem, format):
1120
BzrNewError.__init__(self)
1309
BzrError.__init__(self)
1121
1310
self.problem = problem
1122
1311
self.format = format
1125
class NoDiff(BzrNewError):
1126
"""Diff is not installed on this machine: %(msg)s"""
1314
class NoDiff(BzrError):
1316
_fmt = "Diff is not installed on this machine: %(msg)s"
1128
1318
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'."""
1319
BzrError.__init__(self, msg=msg)
1322
class NoDiff3(BzrError):
1324
_fmt = "Diff3 is not installed on this machine."
1327
class ExistingLimbo(BzrError):
1329
_fmt = """This tree contains left-over files from a failed operation.
1330
Please examine %(limbo_dir)s to see if it contains any files you wish to
1331
keep, and delete it when you are done."""
1333
def __init__(self, limbo_dir):
1334
BzrError.__init__(self)
1335
self.limbo_dir = limbo_dir
1338
class ImmortalLimbo(BzrError):
1340
_fmt = """Unable to delete transform temporary directory $(limbo_dir)s.
1341
Please examine %(limbo_dir)s to see if it contains any files you wish to
1342
keep, and delete it when you are done."""
1344
def __init__(self, limbo_dir):
1345
BzrError.__init__(self)
1346
self.limbo_dir = limbo_dir
1349
class OutOfDateTree(BzrError):
1351
_fmt = "Working tree is out of date, please run 'bzr update'."
1159
1353
def __init__(self, tree):
1160
BzrNewError.__init__(self)
1354
BzrError.__init__(self)
1161
1355
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.
1358
class MergeModifiedFormatError(BzrError):
1360
_fmt = "Error in merge modified format"
1363
class ConflictFormatError(BzrError):
1365
_fmt = "Format error in conflict listings"
1368
class CorruptRepository(BzrError):
1370
_fmt = """An error has been detected in the repository %(repo_path)s.
1174
1371
Please run bzr reconcile on this repository."""
1176
1373
def __init__(self, repo):
1177
BzrNewError.__init__(self)
1374
BzrError.__init__(self)
1178
1375
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."""
1378
class UpgradeRequired(BzrError):
1380
_fmt = "To use this feature you must upgrade your branch at %(path)s."
1184
1382
def __init__(self, path):
1185
BzrNewError.__init__(self)
1383
BzrError.__init__(self)
1186
1384
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
1387
class LocalRequiresBoundBranch(BzrError):
1389
_fmt = "Cannot perform local-only commits on unbound branches."
1392
class MissingProgressBarFinish(BzrError):
1394
_fmt = "A nested progress bar was not 'finished' correctly."
1397
class InvalidProgressBarType(BzrError):
1399
_fmt = """Environment variable BZR_PROGRESS_BAR='%(bar_type)s is not a supported type
1199
1400
Select one of: %(valid_types)s"""
1201
1402
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."""
1403
BzrError.__init__(self, bar_type=bar_type, valid_types=valid_types)
1406
class UnsupportedOperation(BzrError):
1408
_fmt = "The method %(mname)s is not supported on objects of type %(tname)s."
1207
1410
def __init__(self, method, method_self):
1208
1411
self.method = method
1209
1412
self.mname = method.__name__
1210
1413
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"""
1416
class BinaryFile(BzrError):
1418
_fmt = "File is binary but should be text."
1421
class IllegalPath(BzrError):
1423
_fmt = "The path %(path)s is not permitted on this platform"
1220
1425
def __init__(self, path):
1221
BzrNewError.__init__(self)
1426
BzrError.__init__(self)
1222
1427
self.path = path
1225
class TestamentMismatch(BzrNewError):
1226
"""Testament did not match expected value.
1430
class TestamentMismatch(BzrError):
1432
_fmt = """Testament did not match expected value.
1227
1433
For revision_id {%(revision_id)s}, expected {%(expected)s}, measured
1230
1436
def __init__(self, revision_id, expected, measured):
1231
1437
self.revision_id = revision_id
1232
1438
self.expected = expected
1233
1439
self.measured = measured
1236
class NotABundle(BzrNewError):
1237
"""Not a bzr revision-bundle: %(text)r"""
1442
class NotABundle(BzrError):
1444
_fmt = "Not a bzr revision-bundle: %(text)r"
1239
1446
def __init__(self, text):
1240
BzrNewError.__init__(self)
1447
BzrError.__init__(self)
1241
1448
self.text = text
1244
class BadBundle(BzrNewError):
1245
"""Bad bzr revision-bundle: %(text)r"""
1451
class BadBundle(BzrError):
1453
_fmt = "Bad bzr revision-bundle: %(text)r"
1247
1455
def __init__(self, text):
1248
BzrNewError.__init__(self)
1456
BzrError.__init__(self)
1249
1457
self.text = text
1252
1460
class MalformedHeader(BadBundle):
1253
"""Malformed bzr revision-bundle header: %(text)r"""
1255
def __init__(self, text):
1256
BzrNewError.__init__(self)
1462
_fmt = "Malformed bzr revision-bundle header: %(text)r"
1260
1465
class MalformedPatches(BadBundle):
1261
"""Malformed patches in bzr revision-bundle: %(text)r"""
1263
def __init__(self, text):
1264
BzrNewError.__init__(self)
1467
_fmt = "Malformed patches in bzr revision-bundle: %(text)r"
1268
1470
class MalformedFooter(BadBundle):
1269
"""Malformed footer in bzr revision-bundle: %(text)r"""
1271
def __init__(self, text):
1272
BzrNewError.__init__(self)
1472
_fmt = "Malformed footer in bzr revision-bundle: %(text)r"
1276
1475
class UnsupportedEOLMarker(BadBundle):
1277
"""End of line marker was not \\n in bzr revision-bundle"""
1477
_fmt = "End of line marker was not \\n in bzr revision-bundle"
1279
1479
def __init__(self):
1280
BzrNewError.__init__(self)
1283
class IncompatibleFormat(BzrNewError):
1284
"""Bundle format %(bundle_format)s is incompatible with %(other)s"""
1480
# XXX: BadBundle's constructor assumes there's explanatory text,
1481
# but for this there is not
1482
BzrError.__init__(self)
1485
class IncompatibleBundleFormat(BzrError):
1487
_fmt = "Bundle format %(bundle_format)s is incompatible with %(other)s"
1286
1489
def __init__(self, bundle_format, other):
1287
BzrNewError.__init__(self)
1490
BzrError.__init__(self)
1288
1491
self.bundle_format = bundle_format
1289
1492
self.other = other
1292
class BadInventoryFormat(BzrNewError):
1293
"""Root class for inventory serialization errors"""
1495
class BadInventoryFormat(BzrError):
1497
_fmt = "Root class for inventory serialization errors"
1296
1500
class UnexpectedInventoryFormat(BadInventoryFormat):
1297
"""The inventory was not in the expected format:\n %(msg)s"""
1502
_fmt = "The inventory was not in the expected format:\n %(msg)s"
1299
1504
def __init__(self, msg):
1300
1505
BadInventoryFormat.__init__(self, msg=msg)
1303
class NoSmartMedium(BzrNewError):
1304
"""The transport '%(transport)s' cannot tunnel the smart protocol."""
1508
class NoSmartMedium(BzrError):
1510
_fmt = "The transport '%(transport)s' cannot tunnel the smart protocol."
1306
1512
def __init__(self, transport):
1307
BzrNewError.__init__(self)
1308
1513
self.transport = transport
1311
1516
class NoSmartServer(NotBranchError):
1312
"""No smart server available at %(url)s"""
1518
_fmt = "No smart server available at %(url)s"
1314
1520
def __init__(self, url):
1318
class UnknownSSH(BzrNewError):
1319
"""Unrecognised value for BZR_SSH environment variable: %(vendor)s"""
1524
class UnknownSSH(BzrError):
1526
_fmt = "Unrecognised value for BZR_SSH environment variable: %(vendor)s"
1321
1528
def __init__(self, vendor):
1322
BzrNewError.__init__(self)
1529
BzrError.__init__(self)
1323
1530
self.vendor = vendor
1326
class GhostRevisionUnusableHere(BzrNewError):
1327
"""Ghost revision {%(revision_id)s} cannot be used here."""
1533
class GhostRevisionUnusableHere(BzrError):
1535
_fmt = "Ghost revision {%(revision_id)s} cannot be used here."
1329
1537
def __init__(self, revision_id):
1330
BzrNewError.__init__(self)
1538
BzrError.__init__(self)
1331
1539
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
1542
class IllegalUseOfScopeReplacer(BzrError):
1544
_fmt = "ScopeReplacer object %(name)r was used incorrectly: %(msg)s%(extra)s"
1546
internal_error = True
1339
1548
def __init__(self, name, msg, extra=None):
1340
BzrNewError.__init__(self)
1549
BzrError.__init__(self)
1341
1550
self.name = name