86
120
# base classes should override the docstring with their human-
87
121
# readable explanation
89
def __init__(self, **kwds):
123
def __init__(self, *args, **kwds):
124
# XXX: Use the underlying BzrError to always generate the args attribute
125
# if it doesn't exist. We can't use super here, because exceptions are
126
# old-style classes in python2.4 (but new in 2.5). --bmc, 20060426
127
BzrError.__init__(self, *args)
90
128
for key, value in kwds.items():
91
129
setattr(self, key, value)
93
131
def __str__(self):
95
return self.__doc__ % self.__dict__
96
except (NameError, ValueError, KeyError), e:
97
return 'Unprintable exception %s: %s' \
98
% (self.__class__.__name__, str(e))
133
# __str__() should always return a 'str' object
134
# never a 'unicode' object.
135
s = self.__doc__ % self.__dict__
136
if isinstance(s, unicode):
137
return s.encode('utf8')
139
except (TypeError, NameError, ValueError, KeyError), e:
140
return 'Unprintable exception %s(%r): %s' \
141
% (self.__class__.__name__,
142
self.__dict__, str(e))
145
class AlreadyBuilding(BzrNewError):
146
"""The tree builder is already building a tree."""
101
149
class BzrCheckError(BzrNewError):
102
150
"""Internal check failed: %(message)s"""
152
is_user_error = False
103
154
def __init__(self, message):
155
BzrNewError.__init__(self)
104
156
self.message = message
107
159
class InvalidEntryName(BzrNewError):
108
160
"""Invalid entry name: %(name)s"""
162
is_user_error = False
109
164
def __init__(self, name):
165
BzrNewError.__init__(self)
113
169
class InvalidRevisionNumber(BzrNewError):
114
170
"""Invalid revision number %(revno)d"""
115
171
def __init__(self, revno):
172
BzrNewError.__init__(self)
116
173
self.revno = revno
119
176
class InvalidRevisionId(BzrNewError):
120
"""Invalid revision-id"""
123
class BzrCommandError(BzrError):
124
# Error from malformed user command
177
"""Invalid revision-id {%(revision_id)s} in %(branch)s"""
179
def __init__(self, revision_id, branch):
180
# branch can be any string or object with __str__ defined
181
BzrNewError.__init__(self)
182
self.revision_id = revision_id
186
class NoSuchId(BzrNewError):
187
"""The file id %(file_id)s is not present in the tree %(tree)s."""
189
def __init__(self, tree, file_id):
190
BzrNewError.__init__(self)
191
self.file_id = file_id
195
class NoWorkingTree(BzrNewError):
196
"""No WorkingTree exists for %(base)s."""
198
def __init__(self, base):
199
BzrNewError.__init__(self)
203
class NotBuilding(BzrNewError):
204
"""Not currently building a tree."""
207
class NotLocalUrl(BzrNewError):
208
"""%(url)s is not a local path."""
210
def __init__(self, url):
211
BzrNewError.__init__(self)
215
class BzrCommandError(BzrNewError):
216
"""Error from user command"""
220
# Error from malformed user command; please avoid raising this as a
221
# generic exception not caused by user input.
223
# I think it's a waste of effort to differentiate between errors that
224
# are not intended to be caught anyway. UI code need not subclass
225
# BzrCommandError, and non-UI code should not throw a subclass of
226
# BzrCommandError. ADHB 20051211
227
def __init__(self, msg):
228
# Object.__str__() must return a real string
229
# returning a Unicode string is a python error.
230
if isinstance(msg, unicode):
231
self.msg = msg.encode('utf8')
125
235
def __str__(self):
128
class StrictCommitFailed(Exception):
129
"""Commit refused because there are unknowns in the tree."""
131
class NotBranchError(BzrNewError):
239
class BzrOptionError(BzrCommandError):
240
"""Error in command line options"""
243
class StrictCommitFailed(BzrNewError):
244
"""Commit refused because there are unknown files in the tree"""
247
# XXX: Should be unified with TransportError; they seem to represent the
249
class PathError(BzrNewError):
250
"""Generic path error: %(path)r%(extra)s)"""
252
def __init__(self, path, extra=None):
253
BzrNewError.__init__(self)
256
self.extra = ': ' + str(extra)
261
class NoSuchFile(PathError):
262
"""No such file: %(path)r%(extra)s"""
265
class FileExists(PathError):
266
"""File exists: %(path)r%(extra)s"""
269
class DirectoryNotEmpty(PathError):
270
"""Directory not empty: %(path)r%(extra)s"""
273
class ResourceBusy(PathError):
274
"""Device or resource busy: %(path)r%(extra)s"""
277
class PermissionDenied(PathError):
278
"""Permission denied: %(path)r%(extra)s"""
281
class InvalidURL(PathError):
282
"""Invalid url supplied to transport: %(path)r%(extra)s"""
285
class InvalidURLJoin(PathError):
286
"""Invalid URL join request: %(args)s%(extra)s"""
288
def __init__(self, msg, base, args):
289
PathError.__init__(self, base, msg)
290
self.args = [base] + list(args)
293
class UnsupportedProtocol(PathError):
294
"""Unsupported protocol for url "%(path)s"%(extra)s"""
296
def __init__(self, url, extra):
297
PathError.__init__(self, url, extra=extra)
300
class ShortReadvError(PathError):
301
"""readv() read %(actual)s bytes rather than %(length)s bytes at %(offset)s for %(path)s%(extra)s"""
303
is_user_error = False
305
def __init__(self, path, offset, length, actual, extra=None):
306
PathError.__init__(self, path, extra=extra)
312
class PathNotChild(BzrNewError):
313
"""Path %(path)r is not a child of path %(base)r%(extra)s"""
315
is_user_error = False
317
def __init__(self, path, base, extra=None):
318
BzrNewError.__init__(self)
322
self.extra = ': ' + str(extra)
327
class InvalidNormalization(PathError):
328
"""Path %(path)r is not unicode normalized"""
331
# TODO: This is given a URL; we try to unescape it but doing that from inside
332
# the exception object is a bit undesirable.
333
# TODO: Probably this behavior of should be a common superclass
334
class NotBranchError(PathError):
132
335
"""Not a branch: %(path)s"""
133
337
def __init__(self, path):
134
BzrNewError.__init__(self)
338
import bzrlib.urlutils as urlutils
339
self.path = urlutils.unescape_for_display(path, 'ascii')
342
class AlreadyBranchError(PathError):
343
"""Already a branch: %(path)s."""
346
class BranchExistsWithoutWorkingTree(PathError):
347
"""Directory contains a branch, but no working tree \
348
(use bzr checkout if you wish to build a working tree): %(path)s"""
351
class AtomicFileAlreadyClosed(PathError):
352
"""'%(function)s' called on an AtomicFile after it was closed: %(path)s"""
354
def __init__(self, path, function):
355
PathError.__init__(self, path=path, extra=None)
356
self.function = function
359
class InaccessibleParent(PathError):
360
"""Parent not accessible given base %(base)s and relative path %(path)s"""
362
def __init__(self, path, base):
363
PathError.__init__(self, path)
367
class NoRepositoryPresent(BzrNewError):
368
"""No repository present: %(path)r"""
369
def __init__(self, bzrdir):
370
BzrNewError.__init__(self)
371
self.path = bzrdir.transport.clone('..').base
374
class FileInWrongBranch(BzrNewError):
375
"""File %(path)s in not in branch %(branch_base)s."""
377
def __init__(self, branch, path):
378
BzrNewError.__init__(self)
380
self.branch_base = branch.base
138
class UnsupportedFormatError(BzrError):
139
"""Specified path is a bzr branch that we cannot read."""
141
return 'unsupported branch format: %s' % self.args[0]
384
class UnsupportedFormatError(BzrNewError):
385
"""Unsupported branch format: %(format)s"""
388
class UnknownFormatError(BzrNewError):
389
"""Unknown branch format: %(format)r"""
392
class IncompatibleFormat(BzrNewError):
393
"""Format %(format)s is not compatible with .bzr version %(bzrdir)s."""
395
def __init__(self, format, bzrdir_format):
396
BzrNewError.__init__(self)
398
self.bzrdir = bzrdir_format
401
class IncompatibleRevision(BzrNewError):
402
"""Revision is not compatible with %(repo_format)s"""
404
def __init__(self, repo_format):
405
BzrNewError.__init__(self)
406
self.repo_format = repo_format
144
409
class NotVersionedError(BzrNewError):
151
class BadFileKindError(BzrError):
152
"""Specified file is of a kind that cannot be added.
154
(For example a symlink or device file.)"""
157
class ForbiddenFileError(BzrError):
158
"""Cannot operate on a file because it is a control file."""
161
class LockError(Exception):
416
class PathsNotVersionedError(BzrNewError):
417
# used when reporting several paths are not versioned
418
"""Path(s) are not versioned: %(paths_as_string)s"""
420
def __init__(self, paths):
421
from bzrlib.osutils import quotefn
422
BzrNewError.__init__(self)
424
self.paths_as_string = ' '.join([quotefn(p) for p in paths])
427
class PathsDoNotExist(BzrNewError):
428
"""Path(s) do not exist: %(paths_as_string)s"""
430
# used when reporting that paths are neither versioned nor in the working
433
def __init__(self, paths):
435
from bzrlib.osutils import quotefn
436
BzrNewError.__init__(self)
438
self.paths_as_string = ' '.join([quotefn(p) for p in paths])
441
class BadFileKindError(BzrNewError):
442
"""Cannot operate on %(filename)s of unsupported kind %(kind)s"""
445
class ForbiddenControlFileError(BzrNewError):
446
"""Cannot operate on %(filename)s because it is a control file"""
449
class LockError(BzrNewError):
450
"""Lock error: %(message)s"""
163
451
# All exceptions from the lock/unlock functions should be from
164
452
# this exception class. They will be translated as necessary. The
165
453
# original exception is available as e.original_error
455
# New code should prefer to raise specific subclasses
456
def __init__(self, message):
457
self.message = message
168
460
class CommitNotPossible(LockError):
169
461
"""A commit was attempted but we do not have a write lock open."""
172
466
class AlreadyCommitted(LockError):
173
467
"""A rollback was requested, but is not able to be accomplished."""
176
472
class ReadOnlyError(LockError):
177
"""A write attempt was made in a read only transaction."""
473
"""A write attempt was made in a read only transaction on %(obj)s"""
474
def __init__(self, obj):
478
class OutSideTransaction(BzrNewError):
479
"""A transaction related operation was attempted after the transaction finished."""
482
class ObjectNotLocked(LockError):
483
"""%(obj)r is not locked"""
485
is_user_error = False
487
# this can indicate that any particular object is not locked; see also
488
# LockNotHeld which means that a particular *lock* object is not held by
489
# the caller -- perhaps they should be unified.
490
def __init__(self, obj):
494
class ReadOnlyObjectDirtiedError(ReadOnlyError):
495
"""Cannot change object %(obj)r in read only transaction"""
496
def __init__(self, obj):
500
class UnlockableTransport(LockError):
501
"""Cannot lock: transport is read only: %(transport)s"""
502
def __init__(self, transport):
503
self.transport = transport
506
class LockContention(LockError):
507
"""Could not acquire lock %(lock)s"""
508
# TODO: show full url for lock, combining the transport and relative bits?
509
def __init__(self, lock):
513
class LockBroken(LockError):
514
"""Lock was broken while still open: %(lock)s - check storage consistency!"""
515
def __init__(self, lock):
519
class LockBreakMismatch(LockError):
520
"""Lock was released and re-acquired before being broken: %(lock)s: held by %(holder)r, wanted to break %(target)r"""
521
def __init__(self, lock, holder, target):
527
class LockNotHeld(LockError):
528
"""Lock not held: %(lock)s"""
529
def __init__(self, lock):
180
533
class PointlessCommit(BzrNewError):
181
534
"""No changes to commit"""
184
class NoSuchRevision(BzrError):
537
class UpgradeReadonly(BzrNewError):
538
"""Upgrade URL cannot work with readonly URL's."""
541
class UpToDateFormat(BzrNewError):
542
"""The branch format %(format)s is already at the most recent format."""
544
def __init__(self, format):
545
BzrNewError.__init__(self)
549
class StrictCommitFailed(Exception):
550
"""Commit refused because there are unknowns in the tree."""
553
class NoSuchRevision(BzrNewError):
554
"""Branch %(branch)s has no revision %(revision)s"""
556
is_user_error = False
185
558
def __init__(self, branch, revision):
187
self.revision = revision
188
msg = "Branch %s has no revision %s" % (branch, revision)
189
BzrError.__init__(self, msg)
559
BzrNewError.__init__(self, branch=branch, revision=revision)
562
class NoSuchRevisionSpec(BzrNewError):
563
"""No namespace registered for string: %(spec)r"""
565
def __init__(self, spec):
566
BzrNewError.__init__(self, spec=spec)
569
class InvalidRevisionSpec(BzrNewError):
570
"""Requested revision: '%(spec)s' does not exist in branch:
571
%(branch)s%(extra)s"""
573
def __init__(self, spec, branch, extra=None):
574
BzrNewError.__init__(self, branch=branch, spec=spec)
576
self.extra = '\n' + str(extra)
192
581
class HistoryMissing(BzrError):
250
637
class AmbiguousBase(BzrError):
251
638
def __init__(self, bases):
252
msg = "The correct base is unclear, becase %s are all equally close" %\
639
warn("BzrError AmbiguousBase has been deprecated as of bzrlib 0.8.",
641
msg = "The correct base is unclear, because %s are all equally close" %\
254
643
BzrError.__init__(self, msg)
255
644
self.bases = bases
257
class NoCommits(BzrError):
647
class NoCommits(BzrNewError):
648
"""Branch %(branch)s has no commits."""
258
650
def __init__(self, branch):
259
msg = "Branch %s has no commits." % branch
260
BzrError.__init__(self, msg)
651
BzrNewError.__init__(self, branch=branch)
262
654
class UnlistableStore(BzrError):
263
655
def __init__(self, store):
264
656
BzrError.__init__(self, "Store %s is not listable" % store)
266
660
class UnlistableBranch(BzrError):
267
661
def __init__(self, br):
268
662
BzrError.__init__(self, "Stores for branch %s are not listable" % br)
271
from bzrlib.weave import WeaveError, WeaveParentMismatch
273
class TransportError(BzrError):
274
"""All errors thrown by Transport implementations should derive
665
class BoundBranchOutOfDate(BzrNewError):
666
"""Bound branch %(branch)s is out of date with master branch %(master)s."""
667
def __init__(self, branch, master):
668
BzrNewError.__init__(self)
673
class CommitToDoubleBoundBranch(BzrNewError):
674
"""Cannot commit to branch %(branch)s. It is bound to %(master)s, which is bound to %(remote)s."""
675
def __init__(self, branch, master, remote):
676
BzrNewError.__init__(self)
682
class OverwriteBoundBranch(BzrNewError):
683
"""Cannot pull --overwrite to a branch which is bound %(branch)s"""
684
def __init__(self, branch):
685
BzrNewError.__init__(self)
689
class BoundBranchConnectionFailure(BzrNewError):
690
"""Unable to connect to target of bound branch %(branch)s => %(target)s: %(error)s"""
691
def __init__(self, branch, target, error):
692
BzrNewError.__init__(self)
698
class WeaveError(BzrNewError):
699
"""Error in processing weave: %(message)s"""
701
def __init__(self, message=None):
702
BzrNewError.__init__(self)
703
self.message = message
706
class WeaveRevisionAlreadyPresent(WeaveError):
707
"""Revision {%(revision_id)s} already present in %(weave)s"""
708
def __init__(self, revision_id, weave):
710
WeaveError.__init__(self)
711
self.revision_id = revision_id
715
class WeaveRevisionNotPresent(WeaveError):
716
"""Revision {%(revision_id)s} not present in %(weave)s"""
718
def __init__(self, revision_id, weave):
719
WeaveError.__init__(self)
720
self.revision_id = revision_id
724
class WeaveFormatError(WeaveError):
725
"""Weave invariant violated: %(what)s"""
727
def __init__(self, what):
728
WeaveError.__init__(self)
732
class WeaveParentMismatch(WeaveError):
733
"""Parents are mismatched between two revisions."""
736
class WeaveInvalidChecksum(WeaveError):
737
"""Text did not match it's checksum: %(message)s"""
740
class WeaveTextDiffers(WeaveError):
741
"""Weaves differ on text content. Revision: {%(revision_id)s}, %(weave_a)s, %(weave_b)s"""
743
def __init__(self, revision_id, weave_a, weave_b):
744
WeaveError.__init__(self)
745
self.revision_id = revision_id
746
self.weave_a = weave_a
747
self.weave_b = weave_b
750
class WeaveTextDiffers(WeaveError):
751
"""Weaves differ on text content. Revision: {%(revision_id)s}, %(weave_a)s, %(weave_b)s"""
753
def __init__(self, revision_id, weave_a, weave_b):
754
WeaveError.__init__(self)
755
self.revision_id = revision_id
756
self.weave_a = weave_a
757
self.weave_b = weave_b
760
class VersionedFileError(BzrNewError):
761
"""Versioned file error."""
764
class RevisionNotPresent(VersionedFileError):
765
"""Revision {%(revision_id)s} not present in %(file_id)s."""
767
def __init__(self, revision_id, file_id):
768
VersionedFileError.__init__(self)
769
self.revision_id = revision_id
770
self.file_id = file_id
773
class RevisionAlreadyPresent(VersionedFileError):
774
"""Revision {%(revision_id)s} already present in %(file_id)s."""
776
def __init__(self, revision_id, file_id):
777
VersionedFileError.__init__(self)
778
self.revision_id = revision_id
779
self.file_id = file_id
782
class KnitError(BzrNewError):
786
class KnitHeaderError(KnitError):
787
"""Knit header error: %(badline)r unexpected"""
789
def __init__(self, badline):
790
KnitError.__init__(self)
791
self.badline = badline
794
class KnitCorrupt(KnitError):
795
"""Knit %(filename)s corrupt: %(how)s"""
797
def __init__(self, filename, how):
798
KnitError.__init__(self)
799
self.filename = filename
803
class NoSuchExportFormat(BzrNewError):
804
"""Export format %(format)r not supported"""
805
def __init__(self, format):
806
BzrNewError.__init__(self)
810
class TransportError(BzrNewError):
811
"""Transport error: %(msg)s %(orig_error)s"""
277
813
def __init__(self, msg=None, orig_error=None):
278
814
if msg is None and orig_error is not None:
279
815
msg = str(orig_error)
280
BzrError.__init__(self, msg)
816
if orig_error is None:
282
821
self.orig_error = orig_error
822
BzrNewError.__init__(self)
825
class SmartProtocolError(TransportError):
826
"""Generic bzr smart protocol error: %(details)s"""
828
def __init__(self, details):
829
self.details = details
284
832
# A set of semi-meaningful errors which can be thrown
285
833
class TransportNotPossible(TransportError):
286
"""This is for transports where a specific function is explicitly not
287
possible. Such as pushing files to an HTTP server.
291
class NonRelativePath(TransportError):
292
"""An absolute path was supplied, that could not be decoded into
297
class NoSuchFile(TransportError, IOError):
298
"""A get() was issued for a file that doesn't exist."""
300
# XXX: Is multiple inheritance for exceptions really needed?
303
return 'no such file: ' + self.msg
305
def __init__(self, msg=None, orig_error=None):
307
TransportError.__init__(self, msg=msg, orig_error=orig_error)
308
IOError.__init__(self, errno.ENOENT, self.msg)
310
class FileExists(TransportError, OSError):
311
"""An operation was attempted, which would overwrite an entry,
312
but overwritting is not supported.
314
mkdir() can throw this, but put() just overwites existing files.
316
# XXX: Is multiple inheritance for exceptions really needed?
317
def __init__(self, msg=None, orig_error=None):
319
TransportError.__init__(self, msg=msg, orig_error=orig_error)
320
OSError.__init__(self, errno.EEXIST, self.msg)
322
class PermissionDenied(TransportError):
323
"""An operation cannot succeed because of a lack of permissions."""
834
"""Transport operation not possible: %(msg)s %(orig_error)s"""
837
class ConnectionError(TransportError):
838
"""Connection error: %(msg)s %(orig_error)s"""
326
841
class ConnectionReset(TransportError):
327
"""The connection has been closed."""
842
"""Connection closed: %(msg)s %(orig_error)s"""
845
class InvalidRange(TransportError):
846
"""Invalid range access in %(path)s at %(offset)s."""
848
def __init__(self, path, offset):
849
TransportError.__init__(self, ("Invalid range access in %s at %d"
855
class InvalidHttpResponse(TransportError):
856
"""Invalid http response for %(path)s: %(msg)s"""
858
def __init__(self, path, msg, orig_error=None):
860
TransportError.__init__(self, msg, orig_error=orig_error)
863
class InvalidHttpRange(InvalidHttpResponse):
864
"""Invalid http range "%(range)s" for %(path)s: %(msg)s"""
866
def __init__(self, path, range, msg):
868
InvalidHttpResponse.__init__(self, path, msg)
871
class InvalidHttpContentType(InvalidHttpResponse):
872
"""Invalid http Content-type "%(ctype)s" for %(path)s: %(msg)s"""
874
def __init__(self, path, ctype, msg):
876
InvalidHttpResponse.__init__(self, path, msg)
330
879
class ConflictsInTree(BzrError):
331
880
def __init__(self):
332
881
BzrError.__init__(self, "Working tree has conflicts.")
884
class ParseConfigError(BzrError):
885
def __init__(self, errors, filename):
888
message = "Error(s) parsing config file %s:\n%s" % \
889
(filename, ('\n'.join(e.message for e in errors)))
890
BzrError.__init__(self, message)
334
893
class SigningFailed(BzrError):
335
894
def __init__(self, command_line):
336
895
BzrError.__init__(self, "Failed to gpg sign data with command '%s'"
899
class WorkingTreeNotRevision(BzrError):
900
def __init__(self, tree):
901
BzrError.__init__(self, "The working tree for %s has changed since"
902
" last commit, but weave merge requires that it be"
903
" unchanged." % tree.basedir)
906
class CantReprocessAndShowBase(BzrNewError):
907
"""Can't reprocess and show base.
908
Reprocessing obscures relationship of conflicting lines to base."""
911
class GraphCycleError(BzrNewError):
912
"""Cycle in graph %(graph)r"""
913
def __init__(self, graph):
914
BzrNewError.__init__(self)
918
class NotConflicted(BzrNewError):
919
"""File %(filename)s is not conflicted."""
921
def __init__(self, filename):
922
BzrNewError.__init__(self)
923
self.filename = filename
926
class MustUseDecorated(Exception):
927
"""A decorating function has requested its original command be used.
929
This should never escape bzr, so does not need to be printable.
933
class NoBundleFound(BzrNewError):
934
"""No bundle was found in %(filename)s"""
935
def __init__(self, filename):
936
BzrNewError.__init__(self)
937
self.filename = filename
940
class BundleNotSupported(BzrNewError):
941
"""Unable to handle bundle version %(version)s: %(msg)s"""
942
def __init__(self, version, msg):
943
BzrNewError.__init__(self)
944
self.version = version
948
class MissingText(BzrNewError):
949
"""Branch %(base)s is missing revision %(text_revision)s of %(file_id)s"""
951
def __init__(self, branch, text_revision, file_id):
952
BzrNewError.__init__(self)
954
self.base = branch.base
955
self.text_revision = text_revision
956
self.file_id = file_id
959
class DuplicateKey(BzrNewError):
960
"""Key %(key)s is already present in map"""
963
class MalformedTransform(BzrNewError):
964
"""Tree transform is malformed %(conflicts)r"""
967
class BzrBadParameter(BzrNewError):
968
"""A bad parameter : %(param)s is not usable.
970
This exception should never be thrown, but it is a base class for all
971
parameter-to-function errors.
973
def __init__(self, param):
974
BzrNewError.__init__(self)
978
class BzrBadParameterNotUnicode(BzrBadParameter):
979
"""Parameter %(param)s is neither unicode nor utf8."""
982
class ReusingTransform(BzrNewError):
983
"""Attempt to reuse a transform that has already been applied."""
986
class CantMoveRoot(BzrNewError):
987
"""Moving the root directory is not supported at this time"""
990
class BzrBadParameterNotString(BzrBadParameter):
991
"""Parameter %(param)s is not a string or unicode string."""
994
class BzrBadParameterMissing(BzrBadParameter):
995
"""Parameter $(param)s is required but not present."""
998
class BzrBadParameterUnicode(BzrBadParameter):
999
"""Parameter %(param)s is unicode but only byte-strings are permitted."""
1002
class BzrBadParameterContainsNewline(BzrBadParameter):
1003
"""Parameter %(param)s contains a newline."""
1006
class DependencyNotPresent(BzrNewError):
1007
"""Unable to import library "%(library)s": %(error)s"""
1009
def __init__(self, library, error):
1010
BzrNewError.__init__(self, library=library, error=error)
1013
class ParamikoNotPresent(DependencyNotPresent):
1014
"""Unable to import paramiko (required for sftp support): %(error)s"""
1016
def __init__(self, error):
1017
DependencyNotPresent.__init__(self, 'paramiko', error)
1020
class PointlessMerge(BzrNewError):
1021
"""Nothing to merge."""
1024
class UninitializableFormat(BzrNewError):
1025
"""Format %(format)s cannot be initialised by this version of bzr."""
1027
def __init__(self, format):
1028
BzrNewError.__init__(self)
1029
self.format = format
1032
class BadConversionTarget(BzrNewError):
1033
"""Cannot convert to format %(format)s. %(problem)s"""
1035
def __init__(self, problem, format):
1036
BzrNewError.__init__(self)
1037
self.problem = problem
1038
self.format = format
1041
class NoDiff(BzrNewError):
1042
"""Diff is not installed on this machine: %(msg)s"""
1044
def __init__(self, msg):
1045
BzrNewError.__init__(self, msg=msg)
1048
class NoDiff3(BzrNewError):
1049
"""Diff3 is not installed on this machine."""
1052
class ExistingLimbo(BzrNewError):
1053
"""This tree contains left-over files from a failed operation.
1054
Please examine %(limbo_dir)s to see if it contains any files you wish to
1055
keep, and delete it when you are done.
1057
def __init__(self, limbo_dir):
1058
BzrNewError.__init__(self)
1059
self.limbo_dir = limbo_dir
1062
class ImmortalLimbo(BzrNewError):
1063
"""Unable to delete transform temporary directory $(limbo_dir)s.
1064
Please examine %(limbo_dir)s to see if it contains any files you wish to
1065
keep, and delete it when you are done.
1067
def __init__(self, limbo_dir):
1068
BzrNewError.__init__(self)
1069
self.limbo_dir = limbo_dir
1072
class OutOfDateTree(BzrNewError):
1073
"""Working tree is out of date, please run 'bzr update'."""
1075
def __init__(self, tree):
1076
BzrNewError.__init__(self)
1080
class MergeModifiedFormatError(BzrNewError):
1081
"""Error in merge modified format"""
1084
class ConflictFormatError(BzrNewError):
1085
"""Format error in conflict listings"""
1088
class CorruptRepository(BzrNewError):
1089
"""An error has been detected in the repository %(repo_path)s.
1090
Please run bzr reconcile on this repository."""
1092
def __init__(self, repo):
1093
BzrNewError.__init__(self)
1094
self.repo_path = repo.bzrdir.root_transport.base
1097
class UpgradeRequired(BzrNewError):
1098
"""To use this feature you must upgrade your branch at %(path)s."""
1100
def __init__(self, path):
1101
BzrNewError.__init__(self)
1105
class LocalRequiresBoundBranch(BzrNewError):
1106
"""Cannot perform local-only commits on unbound branches."""
1109
class MissingProgressBarFinish(BzrNewError):
1110
"""A nested progress bar was not 'finished' correctly."""
1113
class InvalidProgressBarType(BzrNewError):
1114
"""Environment variable BZR_PROGRESS_BAR='%(bar_type)s is not a supported type
1115
Select one of: %(valid_types)s"""
1117
def __init__(self, bar_type, valid_types):
1118
BzrNewError.__init__(self, bar_type=bar_type, valid_types=valid_types)
1121
class UnsupportedOperation(BzrNewError):
1122
"""The method %(mname)s is not supported on objects of type %(tname)s."""
1123
def __init__(self, method, method_self):
1124
self.method = method
1125
self.mname = method.__name__
1126
self.tname = type(method_self).__name__
1129
class BinaryFile(BzrNewError):
1130
"""File is binary but should be text."""
1133
class IllegalPath(BzrNewError):
1134
"""The path %(path)s is not permitted on this platform"""
1136
def __init__(self, path):
1137
BzrNewError.__init__(self)
1141
class TestamentMismatch(BzrNewError):
1142
"""Testament did not match expected value.
1143
For revision_id {%(revision_id)s}, expected {%(expected)s}, measured
1146
def __init__(self, revision_id, expected, measured):
1147
self.revision_id = revision_id
1148
self.expected = expected
1149
self.measured = measured
1152
class NotABundle(BzrNewError):
1153
"""Not a bzr revision-bundle: %(text)r"""
1155
def __init__(self, text):
1156
BzrNewError.__init__(self)
1160
class BadBundle(BzrNewError):
1161
"""Bad bzr revision-bundle: %(text)r"""
1163
def __init__(self, text):
1164
BzrNewError.__init__(self)
1168
class MalformedHeader(BadBundle):
1169
"""Malformed bzr revision-bundle header: %(text)r"""
1171
def __init__(self, text):
1172
BzrNewError.__init__(self)
1176
class MalformedPatches(BadBundle):
1177
"""Malformed patches in bzr revision-bundle: %(text)r"""
1179
def __init__(self, text):
1180
BzrNewError.__init__(self)
1184
class MalformedFooter(BadBundle):
1185
"""Malformed footer in bzr revision-bundle: %(text)r"""
1187
def __init__(self, text):
1188
BzrNewError.__init__(self)
1192
class UnsupportedEOLMarker(BadBundle):
1193
"""End of line marker was not \\n in bzr revision-bundle"""
1196
BzrNewError.__init__(self)
1199
class IncompatibleFormat(BzrNewError):
1200
"""Bundle format %(bundle_format)s is incompatible with %(other)s"""
1202
def __init__(self, bundle_format, other):
1203
BzrNewError.__init__(self)
1204
self.bundle_format = bundle_format
1208
class BadInventoryFormat(BzrNewError):
1209
"""Root class for inventory serialization errors"""
1212
class UnexpectedInventoryFormat(BadInventoryFormat):
1213
"""The inventory was not in the expected format:\n %(msg)s"""
1215
def __init__(self, msg):
1216
BadInventoryFormat.__init__(self, msg=msg)
1219
class NoSmartServer(NotBranchError):
1220
"""No smart server available at %(url)s"""
1222
def __init__(self, url):
1226
class UnknownSSH(BzrNewError):
1227
"""Unrecognised value for BZR_SSH environment variable: %(vendor)s"""
1229
def __init__(self, vendor):
1230
BzrNewError.__init__(self)
1231
self.vendor = vendor
1234
class GhostRevisionUnusableHere(BzrNewError):
1235
"""Ghost revision {%(revision_id)s} cannot be used here."""
1237
def __init__(self, revision_id):
1238
BzrNewError.__init__(self)
1239
self.revision_id = revision_id
1242
class IllegalUseOfScopeReplacer(BzrNewError):
1243
"""ScopeReplacer object %(name)r was used incorrectly: %(msg)s%(extra)s"""
1245
is_user_error = False
1247
def __init__(self, name, msg, extra=None):
1248
BzrNewError.__init__(self)
1252
self.extra = ': ' + str(extra)
1257
class InvalidImportLine(BzrNewError):
1258
"""Not a valid import statement: %(msg)\n%(text)s"""
1260
is_user_error = False
1262
def __init__(self, text, msg):
1263
BzrNewError.__init__(self)
1268
class ImportNameCollision(BzrNewError):
1269
"""Tried to import an object to the same name as an existing object. %(name)s"""
1271
is_user_error = False
1273
def __init__(self, name):
1274
BzrNewError.__init__(self)