85
39
# constructed to make sure it will succeed. But that says nothing about
86
40
# exceptions that are never raised.
88
# TODO: Convert all the other error classes here to BzrNewError, and eliminate
91
# TODO: The pattern (from hct) of using classes docstrings as message
92
# templates is cute but maybe not such a great idea - perhaps should have a
93
# separate static message_template.
42
# TODO: selftest assertRaises should probably also check that every error
43
# raised can be formatted as a string successfully, and without giving
96
47
class BzrError(StandardError):
49
Base class for errors raised by bzrlib.
51
:cvar internal_error: if true (or absent) this was probably caused by a
52
bzr bug and should be displayed with a traceback; if False this was
53
probably a user or environment error and they don't need the gory details.
54
(That can be overridden by -Derror on the command line.)
56
:cvar _fmt: Format string to display the error; this is expanded
57
by the instance's dict.
60
internal_error = False
62
def __init__(self, msg=None, **kwds):
63
"""Construct a new BzrError.
65
There are two alternative forms for constructing these objects.
66
Either a preformatted string may be passed, or a set of named
67
arguments can be given. The first is for generic "user" errors which
68
are not intended to be caught and so do not need a specific subclass.
69
The second case is for use with subclasses that provide a _fmt format
70
string to print the arguments.
72
Keyword arguments are taken as parameters to the error, which can
73
be inserted into the format string template. It's recommended
74
that subclasses override the __init__ method to require specific
77
:param msg: If given, this is the literal complete text for the error,
78
not subject to expansion.
80
StandardError.__init__(self)
82
# I was going to deprecate this, but it actually turns out to be
83
# quite handy - mbp 20061103.
84
self._preformatted_string = msg
86
self._preformatted_string = None
87
for key, value in kwds.items():
88
setattr(self, key, value)
100
90
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`
91
s = getattr(self, '_preformatted_string', None)
93
# contains a preformatted message; must be cast to plain str
96
fmt = self._get_format_string()
98
s = fmt % self.__dict__
99
# __str__() should always return a 'str' object
100
# never a 'unicode' object.
101
if isinstance(s, unicode):
102
return s.encode('utf8')
104
except (AttributeError, TypeError, NameError, ValueError, KeyError), e:
105
return 'Unprintable exception %s: dict=%r, fmt=%r, error=%r' \
106
% (self.__class__.__name__,
108
getattr(self, '_fmt', None),
111
def _get_format_string(self):
112
"""Return format string for this exception or None"""
113
fmt = getattr(self, '_fmt', None)
116
fmt = getattr(self, '__doc__', None)
118
symbol_versioning.warn("%s uses its docstring as a format, "
119
"it should use _fmt instead" % self.__class__.__name__,
122
return 'Unprintable exception %s: dict=%r, fmt=%r' \
123
% (self.__class__.__name__,
125
getattr(self, '_fmt', None),
118
129
class BzrNewError(BzrError):
130
"""Deprecated error base class."""
120
131
# base classes should override the docstring with their human-
121
132
# readable explanation
123
def __init__(self, **kwds):
134
def __init__(self, *args, **kwds):
135
# XXX: Use the underlying BzrError to always generate the args
136
# attribute if it doesn't exist. We can't use super here, because
137
# exceptions are old-style classes in python2.4 (but new in 2.5).
139
symbol_versioning.warn('BzrNewError was deprecated in bzr 0.13; '
140
'please convert %s to use BzrError instead'
141
% self.__class__.__name__,
144
BzrError.__init__(self, *args)
124
145
for key, value in kwds.items():
125
146
setattr(self, key, value)
335
525
class InaccessibleParent(PathError):
336
"""Parent not accessible given base %(base)s and relative path %(path)s"""
527
_fmt = ("Parent not accessible given base %(base)s and"
528
" relative path %(path)s")
338
530
def __init__(self, path, base):
339
531
PathError.__init__(self, path)
343
class NoRepositoryPresent(BzrNewError):
344
"""No repository present: %(path)r"""
535
class NoRepositoryPresent(BzrError):
537
_fmt = "No repository present: %(path)r"
345
538
def __init__(self, bzrdir):
346
BzrNewError.__init__(self)
539
BzrError.__init__(self)
347
540
self.path = bzrdir.transport.clone('..').base
350
class FileInWrongBranch(BzrNewError):
351
"""File %(path)s in not in branch %(branch_base)s."""
543
class FileInWrongBranch(BzrError):
545
_fmt = "File %(path)s in not in branch %(branch_base)s."
353
547
def __init__(self, branch, path):
354
BzrNewError.__init__(self)
548
BzrError.__init__(self)
355
549
self.branch = branch
356
550
self.branch_base = branch.base
360
class UnsupportedFormatError(BzrNewError):
361
"""Unsupported branch format: %(format)s"""
364
class UnknownFormatError(BzrNewError):
365
"""Unknown branch format: %(format)r"""
368
class IncompatibleFormat(BzrNewError):
369
"""Format %(format)s is not compatible with .bzr version %(bzrdir)s."""
554
class UnsupportedFormatError(BzrError):
556
_fmt = "Unsupported branch format: %(format)s\nPlease run 'bzr upgrade'"
559
class UnknownFormatError(BzrError):
561
_fmt = "Unknown branch format: %(format)r"
564
class IncompatibleFormat(BzrError):
566
_fmt = "Format %(format)s is not compatible with .bzr version %(bzrdir)s."
371
568
def __init__(self, format, bzrdir_format):
372
BzrNewError.__init__(self)
569
BzrError.__init__(self)
373
570
self.format = format
374
571
self.bzrdir = bzrdir_format
377
class NotVersionedError(BzrNewError):
378
"""%(path)s is not versioned"""
379
def __init__(self, path):
380
BzrNewError.__init__(self)
384
class PathsNotVersionedError(BzrNewError):
385
# used when reporting several paths are not versioned
386
"""Path(s) are not versioned: %(paths_as_string)s"""
574
class IncompatibleRepositories(BzrError):
576
_fmt = "Repository %(target)s is not compatible with repository"\
579
def __init__(self, source, target):
580
BzrError.__init__(self, target=target, source=source)
583
class IncompatibleRevision(BzrError):
585
_fmt = "Revision is not compatible with %(repo_format)s"
587
def __init__(self, repo_format):
588
BzrError.__init__(self)
589
self.repo_format = repo_format
592
class AlreadyVersionedError(BzrError):
593
"""Used when a path is expected not to be versioned, but it is."""
595
_fmt = "%(context_info)s%(path)s is already versioned"
597
def __init__(self, path, context_info=None):
598
"""Construct a new AlreadyVersionedError.
600
:param path: This is the path which is versioned,
601
which should be in a user friendly form.
602
:param context_info: If given, this is information about the context,
603
which could explain why this is expected to not be versioned.
605
BzrError.__init__(self)
607
if context_info is None:
608
self.context_info = ''
610
self.context_info = context_info + ". "
613
class NotVersionedError(BzrError):
614
"""Used when a path is expected to be versioned, but it is not."""
616
_fmt = "%(context_info)s%(path)s is not versioned"
618
def __init__(self, path, context_info=None):
619
"""Construct a new NotVersionedError.
621
:param path: This is the path which is not versioned,
622
which should be in a user friendly form.
623
:param context_info: If given, this is information about the context,
624
which could explain why this is expected to be versioned.
626
BzrError.__init__(self)
628
if context_info is None:
629
self.context_info = ''
631
self.context_info = context_info + ". "
634
class PathsNotVersionedError(BzrError):
635
"""Used when reporting several paths which are not versioned"""
637
_fmt = "Path(s) are not versioned: %(paths_as_string)s"
388
639
def __init__(self, paths):
389
640
from bzrlib.osutils import quotefn
390
BzrNewError.__init__(self)
641
BzrError.__init__(self)
391
642
self.paths = paths
392
643
self.paths_as_string = ' '.join([quotefn(p) for p in paths])
395
class PathsDoNotExist(BzrNewError):
396
"""Path(s) do not exist: %(paths_as_string)s"""
646
class PathsDoNotExist(BzrError):
648
_fmt = "Path(s) do not exist: %(paths_as_string)s%(extra)s"
398
650
# used when reporting that paths are neither versioned nor in the working
401
def __init__(self, paths):
653
def __init__(self, paths, extra=None):
402
654
# circular import
403
655
from bzrlib.osutils import quotefn
404
BzrNewError.__init__(self)
656
BzrError.__init__(self)
405
657
self.paths = paths
406
658
self.paths_as_string = ' '.join([quotefn(p) for p in paths])
409
class BadFileKindError(BzrNewError):
410
"""Cannot operate on %(filename)s of unsupported kind %(kind)s"""
413
class ForbiddenControlFileError(BzrNewError):
414
"""Cannot operate on %(filename)s because it is a control file"""
417
class LockError(BzrNewError):
418
"""Lock error: %(message)s"""
660
self.extra = ': ' + str(extra)
665
class BadFileKindError(BzrError):
667
_fmt = 'Cannot operate on "%(filename)s" of unsupported kind "%(kind)s"'
669
def __init__(self, filename, kind):
670
BzrError.__init__(self, filename=filename, kind=kind)
673
class ForbiddenControlFileError(BzrError):
675
_fmt = "Cannot operate on %(filename)s because it is a control file"
678
class LockError(BzrError):
680
_fmt = "Lock error: %(msg)s"
682
internal_error = True
419
684
# All exceptions from the lock/unlock functions should be from
420
685
# this exception class. They will be translated as necessary. The
421
686
# original exception is available as e.original_error
423
688
# New code should prefer to raise specific subclasses
424
689
def __init__(self, message):
425
self.message = message
690
# Python 2.5 uses a slot for StandardError.message,
691
# so use a different variable name
692
# so it is exposed in self.__dict__
696
class LockActive(LockError):
698
_fmt = "The lock for '%(lock_description)s' is in use and cannot be broken."
700
internal_error = False
702
def __init__(self, lock_description):
703
self.lock_description = lock_description
428
706
class CommitNotPossible(LockError):
429
"""A commit was attempted but we do not have a write lock open."""
708
_fmt = "A commit was attempted but we do not have a write lock open."
430
710
def __init__(self):
434
714
class AlreadyCommitted(LockError):
435
"""A rollback was requested, but is not able to be accomplished."""
716
_fmt = "A rollback was requested, but is not able to be accomplished."
436
718
def __init__(self):
440
722
class ReadOnlyError(LockError):
441
"""A write attempt was made in a read only transaction on %(obj)s"""
724
_fmt = "A write attempt was made in a read only transaction on %(obj)s"
726
# TODO: There should also be an error indicating that you need a write
727
# lock and don't have any lock at all... mbp 20070226
442
729
def __init__(self, obj):
446
class OutSideTransaction(BzrNewError):
447
"""A transaction related operation was attempted after the transaction finished."""
733
class ReadOnlyLockError(LockError):
735
_fmt = "Cannot acquire write lock on %(fname)s. %(msg)s"
737
def __init__(self, fname, msg):
738
LockError.__init__(self, '')
743
class OutSideTransaction(BzrError):
745
_fmt = ("A transaction related operation was attempted after"
746
" the transaction finished.")
450
749
class ObjectNotLocked(LockError):
451
"""%(obj)r is not locked"""
453
is_user_error = False
751
_fmt = "%(obj)r is not locked"
455
753
# this can indicate that any particular object is not locked; see also
456
754
# LockNotHeld which means that a particular *lock* object is not held by
581
988
class NoCommonRoot(BzrError):
990
_fmt = ("Revisions are not derived from the same root: "
991
"%(revision_a)s %(revision_b)s.")
582
993
def __init__(self, revision_a, revision_b):
583
msg = "Revisions are not derived from the same root: %s %s." \
584
% (revision_a, revision_b)
585
BzrError.__init__(self, msg)
994
BzrError.__init__(self, revision_a=revision_a, revision_b=revision_b)
589
997
class NotAncestor(BzrError):
999
_fmt = "Revision %(rev_id)s is not an ancestor of %(not_ancestor_id)s"
590
1001
def __init__(self, rev_id, not_ancestor_id):
591
msg = "Revision %s is not an ancestor of %s" % (not_ancestor_id,
593
BzrError.__init__(self, msg)
595
self.not_ancestor_id = not_ancestor_id
1002
BzrError.__init__(self, rev_id=rev_id,
1003
not_ancestor_id=not_ancestor_id)
598
1006
class InstallFailed(BzrError):
599
1008
def __init__(self, revisions):
600
msg = "Could not install revisions:\n%s" % " ,".join(revisions)
1009
revision_str = ", ".join(str(r) for r in revisions)
1010
msg = "Could not install revisions:\n%s" % revision_str
601
1011
BzrError.__init__(self, msg)
602
1012
self.revisions = revisions
605
1015
class AmbiguousBase(BzrError):
606
1017
def __init__(self, bases):
607
1018
warn("BzrError AmbiguousBase has been deprecated as of bzrlib 0.8.",
608
1019
DeprecationWarning)
609
msg = "The correct base is unclear, because %s are all equally close" %\
1020
msg = ("The correct base is unclear, because %s are all equally close"
611
1022
BzrError.__init__(self, msg)
612
1023
self.bases = bases
615
class NoCommits(BzrNewError):
616
"""Branch %(branch)s has no commits."""
1026
class NoCommits(BzrError):
1028
_fmt = "Branch %(branch)s has no commits."
618
1030
def __init__(self, branch):
619
BzrNewError.__init__(self, branch=branch)
1031
BzrError.__init__(self, branch=branch)
622
1034
class UnlistableStore(BzrError):
623
1036
def __init__(self, store):
624
1037
BzrError.__init__(self, "Store %s is not listable" % store)
628
1041
class UnlistableBranch(BzrError):
629
1043
def __init__(self, br):
630
1044
BzrError.__init__(self, "Stores for branch %s are not listable" % br)
633
class BoundBranchOutOfDate(BzrNewError):
634
"""Bound branch %(branch)s is out of date with master branch %(master)s."""
1047
class BoundBranchOutOfDate(BzrError):
1049
_fmt = ("Bound branch %(branch)s is out of date"
1050
" with master branch %(master)s.")
635
1052
def __init__(self, branch, master):
636
BzrNewError.__init__(self)
1053
BzrError.__init__(self)
637
1054
self.branch = branch
638
1055
self.master = master
641
class CommitToDoubleBoundBranch(BzrNewError):
642
"""Cannot commit to branch %(branch)s. It is bound to %(master)s, which is bound to %(remote)s."""
1058
class CommitToDoubleBoundBranch(BzrError):
1060
_fmt = ("Cannot commit to branch %(branch)s."
1061
" It is bound to %(master)s, which is bound to %(remote)s.")
643
1063
def __init__(self, branch, master, remote):
644
BzrNewError.__init__(self)
1064
BzrError.__init__(self)
645
1065
self.branch = branch
646
1066
self.master = master
647
1067
self.remote = remote
650
class OverwriteBoundBranch(BzrNewError):
651
"""Cannot pull --overwrite to a branch which is bound %(branch)s"""
1070
class OverwriteBoundBranch(BzrError):
1072
_fmt = "Cannot pull --overwrite to a branch which is bound %(branch)s"
652
1074
def __init__(self, branch):
653
BzrNewError.__init__(self)
1075
BzrError.__init__(self)
654
1076
self.branch = branch
657
class BoundBranchConnectionFailure(BzrNewError):
658
"""Unable to connect to target of bound branch %(branch)s => %(target)s: %(error)s"""
1079
class BoundBranchConnectionFailure(BzrError):
1081
_fmt = ("Unable to connect to target of bound branch %(branch)s"
1082
" => %(target)s: %(error)s")
659
1084
def __init__(self, branch, target, error):
660
BzrNewError.__init__(self)
1085
BzrError.__init__(self)
661
1086
self.branch = branch
662
1087
self.target = target
663
1088
self.error = error
666
class WeaveError(BzrNewError):
667
"""Error in processing weave: %(message)s"""
1091
class WeaveError(BzrError):
1093
_fmt = "Error in processing weave: %(message)s"
669
1095
def __init__(self, message=None):
670
BzrNewError.__init__(self)
1096
BzrError.__init__(self)
671
1097
self.message = message
674
1100
class WeaveRevisionAlreadyPresent(WeaveError):
675
"""Revision {%(revision_id)s} already present in %(weave)s"""
1102
_fmt = "Revision {%(revision_id)s} already present in %(weave)s"
676
1104
def __init__(self, revision_id, weave):
678
1106
WeaveError.__init__(self)
851
1414
BzrError.__init__(self, message)
1417
class NoEmailInUsername(BzrError):
1419
_fmt = "%(username)r does not seem to contain a reasonable email address"
1421
def __init__(self, username):
1422
BzrError.__init__(self)
1423
self.username = username
854
1426
class SigningFailed(BzrError):
1428
_fmt = "Failed to gpg sign data with command %(command_line)r"
855
1430
def __init__(self, command_line):
856
BzrError.__init__(self, "Failed to gpg sign data with command '%s'"
1431
BzrError.__init__(self, command_line=command_line)
860
1434
class WorkingTreeNotRevision(BzrError):
1436
_fmt = ("The working tree for %(basedir)s has changed since"
1437
" the last commit, but weave merge requires that it be"
861
1440
def __init__(self, tree):
862
BzrError.__init__(self, "The working tree for %s has changed since"
863
" last commit, but weave merge requires that it be"
864
" unchanged." % tree.basedir)
867
class CantReprocessAndShowBase(BzrNewError):
868
"""Can't reprocess and show base.
869
Reprocessing obscures relationship of conflicting lines to base."""
872
class GraphCycleError(BzrNewError):
873
"""Cycle in graph %(graph)r"""
1441
BzrError.__init__(self, basedir=tree.basedir)
1444
class CantReprocessAndShowBase(BzrError):
1446
_fmt = ("Can't reprocess and show base, because reprocessing obscures "
1447
"the relationship of conflicting lines to the base")
1450
class GraphCycleError(BzrError):
1452
_fmt = "Cycle in graph %(graph)r"
874
1454
def __init__(self, graph):
875
BzrNewError.__init__(self)
1455
BzrError.__init__(self)
876
1456
self.graph = graph
879
class NotConflicted(BzrNewError):
880
"""File %(filename)s is not conflicted."""
1459
class WritingCompleted(BzrError):
1461
_fmt = ("The MediumRequest '%(request)s' has already had finish_writing "
1462
"called upon it - accept bytes may not be called anymore.")
1464
internal_error = True
1466
def __init__(self, request):
1467
self.request = request
1470
class WritingNotComplete(BzrError):
1472
_fmt = ("The MediumRequest '%(request)s' has not has finish_writing "
1473
"called upon it - until the write phase is complete no "
1474
"data may be read.")
1476
internal_error = True
1478
def __init__(self, request):
1479
self.request = request
1482
class NotConflicted(BzrError):
1484
_fmt = "File %(filename)s is not conflicted."
882
1486
def __init__(self, filename):
883
BzrNewError.__init__(self)
1487
BzrError.__init__(self)
884
1488
self.filename = filename
1491
class MediumNotConnected(BzrError):
1493
_fmt = """The medium '%(medium)s' is not connected."""
1495
internal_error = True
1497
def __init__(self, medium):
1498
self.medium = medium
887
1501
class MustUseDecorated(Exception):
888
"""A decorating function has requested its original command be used.
890
This should never escape bzr, so does not need to be printable.
894
class NoBundleFound(BzrNewError):
895
"""No bundle was found in %(filename)s"""
1503
_fmt = "A decorating function has requested its original command be used."
1506
class NoBundleFound(BzrError):
1508
_fmt = "No bundle was found in %(filename)s"
896
1510
def __init__(self, filename):
897
BzrNewError.__init__(self)
1511
BzrError.__init__(self)
898
1512
self.filename = filename
901
class BundleNotSupported(BzrNewError):
902
"""Unable to handle bundle version %(version)s: %(msg)s"""
1515
class BundleNotSupported(BzrError):
1517
_fmt = "Unable to handle bundle version %(version)s: %(msg)s"
903
1519
def __init__(self, version, msg):
904
BzrNewError.__init__(self)
1520
BzrError.__init__(self)
905
1521
self.version = version
909
class MissingText(BzrNewError):
910
"""Branch %(base)s is missing revision %(text_revision)s of %(file_id)s"""
1525
class MissingText(BzrError):
1527
_fmt = ("Branch %(base)s is missing revision"
1528
" %(text_revision)s of %(file_id)s")
912
1530
def __init__(self, branch, text_revision, file_id):
913
BzrNewError.__init__(self)
1531
BzrError.__init__(self)
914
1532
self.branch = branch
915
1533
self.base = branch.base
916
1534
self.text_revision = text_revision
917
1535
self.file_id = file_id
920
class DuplicateKey(BzrNewError):
921
"""Key %(key)s is already present in map"""
924
class MalformedTransform(BzrNewError):
925
"""Tree transform is malformed %(conflicts)r"""
928
class BzrBadParameter(BzrNewError):
929
"""A bad parameter : %(param)s is not usable.
931
This exception should never be thrown, but it is a base class for all
932
parameter-to-function errors.
1538
class DuplicateFileId(BzrError):
1540
_fmt = "File id {%(file_id)s} already exists in inventory as %(entry)s"
1542
def __init__(self, file_id, entry):
1543
BzrError.__init__(self)
1544
self.file_id = file_id
1548
class DuplicateKey(BzrError):
1550
_fmt = "Key %(key)s is already present in map"
1553
class DuplicateHelpPrefix(BzrError):
1555
_fmt = "The prefix %(prefix)s is in the help search path twice."
1557
def __init__(self, prefix):
1558
self.prefix = prefix
1561
class MalformedTransform(BzrError):
1563
_fmt = "Tree transform is malformed %(conflicts)r"
1566
class NoFinalPath(BzrError):
1568
_fmt = ("No final name for trans_id %(trans_id)r\n"
1569
"file-id: %(file_id)r\n"
1570
"root trans-id: %(root_trans_id)r\n")
1572
def __init__(self, trans_id, transform):
1573
self.trans_id = trans_id
1574
self.file_id = transform.final_file_id(trans_id)
1575
self.root_trans_id = transform.root
1578
class BzrBadParameter(BzrError):
1580
_fmt = "Bad parameter: %(param)r"
1582
# This exception should never be thrown, but it is a base class for all
1583
# parameter-to-function errors.
934
1585
def __init__(self, param):
935
BzrNewError.__init__(self)
1586
BzrError.__init__(self)
936
1587
self.param = param
939
1590
class BzrBadParameterNotUnicode(BzrBadParameter):
940
"""Parameter %(param)s is neither unicode nor utf8."""
943
class ReusingTransform(BzrNewError):
944
"""Attempt to reuse a transform that has already been applied."""
947
class CantMoveRoot(BzrNewError):
948
"""Moving the root directory is not supported at this time"""
1592
_fmt = "Parameter %(param)s is neither unicode nor utf8."
1595
class ReusingTransform(BzrError):
1597
_fmt = "Attempt to reuse a transform that has already been applied."
1600
class CantMoveRoot(BzrError):
1602
_fmt = "Moving the root directory is not supported at this time"
1605
class BzrMoveFailedError(BzrError):
1607
_fmt = "Could not move %(from_path)s%(operator)s %(to_path)s%(extra)s"
1609
def __init__(self, from_path='', to_path='', extra=None):
1610
BzrError.__init__(self)
1612
self.extra = ': ' + str(extra)
1616
has_from = len(from_path) > 0
1617
has_to = len(to_path) > 0
1619
self.from_path = osutils.splitpath(from_path)[-1]
1624
self.to_path = osutils.splitpath(to_path)[-1]
1629
if has_from and has_to:
1630
self.operator = " =>"
1632
self.from_path = "from " + from_path
1634
self.operator = "to"
1636
self.operator = "file"
1639
class BzrRenameFailedError(BzrMoveFailedError):
1641
_fmt = "Could not rename %(from_path)s%(operator)s %(to_path)s%(extra)s"
1643
def __init__(self, from_path, to_path, extra=None):
1644
BzrMoveFailedError.__init__(self, from_path, to_path, extra)
1646
class BzrRemoveChangedFilesError(BzrError):
1647
"""Used when user is trying to remove changed files."""
1649
_fmt = ("Can't remove changed or unknown files:\n%(changes_as_text)s"
1650
"Use --keep to not delete them, or --force to delete them regardless.")
1652
def __init__(self, tree_delta):
1653
BzrError.__init__(self)
1654
self.changes_as_text = tree_delta.get_changes_as_text()
1655
#self.paths_as_string = '\n'.join(changed_files)
1656
#self.paths_as_string = '\n'.join([quotefn(p) for p in changed_files])
951
1659
class BzrBadParameterNotString(BzrBadParameter):
952
"""Parameter %(param)s is not a string or unicode string."""
1661
_fmt = "Parameter %(param)s is not a string or unicode string."
955
1664
class BzrBadParameterMissing(BzrBadParameter):
956
"""Parameter $(param)s is required but not present."""
1666
_fmt = "Parameter $(param)s is required but not present."
959
1669
class BzrBadParameterUnicode(BzrBadParameter):
960
"""Parameter %(param)s is unicode but only byte-strings are permitted."""
1671
_fmt = ("Parameter %(param)s is unicode but"
1672
" only byte-strings are permitted.")
963
1675
class BzrBadParameterContainsNewline(BzrBadParameter):
964
"""Parameter %(param)s contains a newline."""
967
class DependencyNotPresent(BzrNewError):
968
"""Unable to import library "%(library)s": %(error)s"""
1677
_fmt = "Parameter %(param)s contains a newline."
1680
class DependencyNotPresent(BzrError):
1682
_fmt = 'Unable to import library "%(library)s": %(error)s'
970
1684
def __init__(self, library, error):
971
BzrNewError.__init__(self, library=library, error=error)
1685
BzrError.__init__(self, library=library, error=error)
974
1688
class ParamikoNotPresent(DependencyNotPresent):
975
"""Unable to import paramiko (required for sftp support): %(error)s"""
1690
_fmt = "Unable to import paramiko (required for sftp support): %(error)s"
977
1692
def __init__(self, error):
978
1693
DependencyNotPresent.__init__(self, 'paramiko', error)
981
class PointlessMerge(BzrNewError):
982
"""Nothing to merge."""
985
class UninitializableFormat(BzrNewError):
986
"""Format %(format)s cannot be initialised by this version of bzr."""
1696
class PointlessMerge(BzrError):
1698
_fmt = "Nothing to merge."
1701
class UninitializableFormat(BzrError):
1703
_fmt = "Format %(format)s cannot be initialised by this version of bzr."
988
1705
def __init__(self, format):
989
BzrNewError.__init__(self)
1706
BzrError.__init__(self)
990
1707
self.format = format
993
class BadConversionTarget(BzrNewError):
994
"""Cannot convert to format %(format)s. %(problem)s"""
1710
class BadConversionTarget(BzrError):
1712
_fmt = "Cannot convert to format %(format)s. %(problem)s"
996
1714
def __init__(self, problem, format):
997
BzrNewError.__init__(self)
1715
BzrError.__init__(self)
998
1716
self.problem = problem
999
1717
self.format = format
1002
class NoDiff(BzrNewError):
1003
"""Diff is not installed on this machine: %(msg)s"""
1720
class NoDiff(BzrError):
1722
_fmt = "Diff is not installed on this machine: %(msg)s"
1005
1724
def __init__(self, msg):
1006
BzrNewError.__init__(self, msg=msg)
1009
class NoDiff3(BzrNewError):
1010
"""Diff3 is not installed on this machine."""
1013
class ExistingLimbo(BzrNewError):
1014
"""This tree contains left-over files from a failed operation.
1015
Please examine %(limbo_dir)s to see if it contains any files you wish to
1016
keep, and delete it when you are done.
1018
def __init__(self, limbo_dir):
1019
BzrNewError.__init__(self)
1020
self.limbo_dir = limbo_dir
1023
class ImmortalLimbo(BzrNewError):
1024
"""Unable to delete transform temporary directory $(limbo_dir)s.
1025
Please examine %(limbo_dir)s to see if it contains any files you wish to
1026
keep, and delete it when you are done.
1028
def __init__(self, limbo_dir):
1029
BzrNewError.__init__(self)
1030
self.limbo_dir = limbo_dir
1033
class OutOfDateTree(BzrNewError):
1034
"""Working tree is out of date, please run 'bzr update'."""
1725
BzrError.__init__(self, msg=msg)
1728
class NoDiff3(BzrError):
1730
_fmt = "Diff3 is not installed on this machine."
1733
class ExistingLimbo(BzrError):
1735
_fmt = """This tree contains left-over files from a failed operation.
1736
Please examine %(limbo_dir)s to see if it contains any files you wish to
1737
keep, and delete it when you are done."""
1739
def __init__(self, limbo_dir):
1740
BzrError.__init__(self)
1741
self.limbo_dir = limbo_dir
1744
class ImmortalLimbo(BzrError):
1746
_fmt = """Unable to delete transform temporary directory $(limbo_dir)s.
1747
Please examine %(limbo_dir)s to see if it contains any files you wish to
1748
keep, and delete it when you are done."""
1750
def __init__(self, limbo_dir):
1751
BzrError.__init__(self)
1752
self.limbo_dir = limbo_dir
1755
class OutOfDateTree(BzrError):
1757
_fmt = "Working tree is out of date, please run 'bzr update'."
1036
1759
def __init__(self, tree):
1037
BzrNewError.__init__(self)
1760
BzrError.__init__(self)
1038
1761
self.tree = tree
1041
class MergeModifiedFormatError(BzrNewError):
1042
"""Error in merge modified format"""
1045
class ConflictFormatError(BzrNewError):
1046
"""Format error in conflict listings"""
1049
class CorruptRepository(BzrNewError):
1050
"""An error has been detected in the repository %(repo_path)s.
1051
Please run bzr reconcile on this repository."""
1764
class PublicBranchOutOfDate(BzrError):
1766
_fmt = 'Public branch "%(public_location)s" lacks revision '\
1769
def __init__(self, public_location, revstring):
1770
import bzrlib.urlutils as urlutils
1771
public_location = urlutils.unescape_for_display(public_location,
1773
BzrError.__init__(self, public_location=public_location,
1774
revstring=revstring)
1777
class MergeModifiedFormatError(BzrError):
1779
_fmt = "Error in merge modified format"
1782
class ConflictFormatError(BzrError):
1784
_fmt = "Format error in conflict listings"
1787
class CorruptRepository(BzrError):
1789
_fmt = ("An error has been detected in the repository %(repo_path)s.\n"
1790
"Please run bzr reconcile on this repository.")
1053
1792
def __init__(self, repo):
1054
BzrNewError.__init__(self)
1793
BzrError.__init__(self)
1055
1794
self.repo_path = repo.bzrdir.root_transport.base
1058
class UpgradeRequired(BzrNewError):
1059
"""To use this feature you must upgrade your branch at %(path)s."""
1797
class UpgradeRequired(BzrError):
1799
_fmt = "To use this feature you must upgrade your branch at %(path)s."
1061
1801
def __init__(self, path):
1062
BzrNewError.__init__(self)
1802
BzrError.__init__(self)
1063
1803
self.path = path
1066
class LocalRequiresBoundBranch(BzrNewError):
1067
"""Cannot perform local-only commits on unbound branches."""
1070
class MissingProgressBarFinish(BzrNewError):
1071
"""A nested progress bar was not 'finished' correctly."""
1074
class InvalidProgressBarType(BzrNewError):
1075
"""Environment variable BZR_PROGRESS_BAR='%(bar_type)s is not a supported type
1076
Select one of: %(valid_types)s"""
1806
class LocalRequiresBoundBranch(BzrError):
1808
_fmt = "Cannot perform local-only commits on unbound branches."
1811
class MissingProgressBarFinish(BzrError):
1813
_fmt = "A nested progress bar was not 'finished' correctly."
1816
class InvalidProgressBarType(BzrError):
1818
_fmt = ("Environment variable BZR_PROGRESS_BAR='%(bar_type)s"
1819
" is not a supported type Select one of: %(valid_types)s")
1078
1821
def __init__(self, bar_type, valid_types):
1079
BzrNewError.__init__(self, bar_type=bar_type, valid_types=valid_types)
1082
class UnsupportedOperation(BzrNewError):
1083
"""The method %(mname)s is not supported on objects of type %(tname)s."""
1822
BzrError.__init__(self, bar_type=bar_type, valid_types=valid_types)
1825
class UnsupportedOperation(BzrError):
1827
_fmt = ("The method %(mname)s is not supported on"
1828
" objects of type %(tname)s.")
1084
1830
def __init__(self, method, method_self):
1085
1831
self.method = method
1086
1832
self.mname = method.__name__
1087
1833
self.tname = type(method_self).__name__
1090
class BinaryFile(BzrNewError):
1091
"""File is binary but should be text."""
1094
class IllegalPath(BzrNewError):
1095
"""The path %(path)s is not permitted on this platform"""
1836
class CannotSetRevisionId(UnsupportedOperation):
1837
"""Raised when a commit is attempting to set a revision id but cant."""
1840
class NonAsciiRevisionId(UnsupportedOperation):
1841
"""Raised when a commit is attempting to set a non-ascii revision id
1846
class BinaryFile(BzrError):
1848
_fmt = "File is binary but should be text."
1851
class IllegalPath(BzrError):
1853
_fmt = "The path %(path)s is not permitted on this platform"
1097
1855
def __init__(self, path):
1098
BzrNewError.__init__(self)
1856
BzrError.__init__(self)
1099
1857
self.path = path
1102
class TestamentMismatch(BzrNewError):
1103
"""Testament did not match expected value.
1104
For revision_id {%(revision_id)s}, expected {%(expected)s}, measured
1860
class TestamentMismatch(BzrError):
1862
_fmt = """Testament did not match expected value.
1863
For revision_id {%(revision_id)s}, expected {%(expected)s}, measured
1107
1866
def __init__(self, revision_id, expected, measured):
1108
1867
self.revision_id = revision_id
1109
1868
self.expected = expected
1110
1869
self.measured = measured
1113
class NotABundle(BzrNewError):
1114
"""Not a bzr revision-bundle: %(text)r"""
1872
class NotABundle(BzrError):
1874
_fmt = "Not a bzr revision-bundle: %(text)r"
1116
1876
def __init__(self, text):
1117
BzrNewError.__init__(self)
1877
BzrError.__init__(self)
1118
1878
self.text = text
1121
class BadBundle(BzrNewError):
1122
"""Bad bzr revision-bundle: %(text)r"""
1881
class BadBundle(BzrError):
1883
_fmt = "Bad bzr revision-bundle: %(text)r"
1124
1885
def __init__(self, text):
1125
BzrNewError.__init__(self)
1886
BzrError.__init__(self)
1126
1887
self.text = text
1129
1890
class MalformedHeader(BadBundle):
1130
"""Malformed bzr revision-bundle header: %(text)r"""
1132
def __init__(self, text):
1133
BzrNewError.__init__(self)
1892
_fmt = "Malformed bzr revision-bundle header: %(text)r"
1137
1895
class MalformedPatches(BadBundle):
1138
"""Malformed patches in bzr revision-bundle: %(text)r"""
1140
def __init__(self, text):
1141
BzrNewError.__init__(self)
1897
_fmt = "Malformed patches in bzr revision-bundle: %(text)r"
1145
1900
class MalformedFooter(BadBundle):
1146
"""Malformed footer in bzr revision-bundle: %(text)r"""
1148
def __init__(self, text):
1149
BzrNewError.__init__(self)
1902
_fmt = "Malformed footer in bzr revision-bundle: %(text)r"
1153
1905
class UnsupportedEOLMarker(BadBundle):
1154
"""End of line marker was not \\n in bzr revision-bundle"""
1907
_fmt = "End of line marker was not \\n in bzr revision-bundle"
1156
1909
def __init__(self):
1157
BzrNewError.__init__(self)
1160
class BadInventoryFormat(BzrNewError):
1161
"""Root class for inventory serialization errors"""
1910
# XXX: BadBundle's constructor assumes there's explanatory text,
1911
# but for this there is not
1912
BzrError.__init__(self)
1915
class IncompatibleBundleFormat(BzrError):
1917
_fmt = "Bundle format %(bundle_format)s is incompatible with %(other)s"
1919
def __init__(self, bundle_format, other):
1920
BzrError.__init__(self)
1921
self.bundle_format = bundle_format
1925
class BadInventoryFormat(BzrError):
1927
_fmt = "Root class for inventory serialization errors"
1164
1930
class UnexpectedInventoryFormat(BadInventoryFormat):
1165
"""The inventory was not in the expected format:\n %(msg)s"""
1932
_fmt = "The inventory was not in the expected format:\n %(msg)s"
1167
1934
def __init__(self, msg):
1168
1935
BadInventoryFormat.__init__(self, msg=msg)
1171
class UnknownSSH(BzrNewError):
1172
"""Unrecognised value for BZR_SSH environment variable: %(vendor)s"""
1938
class RootNotRich(BzrError):
1940
_fmt = """This operation requires rich root data storage"""
1943
class NoSmartMedium(BzrError):
1945
_fmt = "The transport '%(transport)s' cannot tunnel the smart protocol."
1947
internal_error = True
1949
def __init__(self, transport):
1950
self.transport = transport
1953
class NoSmartServer(NotBranchError):
1955
_fmt = "No smart server available at %(url)s"
1957
def __init__(self, url):
1961
class UnknownSSH(BzrError):
1963
_fmt = "Unrecognised value for BZR_SSH environment variable: %(vendor)s"
1174
1965
def __init__(self, vendor):
1175
BzrNewError.__init__(self)
1966
BzrError.__init__(self)
1176
1967
self.vendor = vendor
1179
class GhostRevisionUnusableHere(BzrNewError):
1180
"""Ghost revision {%(revision_id)s} cannot be used here."""
1970
class SSHVendorNotFound(BzrError):
1972
_fmt = ("Don't know how to handle SSH connections."
1973
" Please set BZR_SSH environment variable.")
1976
class GhostRevisionUnusableHere(BzrError):
1978
_fmt = "Ghost revision {%(revision_id)s} cannot be used here."
1182
1980
def __init__(self, revision_id):
1183
BzrNewError.__init__(self)
1981
BzrError.__init__(self)
1184
1982
self.revision_id = revision_id
1985
class IllegalUseOfScopeReplacer(BzrError):
1987
_fmt = ("ScopeReplacer object %(name)r was used incorrectly:"
1988
" %(msg)s%(extra)s")
1990
internal_error = True
1992
def __init__(self, name, msg, extra=None):
1993
BzrError.__init__(self)
1997
self.extra = ': ' + str(extra)
2002
class InvalidImportLine(BzrError):
2004
_fmt = "Not a valid import statement: %(msg)\n%(text)s"
2006
internal_error = True
2008
def __init__(self, text, msg):
2009
BzrError.__init__(self)
2014
class ImportNameCollision(BzrError):
2016
_fmt = ("Tried to import an object to the same name as"
2017
" an existing object. %(name)s")
2019
internal_error = True
2021
def __init__(self, name):
2022
BzrError.__init__(self)
2026
class NotAMergeDirective(BzrError):
2027
"""File starting with %(firstline)r is not a merge directive"""
2028
def __init__(self, firstline):
2029
BzrError.__init__(self, firstline=firstline)
2032
class NoMergeSource(BzrError):
2033
"""Raise if no merge source was specified for a merge directive"""
2035
_fmt = "A merge directive must provide either a bundle or a public"\
2039
class PatchMissing(BzrError):
2040
"""Raise a patch type was specified but no patch supplied"""
2042
_fmt = "patch_type was %(patch_type)s, but no patch was supplied."
2044
def __init__(self, patch_type):
2045
BzrError.__init__(self)
2046
self.patch_type = patch_type
2049
class UnsupportedInventoryKind(BzrError):
2051
_fmt = """Unsupported entry kind %(kind)s"""
2053
def __init__(self, kind):
2057
class BadSubsumeSource(BzrError):
2059
_fmt = """Can't subsume %(other_tree)s into %(tree)s. %(reason)s"""
2061
def __init__(self, tree, other_tree, reason):
2063
self.other_tree = other_tree
2064
self.reason = reason
2067
class SubsumeTargetNeedsUpgrade(BzrError):
2069
_fmt = """Subsume target %(other_tree)s needs to be upgraded."""
2071
def __init__(self, other_tree):
2072
self.other_tree = other_tree
2075
class BadReferenceTarget(BzrError):
2077
_fmt = "Can't add reference to %(other_tree)s into %(tree)s. %(reason)s"
2079
internal_error = True
2081
def __init__(self, tree, other_tree, reason):
2083
self.other_tree = other_tree
2084
self.reason = reason
2087
class NoSuchTag(BzrError):
2089
_fmt = "No such tag: %(tag_name)s"
2091
def __init__(self, tag_name):
2092
self.tag_name = tag_name
2095
class TagsNotSupported(BzrError):
2097
_fmt = ("Tags not supported by %(branch)s;"
2098
" you may be able to use bzr upgrade --dirstate-tags.")
2100
def __init__(self, branch):
2101
self.branch = branch
2104
class TagAlreadyExists(BzrError):
2106
_fmt = "Tag %(tag_name)s already exists."
2108
def __init__(self, tag_name):
2109
self.tag_name = tag_name
2112
class MalformedBugIdentifier(BzrError):
2114
_fmt = "Did not understand bug identifier %(bug_id)s: %(reason)s"
2116
def __init__(self, bug_id, reason):
2117
self.bug_id = bug_id
2118
self.reason = reason
2121
class UnknownBugTrackerAbbreviation(BzrError):
2123
_fmt = ("Cannot find registered bug tracker called %(abbreviation)s "
2126
def __init__(self, abbreviation, branch):
2127
self.abbreviation = abbreviation
2128
self.branch = branch
2131
class UnexpectedSmartServerResponse(BzrError):
2133
_fmt = "Could not understand response from smart server: %(response_tuple)r"
2135
def __init__(self, response_tuple):
2136
self.response_tuple = response_tuple