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'."""
306
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)
309
481
class StrictCommitFailed(BzrError):
311
483
_fmt = "Commit refused because there are unknown files in the tree"
397
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.')
598
class UnavailableRepresentation(InternalBzrError):
600
_fmt = ("The encoding '%(wanted)s' is not available for key %(key)s which "
601
"is encoded as '%(native)s'.")
603
def __init__(self, key, wanted, native):
604
InternalBzrError.__init__(self)
610
class UnknownHook(BzrError):
612
_fmt = "The %(type)s hook '%(hook)s' is unknown in this version of bzrlib."
614
def __init__(self, hook_type, hook_name):
615
BzrError.__init__(self)
616
self.type = hook_type
617
self.hook = hook_name
400
620
class UnsupportedProtocol(PathError):
402
622
_fmt = 'Unsupported protocol for url "%(path)s"%(extra)s'
404
def __init__(self, url, extra=""):
624
def __init__(self, url, extra):
405
625
PathError.__init__(self, url, extra=extra)
628
class UnstackableBranchFormat(BzrError):
630
_fmt = ("The branch '%(url)s'(%(format)s) is not a stackable format. "
631
"You will need to upgrade the branch to permit branch stacking.")
633
def __init__(self, format, url):
634
BzrError.__init__(self)
408
639
class UnstackableLocationError(BzrError):
410
641
_fmt = "The branch '%(branch_url)s' cannot be stacked on '%(target_url)s'."
474
705
_fmt = 'Not a branch: "%(path)s"%(detail)s.'
476
def __init__(self, path, detail=None, controldir=None):
477
from . import urlutils
478
path = urlutils.unescape_for_display(path, 'ascii')
479
if detail is not None:
480
detail = ': ' + detail
482
self.controldir = controldir
483
PathError.__init__(self, path=path)
486
return '<%s %r>' % (self.__class__.__name__, self.__dict__)
488
def _get_format_string(self):
489
# 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.
490
720
if self.detail is None:
491
self.detail = self._get_detail()
492
return super(NotBranchError, self)._get_format_string()
494
def _get_detail(self):
495
if self.controldir is not None:
497
self.controldir.open_repository()
498
except NoRepositoryPresent:
500
except Exception as e:
501
# Just ignore unexpected errors. Raising arbitrary errors
502
# during str(err) can provoke strange bugs. Concretely
503
# Launchpad's codehosting managed to raise NotBranchError
504
# here, and then get stuck in an infinite loop/recursion
505
# trying to str() that error. All this error really cares
506
# about that there's no working repository there, and if
507
# open_repository() fails, there probably isn't.
508
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'
510
return ': location is a repository'
730
return PathError._format(self)
514
733
class NoSubmitBranch(PathError):
950
1177
self.revision_id = revision_id
1180
class InvalidRevisionSpec(BzrError):
1182
_fmt = ("Requested revision: '%(spec)s' does not exist in branch:"
1183
" %(branch)s%(extra)s")
1185
def __init__(self, spec, branch, extra=None):
1186
BzrError.__init__(self, branch=branch, spec=spec)
1188
self.extra = '\n' + str(extra)
1193
class HistoryMissing(BzrError):
1195
_fmt = "%(branch)s is missing %(object_type)s {%(object_id)s}"
953
1198
class AppendRevisionsOnlyViolation(BzrError):
955
1200
_fmt = ('Operation denied because it would change the main history,'
956
' which is not permitted by the append_revisions_only setting on'
957
' branch "%(location)s".')
1201
' which is not permitted by the append_revisions_only setting on'
1202
' branch "%(location)s".')
959
1204
def __init__(self, location):
960
import breezy.urlutils as urlutils
961
location = urlutils.unescape_for_display(location, 'ascii')
962
BzrError.__init__(self, location=location)
1205
import bzrlib.urlutils as urlutils
1206
location = urlutils.unescape_for_display(location, 'ascii')
1207
BzrError.__init__(self, location=location)
965
1210
class DivergedBranches(BzrError):
1082
1339
self.error = error
1342
class WeaveError(BzrError):
1344
_fmt = "Error in processing weave: %(msg)s"
1346
def __init__(self, msg=None):
1347
BzrError.__init__(self)
1351
class WeaveRevisionAlreadyPresent(WeaveError):
1353
_fmt = "Revision {%(revision_id)s} already present in %(weave)s"
1355
def __init__(self, revision_id, weave):
1357
WeaveError.__init__(self)
1358
self.revision_id = revision_id
1362
class WeaveRevisionNotPresent(WeaveError):
1364
_fmt = "Revision {%(revision_id)s} not present in %(weave)s"
1366
def __init__(self, revision_id, weave):
1367
WeaveError.__init__(self)
1368
self.revision_id = revision_id
1372
class WeaveFormatError(WeaveError):
1374
_fmt = "Weave invariant violated: %(what)s"
1376
def __init__(self, what):
1377
WeaveError.__init__(self)
1381
class WeaveParentMismatch(WeaveError):
1383
_fmt = "Parents are mismatched between two revisions. %(message)s"
1386
class WeaveInvalidChecksum(WeaveError):
1388
_fmt = "Text did not match it's checksum: %(message)s"
1391
class WeaveTextDiffers(WeaveError):
1393
_fmt = ("Weaves differ on text content. Revision:"
1394
" {%(revision_id)s}, %(weave_a)s, %(weave_b)s")
1396
def __init__(self, revision_id, weave_a, weave_b):
1397
WeaveError.__init__(self)
1398
self.revision_id = revision_id
1399
self.weave_a = weave_a
1400
self.weave_b = weave_b
1403
class WeaveTextDiffers(WeaveError):
1405
_fmt = ("Weaves differ on text content. Revision:"
1406
" {%(revision_id)s}, %(weave_a)s, %(weave_b)s")
1408
def __init__(self, revision_id, weave_a, weave_b):
1409
WeaveError.__init__(self)
1410
self.revision_id = revision_id
1411
self.weave_a = weave_a
1412
self.weave_b = weave_b
1085
1415
class VersionedFileError(BzrError):
1087
1417
_fmt = "Versioned file error"
1110
1440
class VersionedFileInvalidChecksum(VersionedFileError):
1112
_fmt = "Text did not match its checksum: %(msg)s"
1442
_fmt = "Text did not match its checksum: %(message)s"
1445
class KnitError(InternalBzrError):
1450
class KnitCorrupt(KnitError):
1452
_fmt = "Knit %(filename)s corrupt: %(how)s"
1454
def __init__(self, filename, how):
1455
KnitError.__init__(self)
1456
self.filename = filename
1460
class SHA1KnitCorrupt(KnitCorrupt):
1462
_fmt = ("Knit %(filename)s corrupt: sha-1 of reconstructed text does not "
1463
"match expected sha-1. key %(key)s expected sha %(expected)s actual "
1466
def __init__(self, filename, actual, expected, key, content):
1467
KnitError.__init__(self)
1468
self.filename = filename
1469
self.actual = actual
1470
self.expected = expected
1472
self.content = content
1475
class KnitDataStreamIncompatible(KnitError):
1476
# Not raised anymore, as we can convert data streams. In future we may
1477
# need it again for more exotic cases, so we're keeping it around for now.
1479
_fmt = "Cannot insert knit data stream of format \"%(stream_format)s\" into knit of format \"%(target_format)s\"."
1481
def __init__(self, stream_format, target_format):
1482
self.stream_format = stream_format
1483
self.target_format = target_format
1486
class KnitDataStreamUnknown(KnitError):
1487
# Indicates a data stream we don't know how to handle.
1489
_fmt = "Cannot parse knit data stream of format \"%(stream_format)s\"."
1491
def __init__(self, stream_format):
1492
self.stream_format = stream_format
1495
class KnitHeaderError(KnitError):
1497
_fmt = 'Knit header error: %(badline)r unexpected for file "%(filename)s".'
1499
def __init__(self, badline, filename):
1500
KnitError.__init__(self)
1501
self.badline = badline
1502
self.filename = filename
1504
class KnitIndexUnknownMethod(KnitError):
1505
"""Raised when we don't understand the storage method.
1507
Currently only 'fulltext' and 'line-delta' are supported.
1510
_fmt = ("Knit index %(filename)s does not have a known method"
1511
" in options: %(options)r")
1513
def __init__(self, filename, options):
1514
KnitError.__init__(self)
1515
self.filename = filename
1516
self.options = options
1115
1519
class RetryWithNewPacks(BzrError):
1288
1685
class InvalidHttpResponse(TransportError):
1290
_fmt = "Invalid http response for %(path)s: %(msg)s%(orig_error)s"
1687
_fmt = "Invalid http response for %(path)s: %(msg)s"
1292
1689
def __init__(self, path, msg, orig_error=None):
1293
1690
self.path = path
1294
if orig_error is None:
1297
# This is reached for obscure and unusual errors so we want to
1298
# preserve as much info as possible to ease debug.
1299
orig_error = ': %r' % (orig_error,)
1300
1691
TransportError.__init__(self, msg, orig_error=orig_error)
1303
class UnexpectedHttpStatus(InvalidHttpResponse):
1305
_fmt = "Unexpected HTTP status %(code)d for %(path)s: %(extra)s"
1307
def __init__(self, path, code, extra=None):
1310
self.extra = extra or ''
1311
full_msg = 'status code %d unexpected' % code
1312
if extra is not None:
1313
full_msg += ': ' + extra
1314
InvalidHttpResponse.__init__(
1315
self, path, full_msg)
1318
class BadHttpRequest(UnexpectedHttpStatus):
1320
_fmt = "Bad http request for %(path)s: %(reason)s"
1322
def __init__(self, path, reason):
1324
self.reason = reason
1325
TransportError.__init__(self, reason)
1328
1694
class InvalidHttpRange(InvalidHttpResponse):
1330
1696
_fmt = "Invalid http range %(range)r for %(path)s: %(msg)s"
1380
1733
_fmt = "Working tree has conflicts."
1383
class DependencyNotPresent(BzrError):
1385
_fmt = 'Unable to import library "%(library)s": %(error)s'
1387
def __init__(self, library, error):
1388
BzrError.__init__(self, library=library, error=error)
1736
class ParseConfigError(BzrError):
1738
def __init__(self, errors, filename):
1739
if filename is None:
1741
message = "Error(s) parsing config file %s:\n%s" % \
1742
(filename, ('\n'.join(e.msg for e in errors)))
1743
BzrError.__init__(self, message)
1746
class NoEmailInUsername(BzrError):
1748
_fmt = "%(username)r does not seem to contain a reasonable email address"
1750
def __init__(self, username):
1751
BzrError.__init__(self)
1752
self.username = username
1755
class SigningFailed(BzrError):
1757
_fmt = 'Failed to gpg sign data with command "%(command_line)s"'
1759
def __init__(self, command_line):
1760
BzrError.__init__(self, command_line=command_line)
1391
1763
class WorkingTreeNotRevision(BzrError):
1657
2097
wish to keep, and delete it when you are done."""
1659
2099
def __init__(self, pending_deletion):
1660
BzrError.__init__(self, pending_deletion=pending_deletion)
2100
BzrError.__init__(self, pending_deletion=pending_deletion)
2103
class ImmortalLimbo(BzrError):
2105
_fmt = """Unable to delete transform temporary directory %(limbo_dir)s.
2106
Please examine %(limbo_dir)s to see if it contains any files you wish to
2107
keep, and delete it when you are done."""
2109
def __init__(self, limbo_dir):
2110
BzrError.__init__(self)
2111
self.limbo_dir = limbo_dir
1663
2114
class ImmortalPendingDeletion(BzrError):
1665
2116
_fmt = ("Unable to delete transform temporary directory "
1666
"%(pending_deletion)s. Please examine %(pending_deletion)s to see if it "
1667
"contains any files you wish to keep, and delete it when you are done.")
2117
"%(pending_deletion)s. Please examine %(pending_deletion)s to see if it "
2118
"contains any files you wish to keep, and delete it when you are done.")
1669
2120
def __init__(self, pending_deletion):
1670
BzrError.__init__(self, pending_deletion=pending_deletion)
2121
BzrError.__init__(self, pending_deletion=pending_deletion)
1673
2124
class OutOfDateTree(BzrError):
1675
_fmt = "Working tree is out of date, please run 'brz update'.%(more)s"
2126
_fmt = "Working tree is out of date, please run 'bzr update'.%(more)s"
1677
2128
def __init__(self, tree, more=None):
1678
2129
if more is None:
2021
2539
self.tag_name = tag_name
2542
class MalformedBugIdentifier(BzrError):
2544
_fmt = ('Did not understand bug identifier %(bug_id)s: %(reason)s. '
2545
'See "bzr help bugs" for more information on this feature.')
2547
def __init__(self, bug_id, reason):
2548
self.bug_id = bug_id
2549
self.reason = reason
2552
class InvalidBugTrackerURL(BzrError):
2554
_fmt = ("The URL for bug tracker \"%(abbreviation)s\" doesn't "
2555
"contain {id}: %(url)s")
2557
def __init__(self, abbreviation, url):
2558
self.abbreviation = abbreviation
2562
class UnknownBugTrackerAbbreviation(BzrError):
2564
_fmt = ("Cannot find registered bug tracker called %(abbreviation)s "
2567
def __init__(self, abbreviation, branch):
2568
self.abbreviation = abbreviation
2569
self.branch = branch
2572
class InvalidLineInBugsProperty(BzrError):
2574
_fmt = ("Invalid line in bugs property: '%(line)s'")
2576
def __init__(self, line):
2580
class InvalidBugStatus(BzrError):
2582
_fmt = ("Invalid bug status: '%(status)s'")
2584
def __init__(self, status):
2585
self.status = status
2024
2588
class UnexpectedSmartServerResponse(BzrError):
2026
2590
_fmt = "Could not understand response from smart server: %(response_tuple)r"
2132
2700
self.reason = reason
2703
class SMTPError(BzrError):
2705
_fmt = "SMTP error: %(error)s"
2707
def __init__(self, error):
2711
class NoMessageSupplied(BzrError):
2713
_fmt = "No message supplied."
2716
class NoMailAddressSpecified(BzrError):
2718
_fmt = "No mail-to address (--mail-to) or output (-o) specified."
2721
class UnknownMailClient(BzrError):
2723
_fmt = "Unknown mail client: %(mail_client)s"
2725
def __init__(self, mail_client):
2726
BzrError.__init__(self, mail_client=mail_client)
2729
class MailClientNotFound(BzrError):
2731
_fmt = "Unable to find mail client with the following names:"\
2732
" %(mail_command_list_string)s"
2734
def __init__(self, mail_command_list):
2735
mail_command_list_string = ', '.join(mail_command_list)
2736
BzrError.__init__(self, mail_command_list=mail_command_list,
2737
mail_command_list_string=mail_command_list_string)
2739
class SMTPConnectionRefused(SMTPError):
2741
_fmt = "SMTP connection to %(host)s refused"
2743
def __init__(self, error, host):
2748
class DefaultSMTPConnectionRefused(SMTPConnectionRefused):
2750
_fmt = "Please specify smtp_server. No server at default %(host)s."
2753
class BzrDirError(BzrError):
2755
def __init__(self, bzrdir):
2756
import bzrlib.urlutils as urlutils
2757
display_url = urlutils.unescape_for_display(bzrdir.user_url,
2759
BzrError.__init__(self, bzrdir=bzrdir, display_url=display_url)
2762
class UnsyncedBranches(BzrDirError):
2764
_fmt = ("'%(display_url)s' is not in sync with %(target_url)s. See"
2765
" bzr help sync-for-reconfigure.")
2767
def __init__(self, bzrdir, target_branch):
2768
BzrDirError.__init__(self, bzrdir)
2769
import bzrlib.urlutils as urlutils
2770
self.target_url = urlutils.unescape_for_display(target_branch.base,
2774
class AlreadyBranch(BzrDirError):
2776
_fmt = "'%(display_url)s' is already a branch."
2779
class AlreadyTree(BzrDirError):
2781
_fmt = "'%(display_url)s' is already a tree."
2784
class AlreadyCheckout(BzrDirError):
2786
_fmt = "'%(display_url)s' is already a checkout."
2789
class AlreadyLightweightCheckout(BzrDirError):
2791
_fmt = "'%(display_url)s' is already a lightweight checkout."
2794
class AlreadyUsingShared(BzrDirError):
2796
_fmt = "'%(display_url)s' is already using a shared repository."
2799
class AlreadyStandalone(BzrDirError):
2801
_fmt = "'%(display_url)s' is already standalone."
2804
class AlreadyWithTrees(BzrDirError):
2806
_fmt = ("Shared repository '%(display_url)s' already creates "
2810
class AlreadyWithNoTrees(BzrDirError):
2812
_fmt = ("Shared repository '%(display_url)s' already doesn't create "
2816
class ReconfigurationNotSupported(BzrDirError):
2818
_fmt = "Requested reconfiguration of '%(display_url)s' is not supported."
2821
class NoBindLocation(BzrDirError):
2823
_fmt = "No location could be found to bind to at %(display_url)s."
2135
2826
class UncommittedChanges(BzrError):
2137
2828
_fmt = ('Working tree "%(display_url)s" has uncommitted changes'
2138
' (See brz status).%(more)s')
2829
' (See bzr status).%(more)s')
2140
2831
def __init__(self, tree, more=None):
2141
2832
if more is None:
2144
2835
more = ' ' + more
2145
import breezy.urlutils as urlutils
2146
user_url = getattr(tree, "user_url", None)
2147
if user_url is None:
2148
display_url = str(tree)
2150
display_url = urlutils.unescape_for_display(user_url, 'ascii')
2836
import bzrlib.urlutils as urlutils
2837
display_url = urlutils.unescape_for_display(
2838
tree.user_url, 'ascii')
2151
2839
BzrError.__init__(self, tree=tree, display_url=display_url, more=more)
2154
class StoringUncommittedNotSupported(BzrError):
2156
_fmt = ('Branch "%(display_url)s" does not support storing uncommitted'
2159
def __init__(self, branch):
2160
import breezy.urlutils as urlutils
2161
user_url = getattr(branch, "user_url", None)
2162
if user_url is None:
2163
display_url = str(branch)
2165
display_url = urlutils.unescape_for_display(user_url, 'ascii')
2166
BzrError.__init__(self, branch=branch, display_url=display_url)
2169
class ShelvedChanges(UncommittedChanges):
2171
_fmt = ('Working tree "%(display_url)s" has shelved changes'
2172
' (See brz shelve --list).%(more)s')
2842
class MissingTemplateVariable(BzrError):
2844
_fmt = 'Variable {%(name)s} is not available.'
2846
def __init__(self, name):
2850
class NoTemplate(BzrError):
2852
_fmt = 'No template specified.'
2855
class UnableCreateSymlink(BzrError):
2857
_fmt = 'Unable to create symlink %(path_str)son this platform'
2859
def __init__(self, path=None):
2863
path_str = repr(str(path))
2864
except UnicodeEncodeError:
2865
path_str = repr(path)
2867
self.path_str = path_str
2870
class UnsupportedTimezoneFormat(BzrError):
2872
_fmt = ('Unsupported timezone format "%(timezone)s", '
2873
'options are "utc", "original", "local".')
2875
def __init__(self, timezone):
2876
self.timezone = timezone
2879
class CommandAvailableInPlugin(StandardError):
2881
internal_error = False
2883
def __init__(self, cmd_name, plugin_metadata, provider):
2885
self.plugin_metadata = plugin_metadata
2886
self.cmd_name = cmd_name
2887
self.provider = provider
2891
_fmt = ('"%s" is not a standard bzr command. \n'
2892
'However, the following official plugin provides this command: %s\n'
2893
'You can install it by going to: %s'
2894
% (self.cmd_name, self.plugin_metadata['name'],
2895
self.plugin_metadata['url']))
2900
class NoPluginAvailable(BzrError):
2175
2904
class UnableEncodePath(BzrError):
2199
2950
def __init__(self, host, port, orig_error):
2200
2951
# nb: in python2.4 socket.error doesn't have a useful repr
2201
2952
BzrError.__init__(self, host=host, port=port,
2202
orig_error=repr(orig_error.args))
2953
orig_error=repr(orig_error.args))
2956
class UnknownRules(BzrError):
2958
_fmt = ('Unknown rules detected: %(unknowns_str)s.')
2960
def __init__(self, unknowns):
2961
BzrError.__init__(self, unknowns_str=", ".join(unknowns))
2964
class HookFailed(BzrError):
2965
"""Raised when a pre_change_branch_tip hook function fails anything other
2966
than TipChangeRejected.
2968
Note that this exception is no longer raised, and the import is only left
2969
to be nice to code which might catch it in a plugin.
2972
_fmt = ("Hook '%(hook_name)s' during %(hook_stage)s failed:\n"
2973
"%(traceback_text)s%(exc_value)s")
2975
def __init__(self, hook_stage, hook_name, exc_info, warn=True):
2977
symbol_versioning.warn("BzrError HookFailed has been deprecated "
2978
"as of bzrlib 2.1.", DeprecationWarning, stacklevel=2)
2980
self.hook_stage = hook_stage
2981
self.hook_name = hook_name
2982
self.exc_info = exc_info
2983
self.exc_type = exc_info[0]
2984
self.exc_value = exc_info[1]
2985
self.exc_tb = exc_info[2]
2986
self.traceback_text = ''.join(traceback.format_tb(self.exc_tb))
2205
2989
class TipChangeRejected(BzrError):
2226
3031
_fmt = 'The user aborted the operation.'
3034
class MustHaveWorkingTree(BzrError):
3036
_fmt = ("Branching '%(url)s'(%(format)s) must create a working tree.")
3038
def __init__(self, format, url):
3039
BzrError.__init__(self, format=format, url=url)
3042
class NoSuchView(BzrError):
3043
"""A view does not exist.
3046
_fmt = u"No such view: %(view_name)s."
3048
def __init__(self, view_name):
3049
self.view_name = view_name
3052
class ViewsNotSupported(BzrError):
3053
"""Views are not supported by a tree format.
3056
_fmt = ("Views are not supported by %(tree)s;"
3057
" use 'bzr upgrade' to change your tree to a later format.")
3059
def __init__(self, tree):
3063
class FileOutsideView(BzrError):
3065
_fmt = ('Specified file "%(file_name)s" is outside the current view: '
3068
def __init__(self, file_name, view_files):
3069
self.file_name = file_name
3070
self.view_str = ", ".join(view_files)
2229
3073
class UnresumableWriteGroup(BzrError):
2231
3075
_fmt = ("Repository %(repository)s cannot resume write group "
2273
3117
self.target_branch = target_branch
3120
class FileTimestampUnavailable(BzrError):
3122
_fmt = "The filestamp for %(path)s is not available."
3124
internal_error = True
3126
def __init__(self, path):
2276
3130
class NoColocatedBranchSupport(BzrError):
2278
_fmt = ("%(controldir)r does not support co-located branches.")
2280
def __init__(self, controldir):
2281
self.controldir = controldir
2284
class RecursiveBind(BzrError):
2286
_fmt = ('Branch "%(branch_url)s" appears to be bound to itself. '
2287
'Please use `brz unbind` to fix.')
2289
def __init__(self, branch_url):
2290
self.branch_url = branch_url
2293
class UnsupportedKindChange(BzrError):
2295
_fmt = ("Kind change from %(from_kind)s to %(to_kind)s for "
2296
"%(path)s not supported by format %(format)r")
2298
def __init__(self, path, from_kind, to_kind, format):
2300
self.from_kind = from_kind
2301
self.to_kind = to_kind
2302
self.format = format
2305
class ChangesAlreadyStored(CommandError):
2307
_fmt = ('Cannot store uncommitted changes because this branch already'
2308
' stores uncommitted changes.')
2311
class RevnoOutOfBounds(InternalBzrError):
2313
_fmt = ("The requested revision number %(revno)d is outside of the "
2314
"expected boundaries (%(minimum)d <= %(maximum)d).")
2316
def __init__(self, revno, bounds):
2317
InternalBzrError.__init__(
2318
self, revno=revno, minimum=bounds[0], maximum=bounds[1])
3132
_fmt = ("%(bzrdir)r does not support co-located branches.")
3134
def __init__(self, bzrdir):
3135
self.bzrdir = bzrdir