33
33
# TODO: is there any value in providing the .args field used by standard
34
# python exceptions? A list of values with no names seems less useful
34
# python exceptions? A list of values with no names seems less useful
37
# TODO: Perhaps convert the exception to a string at the moment it's
37
# TODO: Perhaps convert the exception to a string at the moment it's
38
38
# constructed to make sure it will succeed. But that says nothing about
39
39
# exceptions that are never raised.
72
72
arguments can be given. The first is for generic "user" errors which
73
73
are not intended to be caught and so do not need a specific subclass.
74
74
The second case is for use with subclasses that provide a _fmt format
75
string to print the arguments.
75
string to print the arguments.
77
Keyword arguments are taken as parameters to the error, which can
78
be inserted into the format string template. It's recommended
79
that subclasses override the __init__ method to require specific
77
Keyword arguments are taken as parameters to the error, which can
78
be inserted into the format string template. It's recommended
79
that subclasses override the __init__ method to require specific
82
82
:param msg: If given, this is the literal complete text for the error,
477
477
def __init__(self, name, value):
478
478
BzrError.__init__(self, name=name, value=value)
481
481
class StrictCommitFailed(BzrError):
483
483
_fmt = "Commit refused because there are unknown files in the tree"
486
486
# XXX: Should be unified with TransportError; they seem to represent the
488
488
# RBC 20060929: I think that unifiying with TransportError would be a mistake
489
# - this is finer than a TransportError - and more useful as such. It
489
# - this is finer than a TransportError - and more useful as such. It
490
490
# differentiates between 'transport has failed' and 'operation on a transport
492
492
class PathError(BzrError):
494
494
_fmt = "Generic path error: %(path)r%(extra)s)"
496
496
def __init__(self, path, extra=None):
690
690
# TODO: This is given a URL; we try to unescape it but doing that from inside
691
691
# the exception object is a bit undesirable.
692
# TODO: Probably this behavior of should be a common superclass
692
# TODO: Probably this behavior of should be a common superclass
693
693
class NotBranchError(PathError):
695
695
_fmt = 'Not a branch: "%(path)s".'
1131
1131
class NoSuchRevisionInTree(NoSuchRevision):
1132
1132
"""When using Tree.revision_tree, and the revision is not accessible."""
1134
1134
_fmt = "The revision id {%(revision_id)s} is not present in the tree %(tree)s."
1136
1136
def __init__(self, tree, revision_id):
1384
1384
class VersionedFileError(BzrError):
1386
1386
_fmt = "Versioned file error"
1389
1389
class RevisionNotPresent(VersionedFileError):
1391
1391
_fmt = 'Revision {%(revision_id)s} not present in "%(file_id)s".'
1393
1393
def __init__(self, revision_id, file_id):
1450
1450
def __init__(self, stream_format, target_format):
1451
1451
self.stream_format = stream_format
1452
1452
self.target_format = target_format
1455
1455
class KnitDataStreamUnknown(KnitError):
1456
1456
# Indicates a data stream we don't know how to handle.
1730
1730
class WorkingTreeNotRevision(BzrError):
1732
_fmt = ("The working tree for %(basedir)s has changed since"
1732
_fmt = ("The working tree for %(basedir)s has changed since"
1733
1733
" the last commit, but weave merge requires that it be"
2049
2049
_fmt = """This tree contains left-over files from a failed operation.
2050
2050
Please examine %(limbo_dir)s to see if it contains any files you wish to
2051
2051
keep, and delete it when you are done."""
2053
2053
def __init__(self, limbo_dir):
2054
2054
BzrError.__init__(self)
2055
2055
self.limbo_dir = limbo_dir
2236
2236
self.text = text
2239
class BadBundle(BzrError):
2239
class BadBundle(BzrError):
2241
2241
_fmt = "Bad bzr revision-bundle: %(text)r"
2243
2243
def __init__(self, text):
2245
2245
self.text = text
2248
class MalformedHeader(BadBundle):
2248
class MalformedHeader(BadBundle):
2250
2250
_fmt = "Malformed bzr revision-bundle header: %(text)r"
2253
class MalformedPatches(BadBundle):
2253
class MalformedPatches(BadBundle):
2255
2255
_fmt = "Malformed patches in bzr revision-bundle: %(text)r"
2258
class MalformedFooter(BadBundle):
2258
class MalformedFooter(BadBundle):
2260
2260
_fmt = "Malformed footer in bzr revision-bundle: %(text)r"
2263
2263
class UnsupportedEOLMarker(BadBundle):
2265
_fmt = "End of line marker was not \\n in bzr revision-bundle"
2265
_fmt = "End of line marker was not \\n in bzr revision-bundle"
2267
2267
def __init__(self):
2268
# XXX: BadBundle's constructor assumes there's explanatory text,
2268
# XXX: BadBundle's constructor assumes there's explanatory text,
2269
2269
# but for this there is not
2270
2270
BzrError.__init__(self)
2273
2273
class IncompatibleBundleFormat(BzrError):
2275
2275
_fmt = "Bundle format %(bundle_format)s is incompatible with %(other)s"
2277
2277
def __init__(self, bundle_format, other):
2588
2588
class UnknownContainerFormatError(ContainerError):
2590
2590
_fmt = "Unrecognised container format: %(container_format)r"
2592
2592
def __init__(self, container_format):
2593
2593
self.container_format = container_format
2817
2817
class CommandAvailableInPlugin(StandardError):
2819
2819
internal_error = False
2821
2821
def __init__(self, cmd_name, plugin_metadata, provider):
2823
2823
self.plugin_metadata = plugin_metadata
2824
2824
self.cmd_name = cmd_name
2825
2825
self.provider = provider
2827
2827
def __str__(self):
2829
_fmt = ('"%s" is not a standard bzr command. \n'
2829
_fmt = ('"%s" is not a standard bzr command. \n'
2830
2830
'However, the following official plugin provides this command: %s\n'
2831
2831
'You can install it by going to: %s'
2832
% (self.cmd_name, self.plugin_metadata['name'],
2832
% (self.cmd_name, self.plugin_metadata['name'],
2833
2833
self.plugin_metadata['url']))
2838
2838
class NoPluginAvailable(BzrError):
2842
2842
class NotATerminal(BzrError):
2966
2966
def __init__(self, format, url):
2967
2967
BzrError.__init__(self, format=format, url=url)
2970
class NoSuchView(BzrError):
2971
"""A view does not exist.
2974
_fmt = u"No such view: %(view_name)s."
2976
def __init__(self, view_name):
2977
self.view_name = view_name
2980
class ViewsNotSupported(BzrError):
2981
"""Views are not supported by a tree format.
2984
_fmt = ("Views are not supported by %(tree)s;"
2985
" use 'bzr upgrade' to change your tree to a later format.")
2987
def __init__(self, tree):
2991
class FileOutsideView(BzrError):
2993
_fmt = ('Specified file "%(file_name)s" is outside the current view: '
2996
def __init__(self, file_name, view_files):
2997
self.file_name = file_name
2998
self.view_str = ", ".join(view_files)
3001
class UnresumableWriteGroup(BzrError):
3003
_fmt = ("Repository %(repository)s cannot resume write group "
3004
"%(write_groups)r: %(reason)s")
3006
internal_error = True
3008
def __init__(self, repository, write_groups, reason):
3009
self.repository = repository
3010
self.write_groups = write_groups
3011
self.reason = reason
3014
class UnsuspendableWriteGroup(BzrError):
3016
_fmt = ("Repository %(repository)s cannot suspend a write group.")
3018
internal_error = True
3020
def __init__(self, repository):
3021
self.repository = repository