100
106
# __str__() should always return a 'str' object
101
107
# never a 'unicode' object.
103
except Exception as e:
105
return 'Unprintable exception %s: dict=%r, fmt=%r, error=%r' \
109
except (AttributeError, TypeError, NameError, ValueError, KeyError), e:
110
return 'Unprintable exception %s: dict=%r, fmt=%r, error=%r' \
111
% (self.__class__.__name__,
113
getattr(self, '_fmt', None),
116
def __unicode__(self):
118
if isinstance(u, str):
119
# Try decoding the str using the default encoding.
121
elif not isinstance(u, unicode):
122
# Try to make a unicode object from it, because __unicode__ must
123
# return a unicode object.
129
if isinstance(s, unicode):
132
# __str__ must return a str.
137
return '%s(%s)' % (self.__class__.__name__, str(self))
139
def _get_format_string(self):
140
"""Return format string for this exception or None"""
141
fmt = getattr(self, '_fmt', None)
144
fmt = getattr(self, '__doc__', None)
146
symbol_versioning.warn("%s uses its docstring as a format, "
147
"it should use _fmt instead" % self.__class__.__name__,
150
return 'Unprintable exception %s: dict=%r, fmt=%r' \
106
151
% (self.__class__.__name__,
108
153
getattr(self, '_fmt', None),
115
return self._format().encode('utf-8')
117
__unicode__ = _format
120
return '%s(%s)' % (self.__class__.__name__, str(self))
122
def _get_format_string(self):
123
"""Return format string for this exception or None"""
124
fmt = getattr(self, '_fmt', None)
126
from breezy.i18n import gettext
127
return gettext(fmt) # _fmt strings should be ascii
129
156
def __eq__(self, other):
130
157
if self.__class__ is not other.__class__:
131
158
return NotImplemented
132
159
return self.__dict__ == other.__dict__
138
162
class InternalBzrError(BzrError):
139
163
"""Base class for errors that are internal in nature.
146
170
internal_error = True
173
class BzrNewError(BzrError):
174
"""Deprecated error base class."""
175
# base classes should override the docstring with their human-
176
# readable explanation
178
def __init__(self, *args, **kwds):
179
# XXX: Use the underlying BzrError to always generate the args
180
# attribute if it doesn't exist. We can't use super here, because
181
# exceptions are old-style classes in python2.4 (but new in 2.5).
183
symbol_versioning.warn('BzrNewError was deprecated in bzr 0.13; '
184
'please convert %s to use BzrError instead'
185
% self.__class__.__name__,
188
BzrError.__init__(self, *args)
189
for key, value in kwds.items():
190
setattr(self, key, value)
194
# __str__() should always return a 'str' object
195
# never a 'unicode' object.
196
s = self.__doc__ % self.__dict__
197
if isinstance(s, unicode):
198
return s.encode('utf8')
200
except (TypeError, NameError, ValueError, KeyError), e:
201
return 'Unprintable exception %s(%r): %r' \
202
% (self.__class__.__name__,
206
class AlreadyBuilding(BzrError):
208
_fmt = "The tree builder is already building a tree."
149
211
class BranchError(BzrError):
150
212
"""Base class for concrete 'errors about a branch'."""
311
409
self.not_locked = not_locked
412
class BzrOptionError(BzrCommandError):
414
_fmt = "Error in command line options"
417
class BadIndexFormatSignature(BzrError):
419
_fmt = "%(value)s is not an index of type %(_type)s."
421
def __init__(self, value, _type):
422
BzrError.__init__(self)
427
class BadIndexData(BzrError):
429
_fmt = "Error in data for index %(value)s."
431
def __init__(self, value):
432
BzrError.__init__(self)
436
class BadIndexDuplicateKey(BzrError):
438
_fmt = "The key '%(key)s' is already in index '%(index)s'."
440
def __init__(self, key, index):
441
BzrError.__init__(self)
446
class BadIndexKey(BzrError):
448
_fmt = "The key '%(key)s' is not a valid key."
450
def __init__(self, key):
451
BzrError.__init__(self)
455
class BadIndexOptions(BzrError):
457
_fmt = "Could not parse options for index %(value)s."
459
def __init__(self, value):
460
BzrError.__init__(self)
464
class BadIndexValue(BzrError):
466
_fmt = "The value '%(value)s' is not a valid value."
468
def __init__(self, value):
469
BzrError.__init__(self)
473
class BadOptionValue(BzrError):
475
_fmt = """Bad value "%(value)s" for option "%(name)s"."""
477
def __init__(self, name, value):
478
BzrError.__init__(self, name=name, value=value)
314
481
class StrictCommitFailed(BzrError):
316
483
_fmt = "Commit refused because there are unknown files in the tree"
402
569
_fmt = 'Permission denied: "%(path)s"%(extra)s'
572
class InvalidURL(PathError):
574
_fmt = 'Invalid url supplied to transport: "%(path)s"%(extra)s'
577
class InvalidURLJoin(PathError):
579
_fmt = "Invalid URL join request: %(reason)s: %(base)r + %(join_args)r"
581
def __init__(self, reason, base, join_args):
584
self.join_args = join_args
585
PathError.__init__(self, base, reason)
588
class InvalidRebaseURLs(PathError):
590
_fmt = "URLs differ by more than path: %(from_)r and %(to)r"
592
def __init__(self, from_, to):
595
PathError.__init__(self, from_, 'URLs differ by more than path.')
405
598
class UnavailableRepresentation(InternalBzrError):
407
600
_fmt = ("The encoding '%(wanted)s' is not available for key %(key)s which "
408
"is encoded as '%(native)s'.")
601
"is encoded as '%(native)s'.")
410
603
def __init__(self, key, wanted, native):
411
604
InternalBzrError.__init__(self)
491
705
_fmt = 'Not a branch: "%(path)s"%(detail)s.'
493
def __init__(self, path, detail=None, controldir=None):
494
from . import urlutils
495
path = urlutils.unescape_for_display(path, 'ascii')
496
if detail is not None:
497
detail = ': ' + detail
499
self.controldir = controldir
500
PathError.__init__(self, path=path)
503
return '<%s %r>' % (self.__class__.__name__, self.__dict__)
505
def _get_format_string(self):
506
# GZ 2017-06-08: Not the best place to lazy fill detail in.
707
def __init__(self, path, detail=None, bzrdir=None):
708
import bzrlib.urlutils as urlutils
709
path = urlutils.unescape_for_display(path, 'ascii')
710
if detail is not None:
711
detail = ': ' + detail
714
PathError.__init__(self, path=path)
717
# XXX: Ideally self.detail would be a property, but Exceptions in
718
# Python 2.4 have to be old-style classes so properties don't work.
719
# Instead we override _format.
507
720
if self.detail is None:
508
self.detail = self._get_detail()
509
return super(NotBranchError, self)._get_format_string()
511
def _get_detail(self):
512
if self.controldir is not None:
514
self.controldir.open_repository()
515
except NoRepositoryPresent:
517
except Exception as e:
518
# Just ignore unexpected errors. Raising arbitrary errors
519
# during str(err) can provoke strange bugs. Concretely
520
# Launchpad's codehosting managed to raise NotBranchError
521
# here, and then get stuck in an infinite loop/recursion
522
# trying to str() that error. All this error really cares
523
# about that there's no working repository there, and if
524
# open_repository() fails, there probably isn't.
525
return ': ' + e.__class__.__name__
721
if self.bzrdir is not None:
723
self.bzrdir.open_repository()
724
except NoRepositoryPresent:
727
self.detail = ': location is a repository'
527
return ': location is a repository'
730
return PathError._format(self)
531
733
class NoSubmitBranch(PathError):
979
1178
class InvalidRevisionSpec(BzrError):
981
1180
_fmt = ("Requested revision: '%(spec)s' does not exist in branch:"
982
" %(branch_url)s%(extra)s")
1181
" %(branch)s%(extra)s")
984
1183
def __init__(self, spec, branch, extra=None):
985
1184
BzrError.__init__(self, branch=branch, spec=spec)
986
self.branch_url = getattr(branch, 'user_url', str(branch))
988
1186
self.extra = '\n' + str(extra)
1191
class HistoryMissing(BzrError):
1193
_fmt = "%(branch)s is missing %(object_type)s {%(object_id)s}"
993
1196
class AppendRevisionsOnlyViolation(BzrError):
995
1198
_fmt = ('Operation denied because it would change the main history,'
996
' which is not permitted by the append_revisions_only setting on'
997
' branch "%(location)s".')
1199
' which is not permitted by the append_revisions_only setting on'
1200
' branch "%(location)s".')
999
1202
def __init__(self, location):
1000
import breezy.urlutils as urlutils
1001
location = urlutils.unescape_for_display(location, 'ascii')
1002
BzrError.__init__(self, location=location)
1203
import bzrlib.urlutils as urlutils
1204
location = urlutils.unescape_for_display(location, 'ascii')
1205
BzrError.__init__(self, location=location)
1005
1208
class DivergedBranches(BzrError):
1122
1337
self.error = error
1340
class WeaveError(BzrError):
1342
_fmt = "Error in processing weave: %(msg)s"
1344
def __init__(self, msg=None):
1345
BzrError.__init__(self)
1349
class WeaveRevisionAlreadyPresent(WeaveError):
1351
_fmt = "Revision {%(revision_id)s} already present in %(weave)s"
1353
def __init__(self, revision_id, weave):
1355
WeaveError.__init__(self)
1356
self.revision_id = revision_id
1360
class WeaveRevisionNotPresent(WeaveError):
1362
_fmt = "Revision {%(revision_id)s} not present in %(weave)s"
1364
def __init__(self, revision_id, weave):
1365
WeaveError.__init__(self)
1366
self.revision_id = revision_id
1370
class WeaveFormatError(WeaveError):
1372
_fmt = "Weave invariant violated: %(what)s"
1374
def __init__(self, what):
1375
WeaveError.__init__(self)
1379
class WeaveParentMismatch(WeaveError):
1381
_fmt = "Parents are mismatched between two revisions. %(message)s"
1384
class WeaveInvalidChecksum(WeaveError):
1386
_fmt = "Text did not match it's checksum: %(message)s"
1389
class WeaveTextDiffers(WeaveError):
1391
_fmt = ("Weaves differ on text content. Revision:"
1392
" {%(revision_id)s}, %(weave_a)s, %(weave_b)s")
1394
def __init__(self, revision_id, weave_a, weave_b):
1395
WeaveError.__init__(self)
1396
self.revision_id = revision_id
1397
self.weave_a = weave_a
1398
self.weave_b = weave_b
1401
class WeaveTextDiffers(WeaveError):
1403
_fmt = ("Weaves differ on text content. Revision:"
1404
" {%(revision_id)s}, %(weave_a)s, %(weave_b)s")
1406
def __init__(self, revision_id, weave_a, weave_b):
1407
WeaveError.__init__(self)
1408
self.revision_id = revision_id
1409
self.weave_a = weave_a
1410
self.weave_b = weave_b
1125
1413
class VersionedFileError(BzrError):
1127
1415
_fmt = "Versioned file error"
1150
1438
class VersionedFileInvalidChecksum(VersionedFileError):
1152
_fmt = "Text did not match its checksum: %(msg)s"
1440
_fmt = "Text did not match its checksum: %(message)s"
1443
class KnitError(InternalBzrError):
1448
class KnitCorrupt(KnitError):
1450
_fmt = "Knit %(filename)s corrupt: %(how)s"
1452
def __init__(self, filename, how):
1453
KnitError.__init__(self)
1454
self.filename = filename
1458
class SHA1KnitCorrupt(KnitCorrupt):
1460
_fmt = ("Knit %(filename)s corrupt: sha-1 of reconstructed text does not "
1461
"match expected sha-1. key %(key)s expected sha %(expected)s actual "
1464
def __init__(self, filename, actual, expected, key, content):
1465
KnitError.__init__(self)
1466
self.filename = filename
1467
self.actual = actual
1468
self.expected = expected
1470
self.content = content
1473
class KnitDataStreamIncompatible(KnitError):
1474
# Not raised anymore, as we can convert data streams. In future we may
1475
# need it again for more exotic cases, so we're keeping it around for now.
1477
_fmt = "Cannot insert knit data stream of format \"%(stream_format)s\" into knit of format \"%(target_format)s\"."
1479
def __init__(self, stream_format, target_format):
1480
self.stream_format = stream_format
1481
self.target_format = target_format
1484
class KnitDataStreamUnknown(KnitError):
1485
# Indicates a data stream we don't know how to handle.
1487
_fmt = "Cannot parse knit data stream of format \"%(stream_format)s\"."
1489
def __init__(self, stream_format):
1490
self.stream_format = stream_format
1493
class KnitHeaderError(KnitError):
1495
_fmt = 'Knit header error: %(badline)r unexpected for file "%(filename)s".'
1497
def __init__(self, badline, filename):
1498
KnitError.__init__(self)
1499
self.badline = badline
1500
self.filename = filename
1502
class KnitIndexUnknownMethod(KnitError):
1503
"""Raised when we don't understand the storage method.
1505
Currently only 'fulltext' and 'line-delta' are supported.
1508
_fmt = ("Knit index %(filename)s does not have a known method"
1509
" in options: %(options)r")
1511
def __init__(self, filename, options):
1512
KnitError.__init__(self)
1513
self.filename = filename
1514
self.options = options
1155
1517
class RetryWithNewPacks(BzrError):
1395
1731
_fmt = "Working tree has conflicts."
1398
class DependencyNotPresent(BzrError):
1400
_fmt = 'Unable to import library "%(library)s": %(error)s'
1402
def __init__(self, library, error):
1403
BzrError.__init__(self, library=library, error=error)
1734
class ParseConfigError(BzrError):
1736
def __init__(self, errors, filename):
1737
if filename is None:
1739
message = "Error(s) parsing config file %s:\n%s" % \
1740
(filename, ('\n'.join(e.msg for e in errors)))
1741
BzrError.__init__(self, message)
1744
class NoEmailInUsername(BzrError):
1746
_fmt = "%(username)r does not seem to contain a reasonable email address"
1748
def __init__(self, username):
1749
BzrError.__init__(self)
1750
self.username = username
1753
class SigningFailed(BzrError):
1755
_fmt = 'Failed to gpg sign data with command "%(command_line)s"'
1757
def __init__(self, command_line):
1758
BzrError.__init__(self, command_line=command_line)
1406
1761
class WorkingTreeNotRevision(BzrError):
1612
1972
class BzrRenameFailedError(BzrMoveFailedError):
1614
_fmt = ("Could not rename %(from_path)s%(operator)s %(to_path)s"
1615
"%(_has_extra)s%(extra)s")
1974
_fmt = "Could not rename %(from_path)s%(operator)s %(to_path)s%(extra)s"
1617
1976
def __init__(self, from_path, to_path, extra=None):
1618
1977
BzrMoveFailedError.__init__(self, from_path, to_path, extra)
1979
class BzrRemoveChangedFilesError(BzrError):
1980
"""Used when user is trying to remove changed files."""
1982
_fmt = ("Can't safely remove modified or unknown files:\n"
1983
"%(changes_as_text)s"
1984
"Use --keep to not delete them, or --force to delete them regardless.")
1986
def __init__(self, tree_delta):
1987
symbol_versioning.warn(symbol_versioning.deprecated_in((2, 2, 0)) %
1988
"BzrRemoveChangedFilesError", DeprecationWarning, stacklevel=2)
1989
BzrError.__init__(self)
1990
self.changes_as_text = tree_delta.get_changes_as_text()
1991
#self.paths_as_string = '\n'.join(changed_files)
1992
#self.paths_as_string = '\n'.join([quotefn(p) for p in changed_files])
1621
1995
class BzrBadParameterNotString(BzrBadParameter):
1736
2118
keep, and delete it when you are done."""
1738
2120
def __init__(self, limbo_dir):
1739
BzrError.__init__(self)
1740
self.limbo_dir = limbo_dir
2121
BzrError.__init__(self)
2122
self.limbo_dir = limbo_dir
1743
2125
class ImmortalPendingDeletion(BzrError):
1745
2127
_fmt = ("Unable to delete transform temporary directory "
1746
"%(pending_deletion)s. Please examine %(pending_deletion)s to see if it "
1747
"contains any files you wish to keep, and delete it when you are done.")
2128
"%(pending_deletion)s. Please examine %(pending_deletion)s to see if it "
2129
"contains any files you wish to keep, and delete it when you are done.")
1749
2131
def __init__(self, pending_deletion):
1750
BzrError.__init__(self, pending_deletion=pending_deletion)
2132
BzrError.__init__(self, pending_deletion=pending_deletion)
1753
2135
class OutOfDateTree(BzrError):
1755
_fmt = "Working tree is out of date, please run 'brz update'.%(more)s"
2137
_fmt = "Working tree is out of date, please run 'bzr update'.%(more)s"
1757
2139
def __init__(self, tree, more=None):
1758
2140
if more is None:
2132
2550
self.tag_name = tag_name
2553
class MalformedBugIdentifier(BzrError):
2555
_fmt = ('Did not understand bug identifier %(bug_id)s: %(reason)s. '
2556
'See "bzr help bugs" for more information on this feature.')
2558
def __init__(self, bug_id, reason):
2559
self.bug_id = bug_id
2560
self.reason = reason
2563
class InvalidBugTrackerURL(BzrError):
2565
_fmt = ("The URL for bug tracker \"%(abbreviation)s\" doesn't "
2566
"contain {id}: %(url)s")
2568
def __init__(self, abbreviation, url):
2569
self.abbreviation = abbreviation
2573
class UnknownBugTrackerAbbreviation(BzrError):
2575
_fmt = ("Cannot find registered bug tracker called %(abbreviation)s "
2578
def __init__(self, abbreviation, branch):
2579
self.abbreviation = abbreviation
2580
self.branch = branch
2583
class InvalidLineInBugsProperty(BzrError):
2585
_fmt = ("Invalid line in bugs property: '%(line)s'")
2587
def __init__(self, line):
2591
class InvalidBugStatus(BzrError):
2593
_fmt = ("Invalid bug status: '%(status)s'")
2595
def __init__(self, status):
2596
self.status = status
2135
2599
class UnexpectedSmartServerResponse(BzrError):
2137
2601
_fmt = "Could not understand response from smart server: %(response_tuple)r"
2243
2711
self.reason = reason
2714
class SMTPError(BzrError):
2716
_fmt = "SMTP error: %(error)s"
2718
def __init__(self, error):
2722
class NoMessageSupplied(BzrError):
2724
_fmt = "No message supplied."
2727
class NoMailAddressSpecified(BzrError):
2729
_fmt = "No mail-to address (--mail-to) or output (-o) specified."
2732
class UnknownMailClient(BzrError):
2734
_fmt = "Unknown mail client: %(mail_client)s"
2736
def __init__(self, mail_client):
2737
BzrError.__init__(self, mail_client=mail_client)
2740
class MailClientNotFound(BzrError):
2742
_fmt = "Unable to find mail client with the following names:"\
2743
" %(mail_command_list_string)s"
2745
def __init__(self, mail_command_list):
2746
mail_command_list_string = ', '.join(mail_command_list)
2747
BzrError.__init__(self, mail_command_list=mail_command_list,
2748
mail_command_list_string=mail_command_list_string)
2750
class SMTPConnectionRefused(SMTPError):
2752
_fmt = "SMTP connection to %(host)s refused"
2754
def __init__(self, error, host):
2759
class DefaultSMTPConnectionRefused(SMTPConnectionRefused):
2761
_fmt = "Please specify smtp_server. No server at default %(host)s."
2764
class BzrDirError(BzrError):
2766
def __init__(self, bzrdir):
2767
import bzrlib.urlutils as urlutils
2768
display_url = urlutils.unescape_for_display(bzrdir.user_url,
2770
BzrError.__init__(self, bzrdir=bzrdir, display_url=display_url)
2773
class UnsyncedBranches(BzrDirError):
2775
_fmt = ("'%(display_url)s' is not in sync with %(target_url)s. See"
2776
" bzr help sync-for-reconfigure.")
2778
def __init__(self, bzrdir, target_branch):
2779
BzrDirError.__init__(self, bzrdir)
2780
import bzrlib.urlutils as urlutils
2781
self.target_url = urlutils.unescape_for_display(target_branch.base,
2785
class AlreadyBranch(BzrDirError):
2787
_fmt = "'%(display_url)s' is already a branch."
2790
class AlreadyTree(BzrDirError):
2792
_fmt = "'%(display_url)s' is already a tree."
2795
class AlreadyCheckout(BzrDirError):
2797
_fmt = "'%(display_url)s' is already a checkout."
2800
class AlreadyLightweightCheckout(BzrDirError):
2802
_fmt = "'%(display_url)s' is already a lightweight checkout."
2805
class AlreadyUsingShared(BzrDirError):
2807
_fmt = "'%(display_url)s' is already using a shared repository."
2810
class AlreadyStandalone(BzrDirError):
2812
_fmt = "'%(display_url)s' is already standalone."
2815
class AlreadyWithTrees(BzrDirError):
2817
_fmt = ("Shared repository '%(display_url)s' already creates "
2821
class AlreadyWithNoTrees(BzrDirError):
2823
_fmt = ("Shared repository '%(display_url)s' already doesn't create "
2827
class ReconfigurationNotSupported(BzrDirError):
2829
_fmt = "Requested reconfiguration of '%(display_url)s' is not supported."
2832
class NoBindLocation(BzrDirError):
2834
_fmt = "No location could be found to bind to at %(display_url)s."
2246
2837
class UncommittedChanges(BzrError):
2248
2839
_fmt = ('Working tree "%(display_url)s" has uncommitted changes'
2249
' (See brz status).%(more)s')
2840
' (See bzr status).%(more)s')
2251
2842
def __init__(self, tree, more=None):
2252
2843
if more is None:
2255
2846
more = ' ' + more
2256
import breezy.urlutils as urlutils
2257
user_url = getattr(tree, "user_url", None)
2258
if user_url is None:
2259
display_url = str(tree)
2261
display_url = urlutils.unescape_for_display(user_url, 'ascii')
2847
import bzrlib.urlutils as urlutils
2848
display_url = urlutils.unescape_for_display(
2849
tree.user_url, 'ascii')
2262
2850
BzrError.__init__(self, tree=tree, display_url=display_url, more=more)
2265
class StoringUncommittedNotSupported(BzrError):
2267
_fmt = ('Branch "%(display_url)s" does not support storing uncommitted'
2270
def __init__(self, branch):
2271
import breezy.urlutils as urlutils
2272
user_url = getattr(branch, "user_url", None)
2273
if user_url is None:
2274
display_url = str(branch)
2276
display_url = urlutils.unescape_for_display(user_url, 'ascii')
2277
BzrError.__init__(self, branch=branch, display_url=display_url)
2280
2853
class ShelvedChanges(UncommittedChanges):
2282
2855
_fmt = ('Working tree "%(display_url)s" has shelved changes'
2283
' (See brz shelve --list).%(more)s')
2856
' (See bzr shelve --list).%(more)s')
2859
class MissingTemplateVariable(BzrError):
2861
_fmt = 'Variable {%(name)s} is not available.'
2863
def __init__(self, name):
2867
class NoTemplate(BzrError):
2869
_fmt = 'No template specified.'
2872
class UnableCreateSymlink(BzrError):
2874
_fmt = 'Unable to create symlink %(path_str)son this platform'
2876
def __init__(self, path=None):
2880
path_str = repr(str(path))
2881
except UnicodeEncodeError:
2882
path_str = repr(path)
2884
self.path_str = path_str
2887
class UnsupportedTimezoneFormat(BzrError):
2889
_fmt = ('Unsupported timezone format "%(timezone)s", '
2890
'options are "utc", "original", "local".')
2892
def __init__(self, timezone):
2893
self.timezone = timezone
2896
class CommandAvailableInPlugin(StandardError):
2898
internal_error = False
2900
def __init__(self, cmd_name, plugin_metadata, provider):
2902
self.plugin_metadata = plugin_metadata
2903
self.cmd_name = cmd_name
2904
self.provider = provider
2908
_fmt = ('"%s" is not a standard bzr command. \n'
2909
'However, the following official plugin provides this command: %s\n'
2910
'You can install it by going to: %s'
2911
% (self.cmd_name, self.plugin_metadata['name'],
2912
self.plugin_metadata['url']))
2917
class NoPluginAvailable(BzrError):
2286
2921
class UnableEncodePath(BzrError):
2310
2967
def __init__(self, host, port, orig_error):
2311
2968
# nb: in python2.4 socket.error doesn't have a useful repr
2312
2969
BzrError.__init__(self, host=host, port=port,
2313
orig_error=repr(orig_error.args))
2970
orig_error=repr(orig_error.args))
2973
class UnknownRules(BzrError):
2975
_fmt = ('Unknown rules detected: %(unknowns_str)s.')
2977
def __init__(self, unknowns):
2978
BzrError.__init__(self, unknowns_str=", ".join(unknowns))
2981
class HookFailed(BzrError):
2982
"""Raised when a pre_change_branch_tip hook function fails anything other
2983
than TipChangeRejected.
2985
Note that this exception is no longer raised, and the import is only left
2986
to be nice to code which might catch it in a plugin.
2989
_fmt = ("Hook '%(hook_name)s' during %(hook_stage)s failed:\n"
2990
"%(traceback_text)s%(exc_value)s")
2992
def __init__(self, hook_stage, hook_name, exc_info, warn=True):
2994
symbol_versioning.warn("BzrError HookFailed has been deprecated "
2995
"as of bzrlib 2.1.", DeprecationWarning, stacklevel=2)
2997
self.hook_stage = hook_stage
2998
self.hook_name = hook_name
2999
self.exc_info = exc_info
3000
self.exc_type = exc_info[0]
3001
self.exc_value = exc_info[1]
3002
self.exc_tb = exc_info[2]
3003
self.traceback_text = ''.join(traceback.format_tb(self.exc_tb))
2316
3006
class TipChangeRejected(BzrError):
2337
3048
_fmt = 'The user aborted the operation.'
3051
class MustHaveWorkingTree(BzrError):
3053
_fmt = ("Branching '%(url)s'(%(format)s) must create a working tree.")
3055
def __init__(self, format, url):
3056
BzrError.__init__(self, format=format, url=url)
3059
class NoSuchView(BzrError):
3060
"""A view does not exist.
3063
_fmt = u"No such view: %(view_name)s."
3065
def __init__(self, view_name):
3066
self.view_name = view_name
3069
class ViewsNotSupported(BzrError):
3070
"""Views are not supported by a tree format.
3073
_fmt = ("Views are not supported by %(tree)s;"
3074
" use 'bzr upgrade' to change your tree to a later format.")
3076
def __init__(self, tree):
3080
class FileOutsideView(BzrError):
3082
_fmt = ('Specified file "%(file_name)s" is outside the current view: '
3085
def __init__(self, file_name, view_files):
3086
self.file_name = file_name
3087
self.view_str = ", ".join(view_files)
2340
3090
class UnresumableWriteGroup(BzrError):
2342
3092
_fmt = ("Repository %(repository)s cannot resume write group "
2384
3134
self.target_branch = target_branch
3137
class FileTimestampUnavailable(BzrError):
3139
_fmt = "The filestamp for %(path)s is not available."
3141
internal_error = True
3143
def __init__(self, path):
2387
3147
class NoColocatedBranchSupport(BzrError):
2389
_fmt = ("%(controldir)r does not support co-located branches.")
2391
def __init__(self, controldir):
2392
self.controldir = controldir
2395
class RecursiveBind(BzrError):
2397
_fmt = ('Branch "%(branch_url)s" appears to be bound to itself. '
2398
'Please use `brz unbind` to fix.')
2400
def __init__(self, branch_url):
2401
self.branch_url = branch_url
2404
class UnsupportedKindChange(BzrError):
2406
_fmt = ("Kind change from %(from_kind)s to %(to_kind)s for "
2407
"%(path)s not supported by format %(format)r")
2409
def __init__(self, path, from_kind, to_kind, format):
2411
self.from_kind = from_kind
2412
self.to_kind = to_kind
2413
self.format = format
2416
class ChangesAlreadyStored(BzrCommandError):
2418
_fmt = ('Cannot store uncommitted changes because this branch already'
2419
' stores uncommitted changes.')
2422
class RevnoOutOfBounds(InternalBzrError):
2424
_fmt = ("The requested revision number %(revno)d is outside of the "
2425
"expected boundaries (%(minimum)d <= %(maximum)d).")
2427
def __init__(self, revno, bounds):
2428
InternalBzrError.__init__(
2429
self, revno=revno, minimum=bounds[0], maximum=bounds[1])
3149
_fmt = ("%(bzrdir)r does not support co-located branches.")
3151
def __init__(self, bzrdir):
3152
self.bzrdir = bzrdir
3154
class NoWhoami(BzrError):
3156
_fmt = ('Unable to determine your name.\n'
3157
"Please, set your name with the 'whoami' command.\n"
3158
'E.g. bzr whoami "Your Name <name@example.com>"')
3160
class InvalidPattern(BzrError):
3162
_fmt = ('Invalid pattern(s) found. %(msg)s')
3164
def __init__(self, msg):