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'."""
165
class IncompatibleVersion(BzrError):
167
_fmt = 'API %(api)s is not compatible; one of versions %(wanted)r '\
168
'is required, but current version is %(current)r.'
170
def __init__(self, api, wanted, current):
227
class DirstateCorrupt(BzrError):
229
_fmt = "The dirstate file (%(state)s) appears to be corrupt: %(msg)s"
231
def __init__(self, state, msg):
232
BzrError.__init__(self)
237
class DisabledMethod(InternalBzrError):
239
_fmt = "The smart server method '%(class_name)s' is disabled."
241
def __init__(self, class_name):
242
BzrError.__init__(self)
243
self.class_name = class_name
246
class IncompatibleAPI(BzrError):
248
_fmt = 'The API for "%(api)s" is not compatible with "%(wanted)s". '\
249
'It supports versions "%(minimum)s" to "%(current)s".'
251
def __init__(self, api, wanted, minimum, current):
172
253
self.wanted = wanted
254
self.minimum = minimum
173
255
self.current = current
304
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)
307
481
class StrictCommitFailed(BzrError):
309
483
_fmt = "Commit refused because there are unknown files in the tree"
395
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.')
398
598
class UnavailableRepresentation(InternalBzrError):
400
600
_fmt = ("The encoding '%(wanted)s' is not available for key %(key)s which "
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
410
620
class UnsupportedProtocol(PathError):
412
622
_fmt = 'Unsupported protocol for url "%(path)s"%(extra)s'
414
def __init__(self, url, extra=""):
624
def __init__(self, url, extra):
415
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)
418
639
class UnstackableLocationError(BzrError):
420
641
_fmt = "The branch '%(branch_url)s' cannot be stacked on '%(target_url)s'."
484
705
_fmt = 'Not a branch: "%(path)s"%(detail)s.'
486
def __init__(self, path, detail=None, controldir=None):
487
from . import urlutils
707
def __init__(self, path, detail=None, bzrdir=None):
708
import bzrlib.urlutils as urlutils
488
709
path = urlutils.unescape_for_display(path, 'ascii')
489
710
if detail is not None:
490
711
detail = ': ' + detail
491
712
self.detail = detail
492
self.controldir = controldir
493
714
PathError.__init__(self, path=path)
496
return '<%s %r>' % (self.__class__.__name__, self.__dict__)
498
def _get_format_string(self):
499
# GZ 2017-06-08: Not the best place to lazy fill detail in.
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.
500
720
if self.detail is None:
501
self.detail = self._get_detail()
502
return super(NotBranchError, self)._get_format_string()
504
def _get_detail(self):
505
if self.controldir is not None:
507
self.controldir.open_repository()
508
except NoRepositoryPresent:
510
except Exception as e:
511
# Just ignore unexpected errors. Raising arbitrary errors
512
# during str(err) can provoke strange bugs. Concretely
513
# Launchpad's codehosting managed to raise NotBranchError
514
# here, and then get stuck in an infinite loop/recursion
515
# trying to str() that error. All this error really cares
516
# about that there's no working repository there, and if
517
# open_repository() fails, there probably isn't.
518
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'
520
return ': location is a repository'
730
return PathError._format(self)
524
733
class NoSubmitBranch(PathError):
526
735
_fmt = 'No submit branch available for branch "%(path)s"'
528
737
def __init__(self, branch):
529
from . import urlutils
738
import bzrlib.urlutils as urlutils
530
739
self.path = urlutils.unescape_for_display(branch.base, 'ascii')
533
class AlreadyControlDirError(PathError):
535
_fmt = 'A control directory already exists: "%(path)s".'
538
742
class AlreadyBranchError(PathError):
540
744
_fmt = 'Already a branch: "%(path)s".'
543
class InvalidBranchName(PathError):
545
_fmt = "Invalid branch name: %(name)s"
547
def __init__(self, name):
548
BzrError.__init__(self)
552
class ParentBranchExists(AlreadyBranchError):
554
_fmt = 'Parent branch already exists: "%(path)s".'
557
747
class BranchExistsWithoutWorkingTree(PathError):
559
749
_fmt = 'Directory contains a branch, but no working tree \
560
(use brz checkout if you wish to build a working tree): "%(path)s"'
750
(use bzr checkout if you wish to build a working tree): "%(path)s"'
563
753
class AtomicFileAlreadyClosed(PathError):
1116
1338
self.error = error
1341
class WeaveError(BzrError):
1343
_fmt = "Error in processing weave: %(msg)s"
1345
def __init__(self, msg=None):
1346
BzrError.__init__(self)
1350
class WeaveRevisionAlreadyPresent(WeaveError):
1352
_fmt = "Revision {%(revision_id)s} already present in %(weave)s"
1354
def __init__(self, revision_id, weave):
1356
WeaveError.__init__(self)
1357
self.revision_id = revision_id
1361
class WeaveRevisionNotPresent(WeaveError):
1363
_fmt = "Revision {%(revision_id)s} not present in %(weave)s"
1365
def __init__(self, revision_id, weave):
1366
WeaveError.__init__(self)
1367
self.revision_id = revision_id
1371
class WeaveFormatError(WeaveError):
1373
_fmt = "Weave invariant violated: %(what)s"
1375
def __init__(self, what):
1376
WeaveError.__init__(self)
1380
class WeaveParentMismatch(WeaveError):
1382
_fmt = "Parents are mismatched between two revisions. %(message)s"
1385
class WeaveInvalidChecksum(WeaveError):
1387
_fmt = "Text did not match it's checksum: %(message)s"
1390
class WeaveTextDiffers(WeaveError):
1392
_fmt = ("Weaves differ on text content. Revision:"
1393
" {%(revision_id)s}, %(weave_a)s, %(weave_b)s")
1395
def __init__(self, revision_id, weave_a, weave_b):
1396
WeaveError.__init__(self)
1397
self.revision_id = revision_id
1398
self.weave_a = weave_a
1399
self.weave_b = weave_b
1402
class WeaveTextDiffers(WeaveError):
1404
_fmt = ("Weaves differ on text content. Revision:"
1405
" {%(revision_id)s}, %(weave_a)s, %(weave_b)s")
1407
def __init__(self, revision_id, weave_a, weave_b):
1408
WeaveError.__init__(self)
1409
self.revision_id = revision_id
1410
self.weave_a = weave_a
1411
self.weave_b = weave_b
1119
1414
class VersionedFileError(BzrError):
1121
1416
_fmt = "Versioned file error"
1144
1439
class VersionedFileInvalidChecksum(VersionedFileError):
1146
_fmt = "Text did not match its checksum: %(msg)s"
1441
_fmt = "Text did not match its checksum: %(message)s"
1444
class KnitError(InternalBzrError):
1449
class KnitCorrupt(KnitError):
1451
_fmt = "Knit %(filename)s corrupt: %(how)s"
1453
def __init__(self, filename, how):
1454
KnitError.__init__(self)
1455
self.filename = filename
1459
class SHA1KnitCorrupt(KnitCorrupt):
1461
_fmt = ("Knit %(filename)s corrupt: sha-1 of reconstructed text does not "
1462
"match expected sha-1. key %(key)s expected sha %(expected)s actual "
1465
def __init__(self, filename, actual, expected, key, content):
1466
KnitError.__init__(self)
1467
self.filename = filename
1468
self.actual = actual
1469
self.expected = expected
1471
self.content = content
1474
class KnitDataStreamIncompatible(KnitError):
1475
# Not raised anymore, as we can convert data streams. In future we may
1476
# need it again for more exotic cases, so we're keeping it around for now.
1478
_fmt = "Cannot insert knit data stream of format \"%(stream_format)s\" into knit of format \"%(target_format)s\"."
1480
def __init__(self, stream_format, target_format):
1481
self.stream_format = stream_format
1482
self.target_format = target_format
1485
class KnitDataStreamUnknown(KnitError):
1486
# Indicates a data stream we don't know how to handle.
1488
_fmt = "Cannot parse knit data stream of format \"%(stream_format)s\"."
1490
def __init__(self, stream_format):
1491
self.stream_format = stream_format
1494
class KnitHeaderError(KnitError):
1496
_fmt = 'Knit header error: %(badline)r unexpected for file "%(filename)s".'
1498
def __init__(self, badline, filename):
1499
KnitError.__init__(self)
1500
self.badline = badline
1501
self.filename = filename
1503
class KnitIndexUnknownMethod(KnitError):
1504
"""Raised when we don't understand the storage method.
1506
Currently only 'fulltext' and 'line-delta' are supported.
1509
_fmt = ("Knit index %(filename)s does not have a known method"
1510
" in options: %(options)r")
1512
def __init__(self, filename, options):
1513
KnitError.__init__(self)
1514
self.filename = filename
1515
self.options = options
1149
1518
class RetryWithNewPacks(BzrError):
1389
1732
_fmt = "Working tree has conflicts."
1392
class DependencyNotPresent(BzrError):
1394
_fmt = 'Unable to import library "%(library)s": %(error)s'
1396
def __init__(self, library, error):
1397
BzrError.__init__(self, library=library, error=error)
1735
class ParseConfigError(BzrError):
1737
def __init__(self, errors, filename):
1738
if filename is None:
1740
message = "Error(s) parsing config file %s:\n%s" % \
1741
(filename, ('\n'.join(e.msg for e in errors)))
1742
BzrError.__init__(self, message)
1745
class NoEmailInUsername(BzrError):
1747
_fmt = "%(username)r does not seem to contain a reasonable email address"
1749
def __init__(self, username):
1750
BzrError.__init__(self)
1751
self.username = username
1754
class SigningFailed(BzrError):
1756
_fmt = 'Failed to gpg sign data with command "%(command_line)s"'
1758
def __init__(self, command_line):
1759
BzrError.__init__(self, command_line=command_line)
1400
1762
class WorkingTreeNotRevision(BzrError):
1562
1924
_fmt = "Moving the root directory is not supported at this time"
1565
class TransformRenameFailed(BzrError):
1567
_fmt = "Failed to rename %(from_path)s to %(to_path)s: %(why)s"
1569
def __init__(self, from_path, to_path, why, errno):
1570
self.from_path = from_path
1571
self.to_path = to_path
1576
1927
class BzrMoveFailedError(BzrError):
1578
_fmt = ("Could not move %(from_path)s%(operator)s %(to_path)s"
1579
"%(_has_extra)s%(extra)s")
1929
_fmt = "Could not move %(from_path)s%(operator)s %(to_path)s%(extra)s"
1581
1931
def __init__(self, from_path='', to_path='', extra=None):
1582
from breezy.osutils import splitpath
1932
from bzrlib.osutils import splitpath
1583
1933
BzrError.__init__(self)
1585
self.extra, self._has_extra = extra, ': '
1935
self.extra = ': ' + str(extra)
1587
self.extra = self._has_extra = ''
1589
1939
has_from = len(from_path) > 0
1590
1940
has_to = len(to_path) > 0
1612
1962
class BzrRenameFailedError(BzrMoveFailedError):
1614
_fmt = ("Could not rename %(from_path)s%(operator)s %(to_path)s"
1615
"%(_has_extra)s%(extra)s")
1964
_fmt = "Could not rename %(from_path)s%(operator)s %(to_path)s%(extra)s"
1617
1966
def __init__(self, from_path, to_path, extra=None):
1618
1967
BzrMoveFailedError.__init__(self, from_path, to_path, extra)
1969
class BzrRemoveChangedFilesError(BzrError):
1970
"""Used when user is trying to remove changed files."""
1972
_fmt = ("Can't safely remove modified or unknown files:\n"
1973
"%(changes_as_text)s"
1974
"Use --keep to not delete them, or --force to delete them regardless.")
1976
def __init__(self, tree_delta):
1977
BzrError.__init__(self)
1978
self.changes_as_text = tree_delta.get_changes_as_text()
1979
#self.paths_as_string = '\n'.join(changed_files)
1980
#self.paths_as_string = '\n'.join([quotefn(p) for p in changed_files])
1621
1983
class BzrBadParameterNotString(BzrBadParameter):
2158
2538
self.tag_name = tag_name
2541
class MalformedBugIdentifier(BzrError):
2543
_fmt = ('Did not understand bug identifier %(bug_id)s: %(reason)s. '
2544
'See "bzr help bugs" for more information on this feature.')
2546
def __init__(self, bug_id, reason):
2547
self.bug_id = bug_id
2548
self.reason = reason
2551
class InvalidBugTrackerURL(BzrError):
2553
_fmt = ("The URL for bug tracker \"%(abbreviation)s\" doesn't "
2554
"contain {id}: %(url)s")
2556
def __init__(self, abbreviation, url):
2557
self.abbreviation = abbreviation
2561
class UnknownBugTrackerAbbreviation(BzrError):
2563
_fmt = ("Cannot find registered bug tracker called %(abbreviation)s "
2566
def __init__(self, abbreviation, branch):
2567
self.abbreviation = abbreviation
2568
self.branch = branch
2571
class InvalidLineInBugsProperty(BzrError):
2573
_fmt = ("Invalid line in bugs property: '%(line)s'")
2575
def __init__(self, line):
2579
class InvalidBugStatus(BzrError):
2581
_fmt = ("Invalid bug status: '%(status)s'")
2583
def __init__(self, status):
2584
self.status = status
2161
2587
class UnexpectedSmartServerResponse(BzrError):
2163
2589
_fmt = "Could not understand response from smart server: %(response_tuple)r"
2188
2614
class UnknownErrorFromSmartServer(BzrError):
2189
"""An ErrorFromSmartServer could not be translated into a typical breezy
2615
"""An ErrorFromSmartServer could not be translated into a typical bzrlib
2192
2618
This is distinct from ErrorFromSmartServer so that it is possible to
2193
2619
distinguish between the following two cases:
2195
- ErrorFromSmartServer was uncaught. This is logic error in the client
2196
and so should provoke a traceback to the user.
2197
- ErrorFromSmartServer was caught but its error_tuple could not be
2198
translated. This is probably because the server sent us garbage, and
2199
should not provoke a traceback.
2620
- ErrorFromSmartServer was uncaught. This is logic error in the client
2621
and so should provoke a traceback to the user.
2622
- ErrorFromSmartServer was caught but its error_tuple could not be
2623
translated. This is probably because the server sent us garbage, and
2624
should not provoke a traceback.
2202
2627
_fmt = "Server sent an unexpected error: %(error_tuple)r"
2269
2699
self.reason = reason
2702
class SMTPError(BzrError):
2704
_fmt = "SMTP error: %(error)s"
2706
def __init__(self, error):
2710
class NoMessageSupplied(BzrError):
2712
_fmt = "No message supplied."
2715
class NoMailAddressSpecified(BzrError):
2717
_fmt = "No mail-to address (--mail-to) or output (-o) specified."
2720
class UnknownMailClient(BzrError):
2722
_fmt = "Unknown mail client: %(mail_client)s"
2724
def __init__(self, mail_client):
2725
BzrError.__init__(self, mail_client=mail_client)
2728
class MailClientNotFound(BzrError):
2730
_fmt = "Unable to find mail client with the following names:"\
2731
" %(mail_command_list_string)s"
2733
def __init__(self, mail_command_list):
2734
mail_command_list_string = ', '.join(mail_command_list)
2735
BzrError.__init__(self, mail_command_list=mail_command_list,
2736
mail_command_list_string=mail_command_list_string)
2738
class SMTPConnectionRefused(SMTPError):
2740
_fmt = "SMTP connection to %(host)s refused"
2742
def __init__(self, error, host):
2747
class DefaultSMTPConnectionRefused(SMTPConnectionRefused):
2749
_fmt = "Please specify smtp_server. No server at default %(host)s."
2752
class BzrDirError(BzrError):
2754
def __init__(self, bzrdir):
2755
import bzrlib.urlutils as urlutils
2756
display_url = urlutils.unescape_for_display(bzrdir.root_transport.base,
2758
BzrError.__init__(self, bzrdir=bzrdir, display_url=display_url)
2761
class UnsyncedBranches(BzrDirError):
2763
_fmt = ("'%(display_url)s' is not in sync with %(target_url)s. See"
2764
" bzr help sync-for-reconfigure.")
2766
def __init__(self, bzrdir, target_branch):
2767
BzrDirError.__init__(self, bzrdir)
2768
import bzrlib.urlutils as urlutils
2769
self.target_url = urlutils.unescape_for_display(target_branch.base,
2773
class AlreadyBranch(BzrDirError):
2775
_fmt = "'%(display_url)s' is already a branch."
2778
class AlreadyTree(BzrDirError):
2780
_fmt = "'%(display_url)s' is already a tree."
2783
class AlreadyCheckout(BzrDirError):
2785
_fmt = "'%(display_url)s' is already a checkout."
2788
class AlreadyLightweightCheckout(BzrDirError):
2790
_fmt = "'%(display_url)s' is already a lightweight checkout."
2793
class AlreadyUsingShared(BzrDirError):
2795
_fmt = "'%(display_url)s' is already using a shared repository."
2798
class AlreadyStandalone(BzrDirError):
2800
_fmt = "'%(display_url)s' is already standalone."
2803
class AlreadyWithTrees(BzrDirError):
2805
_fmt = ("Shared repository '%(display_url)s' already creates "
2809
class AlreadyWithNoTrees(BzrDirError):
2811
_fmt = ("Shared repository '%(display_url)s' already doesn't create "
2815
class ReconfigurationNotSupported(BzrDirError):
2817
_fmt = "Requested reconfiguration of '%(display_url)s' is not supported."
2820
class NoBindLocation(BzrDirError):
2822
_fmt = "No location could be found to bind to at %(display_url)s."
2272
2825
class UncommittedChanges(BzrError):
2274
2827
_fmt = ('Working tree "%(display_url)s" has uncommitted changes'
2275
' (See brz status).%(more)s')
2828
' (See bzr status).%(more)s')
2277
2830
def __init__(self, tree, more=None):
2278
2831
if more is None:
2281
2834
more = ' ' + more
2282
import breezy.urlutils as urlutils
2283
user_url = getattr(tree, "user_url", None)
2284
if user_url is None:
2285
display_url = str(tree)
2287
display_url = urlutils.unescape_for_display(user_url, 'ascii')
2835
import bzrlib.urlutils as urlutils
2836
display_url = urlutils.unescape_for_display(
2837
tree.bzrdir.root_transport.base, 'ascii')
2288
2838
BzrError.__init__(self, tree=tree, display_url=display_url, more=more)
2291
class StoringUncommittedNotSupported(BzrError):
2293
_fmt = ('Branch "%(display_url)s" does not support storing uncommitted'
2296
def __init__(self, branch):
2297
import breezy.urlutils as urlutils
2298
user_url = getattr(branch, "user_url", None)
2299
if user_url is None:
2300
display_url = str(branch)
2302
display_url = urlutils.unescape_for_display(user_url, 'ascii')
2303
BzrError.__init__(self, branch=branch, display_url=display_url)
2306
class ShelvedChanges(UncommittedChanges):
2308
_fmt = ('Working tree "%(display_url)s" has shelved changes'
2309
' (See brz shelve --list).%(more)s')
2841
class MissingTemplateVariable(BzrError):
2843
_fmt = 'Variable {%(name)s} is not available.'
2845
def __init__(self, name):
2849
class NoTemplate(BzrError):
2851
_fmt = 'No template specified.'
2312
2854
class UnableCreateSymlink(BzrError):
2324
2866
self.path_str = path_str
2869
class UnsupportedTimezoneFormat(BzrError):
2871
_fmt = ('Unsupported timezone format "%(timezone)s", '
2872
'options are "utc", "original", "local".')
2874
def __init__(self, timezone):
2875
self.timezone = timezone
2878
class CommandAvailableInPlugin(StandardError):
2880
internal_error = False
2882
def __init__(self, cmd_name, plugin_metadata, provider):
2884
self.plugin_metadata = plugin_metadata
2885
self.cmd_name = cmd_name
2886
self.provider = provider
2890
_fmt = ('"%s" is not a standard bzr command. \n'
2891
'However, the following official plugin provides this command: %s\n'
2892
'You can install it by going to: %s'
2893
% (self.cmd_name, self.plugin_metadata['name'],
2894
self.plugin_metadata['url']))
2899
class NoPluginAvailable(BzrError):
2327
2903
class UnableEncodePath(BzrError):
2329
2905
_fmt = ('Unable to encode %(kind)s path %(path)r in '
2330
2906
'user encoding %(user_encoding)s')
2332
2908
def __init__(self, path, kind):
2333
from breezy.osutils import get_user_encoding
2909
from bzrlib.osutils import get_user_encoding
2334
2910
self.path = path
2335
2911
self.kind = kind
2336
self.user_encoding = get_user_encoding()
2912
self.user_encoding = osutils.get_user_encoding()
2339
2915
class NoSuchAlias(BzrError):
2354
2952
orig_error=repr(orig_error.args))
2955
class UnknownRules(BzrError):
2957
_fmt = ('Unknown rules detected: %(unknowns_str)s.')
2959
def __init__(self, unknowns):
2960
BzrError.__init__(self, unknowns_str=", ".join(unknowns))
2963
class HookFailed(BzrError):
2964
"""Raised when a pre_change_branch_tip hook function fails anything other
2965
than TipChangeRejected.
2967
Note that this exception is no longer raised, and the import is only left
2968
to be nice to code which might catch it in a plugin.
2971
_fmt = ("Hook '%(hook_name)s' during %(hook_stage)s failed:\n"
2972
"%(traceback_text)s%(exc_value)s")
2974
def __init__(self, hook_stage, hook_name, exc_info, warn=True):
2976
symbol_versioning.warn("BzrError HookFailed has been deprecated "
2977
"as of bzrlib 2.1.", DeprecationWarning, stacklevel=2)
2979
self.hook_stage = hook_stage
2980
self.hook_name = hook_name
2981
self.exc_info = exc_info
2982
self.exc_type = exc_info[0]
2983
self.exc_value = exc_info[1]
2984
self.exc_tb = exc_info[2]
2985
self.traceback_text = ''.join(traceback.format_tb(self.exc_tb))
2357
2988
class TipChangeRejected(BzrError):
2358
2989
"""A pre_change_branch_tip hook function may raise this to cleanly and
2359
2990
explicitly abort a change to a branch tip.
2378
3030
_fmt = 'The user aborted the operation.'
3033
class MustHaveWorkingTree(BzrError):
3035
_fmt = ("Branching '%(url)s'(%(format)s) must create a working tree.")
3037
def __init__(self, format, url):
3038
BzrError.__init__(self, format=format, url=url)
3041
class NoSuchView(BzrError):
3042
"""A view does not exist.
3045
_fmt = u"No such view: %(view_name)s."
3047
def __init__(self, view_name):
3048
self.view_name = view_name
3051
class ViewsNotSupported(BzrError):
3052
"""Views are not supported by a tree format.
3055
_fmt = ("Views are not supported by %(tree)s;"
3056
" use 'bzr upgrade' to change your tree to a later format.")
3058
def __init__(self, tree):
3062
class FileOutsideView(BzrError):
3064
_fmt = ('Specified file "%(file_name)s" is outside the current view: '
3067
def __init__(self, file_name, view_files):
3068
self.file_name = file_name
3069
self.view_str = ", ".join(view_files)
2381
3072
class UnresumableWriteGroup(BzrError):
2383
3074
_fmt = ("Repository %(repository)s cannot resume write group "
2425
3116
self.target_branch = target_branch
2428
class NoColocatedBranchSupport(BzrError):
2430
_fmt = ("%(controldir)r does not support co-located branches.")
2432
def __init__(self, controldir):
2433
self.controldir = controldir
2436
class RecursiveBind(BzrError):
2438
_fmt = ('Branch "%(branch_url)s" appears to be bound to itself. '
2439
'Please use `brz unbind` to fix.')
2441
def __init__(self, branch_url):
2442
self.branch_url = branch_url
2445
class UnsupportedKindChange(BzrError):
2447
_fmt = ("Kind change from %(from_kind)s to %(to_kind)s for "
2448
"%(path)s not supported by format %(format)r")
2450
def __init__(self, path, from_kind, to_kind, format):
3119
class FileTimestampUnavailable(BzrError):
3121
_fmt = "The filestamp for %(path)s is not available."
3123
internal_error = True
3125
def __init__(self, path):
2451
3126
self.path = path
2452
self.from_kind = from_kind
2453
self.to_kind = to_kind
2454
self.format = format
2457
class ChangesAlreadyStored(BzrCommandError):
2459
_fmt = ('Cannot store uncommitted changes because this branch already'
2460
' stores uncommitted changes.')