40
115
return n + `self.args`
43
class BzrCheckError(BzrError):
47
class InvalidRevisionNumber(BzrError):
49
return 'invalid revision number: %r' % self.args[0]
52
class InvalidRevisionId(BzrError):
56
class BzrCommandError(BzrError):
57
# Error from malformed user command
62
class NotBranchError(BzrError):
63
"""Specified path is not in a branch"""
65
return 'not a branch: %s' % self.args[0]
68
class NotVersionedError(BzrError):
69
"""Specified object is not versioned."""
72
class BadFileKindError(BzrError):
73
"""Specified file is of a kind that cannot be added.
75
(For example a symlink or device file.)"""
79
class ForbiddenFileError(BzrError):
80
"""Cannot operate on a file because it is a control file."""
84
class LockError(Exception):
85
"""All exceptions from the lock/unlock functions should be from
86
this exception class. They will be translated as necessary. The
87
original exception is available as e.original_error
89
def __init__(self, e=None):
90
self.original_error = e
92
Exception.__init__(self, e)
94
Exception.__init__(self)
97
class PointlessCommit(Exception):
98
"""Commit failed because nothing was changed."""
101
class NoSuchRevision(BzrError):
118
class BzrNewError(BzrError):
120
# base classes should override the docstring with their human-
121
# readable explanation
123
def __init__(self, **kwds):
124
for key, value in kwds.items():
125
setattr(self, key, value)
129
return self.__doc__ % self.__dict__
130
except (NameError, ValueError, KeyError), e:
131
return 'Unprintable exception %s: %s' \
132
% (self.__class__.__name__, str(e))
135
class BzrCheckError(BzrNewError):
136
"""Internal check failed: %(message)s"""
138
is_user_error = False
140
def __init__(self, message):
141
BzrNewError.__init__(self)
142
self.message = message
145
class InvalidEntryName(BzrNewError):
146
"""Invalid entry name: %(name)s"""
148
is_user_error = False
150
def __init__(self, name):
151
BzrNewError.__init__(self)
155
class InvalidRevisionNumber(BzrNewError):
156
"""Invalid revision number %(revno)d"""
157
def __init__(self, revno):
158
BzrNewError.__init__(self)
162
class InvalidRevisionId(BzrNewError):
163
"""Invalid revision-id {%(revision_id)s} in %(branch)s"""
164
def __init__(self, revision_id, branch):
165
# branch can be any string or object with __str__ defined
166
BzrNewError.__init__(self)
167
self.revision_id = revision_id
171
class NoWorkingTree(BzrNewError):
172
"""No WorkingTree exists for %(base)s."""
174
def __init__(self, base):
175
BzrNewError.__init__(self)
179
class NotLocalUrl(BzrNewError):
180
"""%(url)s is not a local path."""
182
def __init__(self, url):
183
BzrNewError.__init__(self)
187
class BzrCommandError(BzrNewError):
188
"""Error from user command"""
192
# Error from malformed user command; please avoid raising this as a
193
# generic exception not caused by user input.
195
# I think it's a waste of effort to differentiate between errors that
196
# are not intended to be caught anyway. UI code need not subclass
197
# BzrCommandError, and non-UI code should not throw a subclass of
198
# BzrCommandError. ADHB 20051211
199
def __init__(self, msg):
206
class BzrOptionError(BzrCommandError):
207
"""Error in command line options"""
210
class StrictCommitFailed(BzrNewError):
211
"""Commit refused because there are unknown files in the tree"""
214
# XXX: Should be unified with TransportError; they seem to represent the
216
class PathError(BzrNewError):
217
"""Generic path error: %(path)r%(extra)s)"""
219
def __init__(self, path, extra=None):
220
BzrNewError.__init__(self)
223
self.extra = ': ' + str(extra)
228
class NoSuchFile(PathError):
229
"""No such file: %(path)r%(extra)s"""
232
class FileExists(PathError):
233
"""File exists: %(path)r%(extra)s"""
236
class DirectoryNotEmpty(PathError):
237
"""Directory not empty: %(path)r%(extra)s"""
240
class ResourceBusy(PathError):
241
"""Device or resource busy: %(path)r%(extra)s"""
244
class PermissionDenied(PathError):
245
"""Permission denied: %(path)r%(extra)s"""
248
class InvalidURL(PathError):
249
"""Invalid url supplied to transport: %(path)r%(extra)s"""
252
class InvalidURLJoin(PathError):
253
"""Invalid URL join request: %(args)s%(extra)s"""
255
def __init__(self, msg, base, args):
256
PathError.__init__(self, base, msg)
258
self.args.extend(args)
261
class UnsupportedProtocol(PathError):
262
"""Unsupported protocol for url "%(path)s"%(extra)s"""
264
def __init__(self, url, extra):
265
PathError.__init__(self, url, extra=extra)
268
class PathNotChild(BzrNewError):
269
"""Path %(path)r is not a child of path %(base)r%(extra)s"""
271
is_user_error = False
273
def __init__(self, path, base, extra=None):
274
BzrNewError.__init__(self)
278
self.extra = ': ' + str(extra)
283
class InvalidNormalization(PathError):
284
"""Path %(path)r is not unicode normalized"""
287
# TODO: This is given a URL; we try to unescape it but doing that from inside
288
# the exception object is a bit undesirable.
289
# TODO: Probably this behavior of should be a common superclass
290
class NotBranchError(PathError):
291
"""Not a branch: %(path)s"""
293
def __init__(self, path):
294
import bzrlib.urlutils as urlutils
295
self.path = urlutils.unescape_for_display(path, 'ascii')
298
class AlreadyBranchError(PathError):
299
"""Already a branch: %(path)s."""
302
class BranchExistsWithoutWorkingTree(PathError):
303
"""Directory contains a branch, but no working tree \
304
(use bzr checkout if you wish to build a working tree): %(path)s"""
307
class AtomicFileAlreadyClosed(PathError):
308
"""'%(function)s' called on an AtomicFile after it was closed: %(path)s"""
310
def __init__(self, path, function):
311
PathError.__init__(self, path=path, extra=None)
312
self.function = function
315
class InaccessibleParent(PathError):
316
"""Parent not accessible given base %(base)s and relative path %(path)s"""
318
def __init__(self, path, base):
319
PathError.__init__(self, path)
323
class NoRepositoryPresent(BzrNewError):
324
"""No repository present: %(path)r"""
325
def __init__(self, bzrdir):
326
BzrNewError.__init__(self)
327
self.path = bzrdir.transport.clone('..').base
330
class FileInWrongBranch(BzrNewError):
331
"""File %(path)s in not in branch %(branch_base)s."""
333
def __init__(self, branch, path):
334
BzrNewError.__init__(self)
336
self.branch_base = branch.base
340
class UnsupportedFormatError(BzrNewError):
341
"""Unsupported branch format: %(format)s"""
344
class UnknownFormatError(BzrNewError):
345
"""Unknown branch format: %(format)r"""
348
class IncompatibleFormat(BzrNewError):
349
"""Format %(format)s is not compatible with .bzr version %(bzrdir)s."""
351
def __init__(self, format, bzrdir_format):
352
BzrNewError.__init__(self)
354
self.bzrdir = bzrdir_format
357
class NotVersionedError(BzrNewError):
358
"""%(path)s is not versioned"""
359
def __init__(self, path):
360
BzrNewError.__init__(self)
364
class PathsNotVersionedError(BzrNewError):
365
# used when reporting several paths are not versioned
366
"""Path(s) are not versioned: %(paths_as_string)s"""
368
def __init__(self, paths):
369
from bzrlib.osutils import quotefn
370
BzrNewError.__init__(self)
372
self.paths_as_string = ' '.join([quotefn(p) for p in paths])
375
class PathsDoNotExist(BzrNewError):
376
"""Path(s) do not exist: %(paths_as_string)s"""
378
# used when reporting that paths are neither versioned nor in the working
381
def __init__(self, paths):
383
from bzrlib.osutils import quotefn
384
BzrNewError.__init__(self)
386
self.paths_as_string = ' '.join([quotefn(p) for p in paths])
389
class BadFileKindError(BzrNewError):
390
"""Cannot operate on %(filename)s of unsupported kind %(kind)s"""
393
class ForbiddenControlFileError(BzrNewError):
394
"""Cannot operate on %(filename)s because it is a control file"""
397
class LockError(BzrNewError):
398
"""Lock error: %(message)s"""
399
# All exceptions from the lock/unlock functions should be from
400
# this exception class. They will be translated as necessary. The
401
# original exception is available as e.original_error
403
# New code should prefer to raise specific subclasses
404
def __init__(self, message):
405
self.message = message
408
class CommitNotPossible(LockError):
409
"""A commit was attempted but we do not have a write lock open."""
414
class AlreadyCommitted(LockError):
415
"""A rollback was requested, but is not able to be accomplished."""
420
class ReadOnlyError(LockError):
421
"""A write attempt was made in a read only transaction on %(obj)s"""
422
def __init__(self, obj):
426
class OutSideTransaction(BzrNewError):
427
"""A transaction related operation was attempted after the transaction finished."""
430
class ObjectNotLocked(LockError):
431
"""%(obj)r is not locked"""
433
is_user_error = False
435
# this can indicate that any particular object is not locked; see also
436
# LockNotHeld which means that a particular *lock* object is not held by
437
# the caller -- perhaps they should be unified.
438
def __init__(self, obj):
442
class ReadOnlyObjectDirtiedError(ReadOnlyError):
443
"""Cannot change object %(obj)r in read only transaction"""
444
def __init__(self, obj):
448
class UnlockableTransport(LockError):
449
"""Cannot lock: transport is read only: %(transport)s"""
450
def __init__(self, transport):
451
self.transport = transport
454
class LockContention(LockError):
455
"""Could not acquire lock %(lock)s"""
456
# TODO: show full url for lock, combining the transport and relative bits?
457
def __init__(self, lock):
461
class LockBroken(LockError):
462
"""Lock was broken while still open: %(lock)s - check storage consistency!"""
463
def __init__(self, lock):
467
class LockBreakMismatch(LockError):
468
"""Lock was released and re-acquired before being broken: %(lock)s: held by %(holder)r, wanted to break %(target)r"""
469
def __init__(self, lock, holder, target):
475
class LockNotHeld(LockError):
476
"""Lock not held: %(lock)s"""
477
def __init__(self, lock):
481
class PointlessCommit(BzrNewError):
482
"""No changes to commit"""
485
class UpgradeReadonly(BzrNewError):
486
"""Upgrade URL cannot work with readonly URL's."""
489
class UpToDateFormat(BzrNewError):
490
"""The branch format %(format)s is already at the most recent format."""
492
def __init__(self, format):
493
BzrNewError.__init__(self)
498
class StrictCommitFailed(Exception):
499
"""Commit refused because there are unknowns in the tree."""
502
class NoSuchRevision(BzrNewError):
503
"""Branch %(branch)s has no revision %(revision)s"""
505
is_user_error = False
102
507
def __init__(self, branch, revision):
103
508
self.branch = branch
104
509
self.revision = revision
105
msg = "Branch %s has no revision %s" % (branch, revision)
106
BzrError.__init__(self, msg)
109
512
class HistoryMissing(BzrError):
167
568
class AmbiguousBase(BzrError):
168
569
def __init__(self, bases):
169
msg = "The correct base is unclear, becase %s are all equally close" %\
570
warn("BzrError AmbiguousBase has been deprecated as of bzrlib 0.8.",
572
msg = "The correct base is unclear, because %s are all equally close" %\
171
574
BzrError.__init__(self, msg)
172
575
self.bases = bases
174
578
class NoCommits(BzrError):
175
579
def __init__(self, branch):
176
580
msg = "Branch %s has no commits." % branch
177
581
BzrError.__init__(self, msg)
179
584
class UnlistableStore(BzrError):
180
585
def __init__(self, store):
181
586
BzrError.__init__(self, "Store %s is not listable" % store)
183
590
class UnlistableBranch(BzrError):
184
591
def __init__(self, br):
185
592
BzrError.__init__(self, "Stores for branch %s are not listable" % br)
188
from bzrlib.weave import WeaveError
190
class TransportError(BzrError):
191
"""All errors thrown by Transport implementations should derive
595
class BoundBranchOutOfDate(BzrNewError):
596
"""Bound branch %(branch)s is out of date with master branch %(master)s."""
597
def __init__(self, branch, master):
598
BzrNewError.__init__(self)
603
class CommitToDoubleBoundBranch(BzrNewError):
604
"""Cannot commit to branch %(branch)s. It is bound to %(master)s, which is bound to %(remote)s."""
605
def __init__(self, branch, master, remote):
606
BzrNewError.__init__(self)
612
class OverwriteBoundBranch(BzrNewError):
613
"""Cannot pull --overwrite to a branch which is bound %(branch)s"""
614
def __init__(self, branch):
615
BzrNewError.__init__(self)
619
class BoundBranchConnectionFailure(BzrNewError):
620
"""Unable to connect to target of bound branch %(branch)s => %(target)s: %(error)s"""
621
def __init__(self, branch, target, error):
622
BzrNewError.__init__(self)
628
class WeaveError(BzrNewError):
629
"""Error in processing weave: %(message)s"""
631
def __init__(self, message=None):
632
BzrNewError.__init__(self)
633
self.message = message
636
class WeaveRevisionAlreadyPresent(WeaveError):
637
"""Revision {%(revision_id)s} already present in %(weave)s"""
638
def __init__(self, revision_id, weave):
640
WeaveError.__init__(self)
641
self.revision_id = revision_id
645
class WeaveRevisionNotPresent(WeaveError):
646
"""Revision {%(revision_id)s} not present in %(weave)s"""
648
def __init__(self, revision_id, weave):
649
WeaveError.__init__(self)
650
self.revision_id = revision_id
654
class WeaveFormatError(WeaveError):
655
"""Weave invariant violated: %(what)s"""
657
def __init__(self, what):
658
WeaveError.__init__(self)
662
class WeaveParentMismatch(WeaveError):
663
"""Parents are mismatched between two revisions."""
666
class WeaveInvalidChecksum(WeaveError):
667
"""Text did not match it's checksum: %(message)s"""
670
class WeaveTextDiffers(WeaveError):
671
"""Weaves differ on text content. Revision: {%(revision_id)s}, %(weave_a)s, %(weave_b)s"""
673
def __init__(self, revision_id, weave_a, weave_b):
674
WeaveError.__init__(self)
675
self.revision_id = revision_id
676
self.weave_a = weave_a
677
self.weave_b = weave_b
680
class WeaveTextDiffers(WeaveError):
681
"""Weaves differ on text content. Revision: {%(revision_id)s}, %(weave_a)s, %(weave_b)s"""
683
def __init__(self, revision_id, weave_a, weave_b):
684
WeaveError.__init__(self)
685
self.revision_id = revision_id
686
self.weave_a = weave_a
687
self.weave_b = weave_b
690
class VersionedFileError(BzrNewError):
691
"""Versioned file error."""
694
class RevisionNotPresent(VersionedFileError):
695
"""Revision {%(revision_id)s} not present in %(file_id)s."""
697
def __init__(self, revision_id, file_id):
698
VersionedFileError.__init__(self)
699
self.revision_id = revision_id
700
self.file_id = file_id
703
class RevisionAlreadyPresent(VersionedFileError):
704
"""Revision {%(revision_id)s} already present in %(file_id)s."""
706
def __init__(self, revision_id, file_id):
707
VersionedFileError.__init__(self)
708
self.revision_id = revision_id
709
self.file_id = file_id
712
class KnitError(BzrNewError):
716
class KnitHeaderError(KnitError):
717
"""Knit header error: %(badline)r unexpected"""
719
def __init__(self, badline):
720
KnitError.__init__(self)
721
self.badline = badline
724
class KnitCorrupt(KnitError):
725
"""Knit %(filename)s corrupt: %(how)s"""
727
def __init__(self, filename, how):
728
KnitError.__init__(self)
729
self.filename = filename
733
class NoSuchExportFormat(BzrNewError):
734
"""Export format %(format)r not supported"""
735
def __init__(self, format):
736
BzrNewError.__init__(self)
740
class TransportError(BzrNewError):
741
"""Transport error: %(msg)s %(orig_error)s"""
194
743
def __init__(self, msg=None, orig_error=None):
195
744
if msg is None and orig_error is not None:
196
745
msg = str(orig_error)
197
BzrError.__init__(self, msg)
746
if orig_error is None:
199
751
self.orig_error = orig_error
752
BzrNewError.__init__(self)
201
755
# A set of semi-meaningful errors which can be thrown
202
756
class TransportNotPossible(TransportError):
203
"""This is for transports where a specific function is explicitly not
204
possible. Such as pushing files to an HTTP server.
208
class NonRelativePath(TransportError):
209
"""An absolute path was supplied, that could not be decoded into
214
class NoSuchFile(TransportError, IOError):
215
"""A get() was issued for a file that doesn't exist."""
217
# XXX: Is multiple inheritance for exceptions really needed?
220
return 'no such file: ' + self.msg
222
def __init__(self, msg=None, orig_error=None):
224
TransportError.__init__(self, msg=msg, orig_error=orig_error)
225
IOError.__init__(self, errno.ENOENT, self.msg)
227
class FileExists(TransportError, OSError):
228
"""An operation was attempted, which would overwrite an entry,
229
but overwritting is not supported.
231
mkdir() can throw this, but put() just overwites existing files.
233
# XXX: Is multiple inheritance for exceptions really needed?
234
def __init__(self, msg=None, orig_error=None):
236
TransportError.__init__(self, msg=msg, orig_error=orig_error)
237
OSError.__init__(self, errno.EEXIST, self.msg)
239
class PermissionDenied(TransportError):
240
"""An operation cannot succeed because of a lack of permissions."""
757
"""Transport operation not possible: %(msg)s %(orig_error)%"""
760
class ConnectionError(TransportError):
761
"""Connection error: %(msg)s %(orig_error)s"""
243
764
class ConnectionReset(TransportError):
244
"""The connection has been closed."""
765
"""Connection closed: %(msg)s %(orig_error)s"""
768
class InvalidRange(TransportError):
769
"""Invalid range access."""
771
def __init__(self, path, offset):
772
TransportError.__init__(self, ("Invalid range access in %s at %d"
776
class InvalidHttpResponse(TransportError):
777
"""Invalid http response for %(path)s: %(msg)s"""
779
def __init__(self, path, msg, orig_error=None):
781
TransportError.__init__(self, msg, orig_error=orig_error)
784
class InvalidHttpRange(InvalidHttpResponse):
785
"""Invalid http range "%(range)s" for %(path)s: %(msg)s"""
787
def __init__(self, path, range, msg):
789
InvalidHttpResponse.__init__(self, path, msg)
792
class InvalidHttpContentType(InvalidHttpResponse):
793
"""Invalid http Content-type "%(ctype)s" for %(path)s: %(msg)s"""
795
def __init__(self, path, ctype, msg):
797
InvalidHttpResponse.__init__(self, path, msg)
247
800
class ConflictsInTree(BzrError):
248
801
def __init__(self):
249
802
BzrError.__init__(self, "Working tree has conflicts.")
805
class ParseConfigError(BzrError):
806
def __init__(self, errors, filename):
809
message = "Error(s) parsing config file %s:\n%s" % \
810
(filename, ('\n'.join(e.message for e in errors)))
811
BzrError.__init__(self, message)
814
class SigningFailed(BzrError):
815
def __init__(self, command_line):
816
BzrError.__init__(self, "Failed to gpg sign data with command '%s'"
820
class WorkingTreeNotRevision(BzrError):
821
def __init__(self, tree):
822
BzrError.__init__(self, "The working tree for %s has changed since"
823
" last commit, but weave merge requires that it be"
824
" unchanged." % tree.basedir)
827
class CantReprocessAndShowBase(BzrNewError):
828
"""Can't reprocess and show base.
829
Reprocessing obscures relationship of conflicting lines to base."""
832
class GraphCycleError(BzrNewError):
833
"""Cycle in graph %(graph)r"""
834
def __init__(self, graph):
835
BzrNewError.__init__(self)
839
class NotConflicted(BzrNewError):
840
"""File %(filename)s is not conflicted."""
842
def __init__(self, filename):
843
BzrNewError.__init__(self)
844
self.filename = filename
847
class MustUseDecorated(Exception):
848
"""A decorating function has requested its original command be used.
850
This should never escape bzr, so does not need to be printable.
854
class NoBundleFound(BzrNewError):
855
"""No bundle was found in %(filename)s"""
856
def __init__(self, filename):
857
BzrNewError.__init__(self)
858
self.filename = filename
861
class BundleNotSupported(BzrNewError):
862
"""Unable to handle bundle version %(version)s: %(msg)s"""
863
def __init__(self, version, msg):
864
BzrNewError.__init__(self)
865
self.version = version
869
class MissingText(BzrNewError):
870
"""Branch %(base)s is missing revision %(text_revision)s of %(file_id)s"""
872
def __init__(self, branch, text_revision, file_id):
873
BzrNewError.__init__(self)
875
self.base = branch.base
876
self.text_revision = text_revision
877
self.file_id = file_id
880
class DuplicateKey(BzrNewError):
881
"""Key %(key)s is already present in map"""
884
class MalformedTransform(BzrNewError):
885
"""Tree transform is malformed %(conflicts)r"""
888
class BzrBadParameter(BzrNewError):
889
"""A bad parameter : %(param)s is not usable.
891
This exception should never be thrown, but it is a base class for all
892
parameter-to-function errors.
894
def __init__(self, param):
895
BzrNewError.__init__(self)
899
class BzrBadParameterNotUnicode(BzrBadParameter):
900
"""Parameter %(param)s is neither unicode nor utf8."""
903
class ReusingTransform(BzrNewError):
904
"""Attempt to reuse a transform that has already been applied."""
907
class CantMoveRoot(BzrNewError):
908
"""Moving the root directory is not supported at this time"""
911
class BzrBadParameterNotString(BzrBadParameter):
912
"""Parameter %(param)s is not a string or unicode string."""
915
class BzrBadParameterMissing(BzrBadParameter):
916
"""Parameter $(param)s is required but not present."""
919
class BzrBadParameterUnicode(BzrBadParameter):
920
"""Parameter %(param)s is unicode but only byte-strings are permitted."""
923
class BzrBadParameterContainsNewline(BzrBadParameter):
924
"""Parameter %(param)s contains a newline."""
927
class DependencyNotPresent(BzrNewError):
928
"""Unable to import library "%(library)s": %(error)s"""
930
def __init__(self, library, error):
931
BzrNewError.__init__(self, library=library, error=error)
934
class ParamikoNotPresent(DependencyNotPresent):
935
"""Unable to import paramiko (required for sftp support): %(error)s"""
937
def __init__(self, error):
938
DependencyNotPresent.__init__(self, 'paramiko', error)
941
class UninitializableFormat(BzrNewError):
942
"""Format %(format)s cannot be initialised by this version of bzr."""
944
def __init__(self, format):
945
BzrNewError.__init__(self)
949
class NoDiff(BzrNewError):
950
"""Diff is not installed on this machine: %(msg)s"""
952
def __init__(self, msg):
953
BzrNewError.__init__(self, msg=msg)
956
class NoDiff3(BzrNewError):
957
"""Diff3 is not installed on this machine."""
960
class ExistingLimbo(BzrNewError):
961
"""This tree contains left-over files from a failed operation.
962
Please examine %(limbo_dir)s to see if it contains any files you wish to
963
keep, and delete it when you are done.
965
def __init__(self, limbo_dir):
966
BzrNewError.__init__(self)
967
self.limbo_dir = limbo_dir
970
class ImmortalLimbo(BzrNewError):
971
"""Unable to delete transform temporary directory $(limbo_dir)s.
972
Please examine %(limbo_dir)s to see if it contains any files you wish to
973
keep, and delete it when you are done.
975
def __init__(self, limbo_dir):
976
BzrNewError.__init__(self)
977
self.limbo_dir = limbo_dir
980
class OutOfDateTree(BzrNewError):
981
"""Working tree is out of date, please run 'bzr update'."""
983
def __init__(self, tree):
984
BzrNewError.__init__(self)
988
class MergeModifiedFormatError(BzrNewError):
989
"""Error in merge modified format"""
992
class ConflictFormatError(BzrNewError):
993
"""Format error in conflict listings"""
996
class CorruptRepository(BzrNewError):
997
"""An error has been detected in the repository %(repo_path)s.
998
Please run bzr reconcile on this repository."""
1000
def __init__(self, repo):
1001
BzrNewError.__init__(self)
1002
self.repo_path = repo.bzrdir.root_transport.base
1005
class UpgradeRequired(BzrNewError):
1006
"""To use this feature you must upgrade your branch at %(path)s."""
1008
def __init__(self, path):
1009
BzrNewError.__init__(self)
1013
class LocalRequiresBoundBranch(BzrNewError):
1014
"""Cannot perform local-only commits on unbound branches."""
1017
class MissingProgressBarFinish(BzrNewError):
1018
"""A nested progress bar was not 'finished' correctly."""
1021
class InvalidProgressBarType(BzrNewError):
1022
"""Environment variable BZR_PROGRESS_BAR='%(bar_type)s is not a supported type
1023
Select one of: %(valid_types)s"""
1025
def __init__(self, bar_type, valid_types):
1026
BzrNewError.__init__(self, bar_type=bar_type, valid_types=valid_types)
1029
class UnsupportedOperation(BzrNewError):
1030
"""The method %(mname)s is not supported on objects of type %(tname)s."""
1031
def __init__(self, method, method_self):
1032
self.method = method
1033
self.mname = method.__name__
1034
self.tname = type(method_self).__name__
1037
class BinaryFile(BzrNewError):
1038
"""File is binary but should be text."""
1041
class IllegalPath(BzrNewError):
1042
"""The path %(path)s is not permitted on this platform"""
1044
def __init__(self, path):
1045
BzrNewError.__init__(self)
1049
class TestamentMismatch(BzrNewError):
1050
"""Testament did not match expected value.
1051
For revision_id {%(revision_id)s}, expected {%(expected)s}, measured
1054
def __init__(self, revision_id, expected, measured):
1055
self.revision_id = revision_id
1056
self.expected = expected
1057
self.measured = measured
1060
class NotABundle(BzrNewError):
1061
"""Not a bzr revision-bundle: %(text)r"""
1063
def __init__(self, text):
1064
BzrNewError.__init__(self)
1068
class BadBundle(BzrNewError):
1069
"""Bad bzr revision-bundle: %(text)r"""
1071
def __init__(self, text):
1072
BzrNewError.__init__(self)
1076
class MalformedHeader(BadBundle):
1077
"""Malformed bzr revision-bundle header: %(text)r"""
1079
def __init__(self, text):
1080
BzrNewError.__init__(self)
1084
class MalformedPatches(BadBundle):
1085
"""Malformed patches in bzr revision-bundle: %(text)r"""
1087
def __init__(self, text):
1088
BzrNewError.__init__(self)
1092
class MalformedFooter(BadBundle):
1093
"""Malformed footer in bzr revision-bundle: %(text)r"""
1095
def __init__(self, text):
1096
BzrNewError.__init__(self)
1099
class UnsupportedEOLMarker(BadBundle):
1100
"""End of line marker was not \\n in bzr revision-bundle"""
1103
BzrNewError.__init__(self)