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'."
481
702
# TODO: Probably this behavior of should be a common superclass
482
703
class NotBranchError(PathError):
484
_fmt = 'Not a branch: "%(path)s"%(detail)s.'
486
def __init__(self, path, detail=None, controldir=None):
487
from . import urlutils
488
path = urlutils.unescape_for_display(path, 'ascii')
489
if detail is not None:
490
detail = ': ' + detail
492
self.controldir = controldir
493
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.
500
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__
520
return ': location is a repository'
705
_fmt = 'Not a branch: "%(path)s".'
707
def __init__(self, path):
708
import bzrlib.urlutils as urlutils
709
self.path = urlutils.unescape_for_display(path, 'ascii')
524
712
class NoSubmitBranch(PathError):
526
714
_fmt = 'No submit branch available for branch "%(path)s"'
528
716
def __init__(self, branch):
529
from . import urlutils
717
import bzrlib.urlutils as urlutils
530
718
self.path = urlutils.unescape_for_display(branch.base, 'ascii')
533
class AlreadyControlDirError(PathError):
535
_fmt = 'A control directory already exists: "%(path)s".'
538
721
class AlreadyBranchError(PathError):
540
723
_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
726
class BranchExistsWithoutWorkingTree(PathError):
559
728
_fmt = 'Directory contains a branch, but no working tree \
560
(use brz checkout if you wish to build a working tree): "%(path)s"'
729
(use bzr checkout if you wish to build a working tree): "%(path)s"'
563
732
class AtomicFileAlreadyClosed(PathError):
1116
1317
self.error = error
1320
class WeaveError(BzrError):
1322
_fmt = "Error in processing weave: %(msg)s"
1324
def __init__(self, msg=None):
1325
BzrError.__init__(self)
1329
class WeaveRevisionAlreadyPresent(WeaveError):
1331
_fmt = "Revision {%(revision_id)s} already present in %(weave)s"
1333
def __init__(self, revision_id, weave):
1335
WeaveError.__init__(self)
1336
self.revision_id = revision_id
1340
class WeaveRevisionNotPresent(WeaveError):
1342
_fmt = "Revision {%(revision_id)s} not present in %(weave)s"
1344
def __init__(self, revision_id, weave):
1345
WeaveError.__init__(self)
1346
self.revision_id = revision_id
1350
class WeaveFormatError(WeaveError):
1352
_fmt = "Weave invariant violated: %(what)s"
1354
def __init__(self, what):
1355
WeaveError.__init__(self)
1359
class WeaveParentMismatch(WeaveError):
1361
_fmt = "Parents are mismatched between two revisions. %(message)s"
1364
class WeaveInvalidChecksum(WeaveError):
1366
_fmt = "Text did not match it's checksum: %(message)s"
1369
class WeaveTextDiffers(WeaveError):
1371
_fmt = ("Weaves differ on text content. Revision:"
1372
" {%(revision_id)s}, %(weave_a)s, %(weave_b)s")
1374
def __init__(self, revision_id, weave_a, weave_b):
1375
WeaveError.__init__(self)
1376
self.revision_id = revision_id
1377
self.weave_a = weave_a
1378
self.weave_b = weave_b
1381
class WeaveTextDiffers(WeaveError):
1383
_fmt = ("Weaves differ on text content. Revision:"
1384
" {%(revision_id)s}, %(weave_a)s, %(weave_b)s")
1386
def __init__(self, revision_id, weave_a, weave_b):
1387
WeaveError.__init__(self)
1388
self.revision_id = revision_id
1389
self.weave_a = weave_a
1390
self.weave_b = weave_b
1119
1393
class VersionedFileError(BzrError):
1121
1395
_fmt = "Versioned file error"
1144
1418
class VersionedFileInvalidChecksum(VersionedFileError):
1146
_fmt = "Text did not match its checksum: %(msg)s"
1420
_fmt = "Text did not match its checksum: %(message)s"
1423
class KnitError(InternalBzrError):
1428
class KnitCorrupt(KnitError):
1430
_fmt = "Knit %(filename)s corrupt: %(how)s"
1432
def __init__(self, filename, how):
1433
KnitError.__init__(self)
1434
self.filename = filename
1438
class SHA1KnitCorrupt(KnitCorrupt):
1440
_fmt = ("Knit %(filename)s corrupt: sha-1 of reconstructed text does not "
1441
"match expected sha-1. key %(key)s expected sha %(expected)s actual "
1444
def __init__(self, filename, actual, expected, key, content):
1445
KnitError.__init__(self)
1446
self.filename = filename
1447
self.actual = actual
1448
self.expected = expected
1450
self.content = content
1453
class KnitDataStreamIncompatible(KnitError):
1454
# Not raised anymore, as we can convert data streams. In future we may
1455
# need it again for more exotic cases, so we're keeping it around for now.
1457
_fmt = "Cannot insert knit data stream of format \"%(stream_format)s\" into knit of format \"%(target_format)s\"."
1459
def __init__(self, stream_format, target_format):
1460
self.stream_format = stream_format
1461
self.target_format = target_format
1464
class KnitDataStreamUnknown(KnitError):
1465
# Indicates a data stream we don't know how to handle.
1467
_fmt = "Cannot parse knit data stream of format \"%(stream_format)s\"."
1469
def __init__(self, stream_format):
1470
self.stream_format = stream_format
1473
class KnitHeaderError(KnitError):
1475
_fmt = 'Knit header error: %(badline)r unexpected for file "%(filename)s".'
1477
def __init__(self, badline, filename):
1478
KnitError.__init__(self)
1479
self.badline = badline
1480
self.filename = filename
1482
class KnitIndexUnknownMethod(KnitError):
1483
"""Raised when we don't understand the storage method.
1485
Currently only 'fulltext' and 'line-delta' are supported.
1488
_fmt = ("Knit index %(filename)s does not have a known method"
1489
" in options: %(options)r")
1491
def __init__(self, filename, options):
1492
KnitError.__init__(self)
1493
self.filename = filename
1494
self.options = options
1149
1497
class RetryWithNewPacks(BzrError):
1389
1711
_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)
1714
class ParseConfigError(BzrError):
1716
def __init__(self, errors, filename):
1717
if filename is None:
1719
message = "Error(s) parsing config file %s:\n%s" % \
1720
(filename, ('\n'.join(e.msg for e in errors)))
1721
BzrError.__init__(self, message)
1724
class NoEmailInUsername(BzrError):
1726
_fmt = "%(username)r does not seem to contain a reasonable email address"
1728
def __init__(self, username):
1729
BzrError.__init__(self)
1730
self.username = username
1733
class SigningFailed(BzrError):
1735
_fmt = 'Failed to gpg sign data with command "%(command_line)s"'
1737
def __init__(self, command_line):
1738
BzrError.__init__(self, command_line=command_line)
1400
1741
class WorkingTreeNotRevision(BzrError):
1562
1903
_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
1906
class BzrMoveFailedError(BzrError):
1578
_fmt = ("Could not move %(from_path)s%(operator)s %(to_path)s"
1579
"%(_has_extra)s%(extra)s")
1908
_fmt = "Could not move %(from_path)s%(operator)s %(to_path)s%(extra)s"
1581
1910
def __init__(self, from_path='', to_path='', extra=None):
1582
from breezy.osutils import splitpath
1911
from bzrlib.osutils import splitpath
1583
1912
BzrError.__init__(self)
1585
self.extra, self._has_extra = extra, ': '
1914
self.extra = ': ' + str(extra)
1587
self.extra = self._has_extra = ''
1589
1918
has_from = len(from_path) > 0
1590
1919
has_to = len(to_path) > 0
1612
1941
class BzrRenameFailedError(BzrMoveFailedError):
1614
_fmt = ("Could not rename %(from_path)s%(operator)s %(to_path)s"
1615
"%(_has_extra)s%(extra)s")
1943
_fmt = "Could not rename %(from_path)s%(operator)s %(to_path)s%(extra)s"
1617
1945
def __init__(self, from_path, to_path, extra=None):
1618
1946
BzrMoveFailedError.__init__(self, from_path, to_path, extra)
1948
class BzrRemoveChangedFilesError(BzrError):
1949
"""Used when user is trying to remove changed files."""
1951
_fmt = ("Can't safely remove modified or unknown files:\n"
1952
"%(changes_as_text)s"
1953
"Use --keep to not delete them, or --force to delete them regardless.")
1955
def __init__(self, tree_delta):
1956
BzrError.__init__(self)
1957
self.changes_as_text = tree_delta.get_changes_as_text()
1958
#self.paths_as_string = '\n'.join(changed_files)
1959
#self.paths_as_string = '\n'.join([quotefn(p) for p in changed_files])
1621
1962
class BzrBadParameterNotString(BzrBadParameter):
2158
2517
self.tag_name = tag_name
2520
class MalformedBugIdentifier(BzrError):
2522
_fmt = ('Did not understand bug identifier %(bug_id)s: %(reason)s. '
2523
'See "bzr help bugs" for more information on this feature.')
2525
def __init__(self, bug_id, reason):
2526
self.bug_id = bug_id
2527
self.reason = reason
2530
class InvalidBugTrackerURL(BzrError):
2532
_fmt = ("The URL for bug tracker \"%(abbreviation)s\" doesn't "
2533
"contain {id}: %(url)s")
2535
def __init__(self, abbreviation, url):
2536
self.abbreviation = abbreviation
2540
class UnknownBugTrackerAbbreviation(BzrError):
2542
_fmt = ("Cannot find registered bug tracker called %(abbreviation)s "
2545
def __init__(self, abbreviation, branch):
2546
self.abbreviation = abbreviation
2547
self.branch = branch
2550
class InvalidLineInBugsProperty(BzrError):
2552
_fmt = ("Invalid line in bugs property: '%(line)s'")
2554
def __init__(self, line):
2558
class InvalidBugStatus(BzrError):
2560
_fmt = ("Invalid bug status: '%(status)s'")
2562
def __init__(self, status):
2563
self.status = status
2161
2566
class UnexpectedSmartServerResponse(BzrError):
2163
2568
_fmt = "Could not understand response from smart server: %(response_tuple)r"
2188
2593
class UnknownErrorFromSmartServer(BzrError):
2189
"""An ErrorFromSmartServer could not be translated into a typical breezy
2594
"""An ErrorFromSmartServer could not be translated into a typical bzrlib
2192
2597
This is distinct from ErrorFromSmartServer so that it is possible to
2193
2598
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.
2599
- ErrorFromSmartServer was uncaught. This is logic error in the client
2600
and so should provoke a traceback to the user.
2601
- ErrorFromSmartServer was caught but its error_tuple could not be
2602
translated. This is probably because the server sent us garbage, and
2603
should not provoke a traceback.
2202
2606
_fmt = "Server sent an unexpected error: %(error_tuple)r"
2269
2678
self.reason = reason
2681
class SMTPError(BzrError):
2683
_fmt = "SMTP error: %(error)s"
2685
def __init__(self, error):
2689
class NoMessageSupplied(BzrError):
2691
_fmt = "No message supplied."
2694
class NoMailAddressSpecified(BzrError):
2696
_fmt = "No mail-to address (--mail-to) or output (-o) specified."
2699
class UnknownMailClient(BzrError):
2701
_fmt = "Unknown mail client: %(mail_client)s"
2703
def __init__(self, mail_client):
2704
BzrError.__init__(self, mail_client=mail_client)
2707
class MailClientNotFound(BzrError):
2709
_fmt = "Unable to find mail client with the following names:"\
2710
" %(mail_command_list_string)s"
2712
def __init__(self, mail_command_list):
2713
mail_command_list_string = ', '.join(mail_command_list)
2714
BzrError.__init__(self, mail_command_list=mail_command_list,
2715
mail_command_list_string=mail_command_list_string)
2717
class SMTPConnectionRefused(SMTPError):
2719
_fmt = "SMTP connection to %(host)s refused"
2721
def __init__(self, error, host):
2726
class DefaultSMTPConnectionRefused(SMTPConnectionRefused):
2728
_fmt = "Please specify smtp_server. No server at default %(host)s."
2731
class BzrDirError(BzrError):
2733
def __init__(self, bzrdir):
2734
import bzrlib.urlutils as urlutils
2735
display_url = urlutils.unescape_for_display(bzrdir.root_transport.base,
2737
BzrError.__init__(self, bzrdir=bzrdir, display_url=display_url)
2740
class UnsyncedBranches(BzrDirError):
2742
_fmt = ("'%(display_url)s' is not in sync with %(target_url)s. See"
2743
" bzr help sync-for-reconfigure.")
2745
def __init__(self, bzrdir, target_branch):
2746
BzrDirError.__init__(self, bzrdir)
2747
import bzrlib.urlutils as urlutils
2748
self.target_url = urlutils.unescape_for_display(target_branch.base,
2752
class AlreadyBranch(BzrDirError):
2754
_fmt = "'%(display_url)s' is already a branch."
2757
class AlreadyTree(BzrDirError):
2759
_fmt = "'%(display_url)s' is already a tree."
2762
class AlreadyCheckout(BzrDirError):
2764
_fmt = "'%(display_url)s' is already a checkout."
2767
class AlreadyLightweightCheckout(BzrDirError):
2769
_fmt = "'%(display_url)s' is already a lightweight checkout."
2772
class AlreadyUsingShared(BzrDirError):
2774
_fmt = "'%(display_url)s' is already using a shared repository."
2777
class AlreadyStandalone(BzrDirError):
2779
_fmt = "'%(display_url)s' is already standalone."
2782
class AlreadyWithTrees(BzrDirError):
2784
_fmt = ("Shared repository '%(display_url)s' already creates "
2788
class AlreadyWithNoTrees(BzrDirError):
2790
_fmt = ("Shared repository '%(display_url)s' already doesn't create "
2794
class ReconfigurationNotSupported(BzrDirError):
2796
_fmt = "Requested reconfiguration of '%(display_url)s' is not supported."
2799
class NoBindLocation(BzrDirError):
2801
_fmt = "No location could be found to bind to at %(display_url)s."
2272
2804
class UncommittedChanges(BzrError):
2274
2806
_fmt = ('Working tree "%(display_url)s" has uncommitted changes'
2275
' (See brz status).%(more)s')
2807
' (See bzr status).%(more)s')
2277
2809
def __init__(self, tree, more=None):
2278
2810
if more is None:
2281
2813
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')
2814
import bzrlib.urlutils as urlutils
2815
display_url = urlutils.unescape_for_display(
2816
tree.bzrdir.root_transport.base, 'ascii')
2288
2817
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')
2820
class MissingTemplateVariable(BzrError):
2822
_fmt = 'Variable {%(name)s} is not available.'
2824
def __init__(self, name):
2828
class NoTemplate(BzrError):
2830
_fmt = 'No template specified.'
2312
2833
class UnableCreateSymlink(BzrError):
2324
2845
self.path_str = path_str
2848
class UnsupportedTimezoneFormat(BzrError):
2850
_fmt = ('Unsupported timezone format "%(timezone)s", '
2851
'options are "utc", "original", "local".')
2853
def __init__(self, timezone):
2854
self.timezone = timezone
2857
class CommandAvailableInPlugin(StandardError):
2859
internal_error = False
2861
def __init__(self, cmd_name, plugin_metadata, provider):
2863
self.plugin_metadata = plugin_metadata
2864
self.cmd_name = cmd_name
2865
self.provider = provider
2869
_fmt = ('"%s" is not a standard bzr command. \n'
2870
'However, the following official plugin provides this command: %s\n'
2871
'You can install it by going to: %s'
2872
% (self.cmd_name, self.plugin_metadata['name'],
2873
self.plugin_metadata['url']))
2878
class NoPluginAvailable(BzrError):
2327
2882
class UnableEncodePath(BzrError):
2329
2884
_fmt = ('Unable to encode %(kind)s path %(path)r in '
2330
2885
'user encoding %(user_encoding)s')
2332
2887
def __init__(self, path, kind):
2333
from breezy.osutils import get_user_encoding
2888
from bzrlib.osutils import get_user_encoding
2334
2889
self.path = path
2335
2890
self.kind = kind
2336
self.user_encoding = get_user_encoding()
2891
self.user_encoding = osutils.get_user_encoding()
2339
2894
class NoSuchAlias(BzrError):
2354
2931
orig_error=repr(orig_error.args))
2934
class UnknownRules(BzrError):
2936
_fmt = ('Unknown rules detected: %(unknowns_str)s.')
2938
def __init__(self, unknowns):
2939
BzrError.__init__(self, unknowns_str=", ".join(unknowns))
2942
class HookFailed(BzrError):
2943
"""Raised when a pre_change_branch_tip hook function fails anything other
2944
than TipChangeRejected.
2946
Note that this exception is no longer raised, and the import is only left
2947
to be nice to code which might catch it in a plugin.
2950
_fmt = ("Hook '%(hook_name)s' during %(hook_stage)s failed:\n"
2951
"%(traceback_text)s%(exc_value)s")
2953
def __init__(self, hook_stage, hook_name, exc_info, warn=True):
2955
symbol_versioning.warn("BzrError HookFailed has been deprecated "
2956
"as of bzrlib 2.1.", DeprecationWarning, stacklevel=2)
2958
self.hook_stage = hook_stage
2959
self.hook_name = hook_name
2960
self.exc_info = exc_info
2961
self.exc_type = exc_info[0]
2962
self.exc_value = exc_info[1]
2963
self.exc_tb = exc_info[2]
2964
self.traceback_text = ''.join(traceback.format_tb(self.exc_tb))
2357
2967
class TipChangeRejected(BzrError):
2358
2968
"""A pre_change_branch_tip hook function may raise this to cleanly and
2359
2969
explicitly abort a change to a branch tip.
2378
3009
_fmt = 'The user aborted the operation.'
3012
class MustHaveWorkingTree(BzrError):
3014
_fmt = ("Branching '%(url)s'(%(format)s) must create a working tree.")
3016
def __init__(self, format, url):
3017
BzrError.__init__(self, format=format, url=url)
3020
class NoSuchView(BzrError):
3021
"""A view does not exist.
3024
_fmt = u"No such view: %(view_name)s."
3026
def __init__(self, view_name):
3027
self.view_name = view_name
3030
class ViewsNotSupported(BzrError):
3031
"""Views are not supported by a tree format.
3034
_fmt = ("Views are not supported by %(tree)s;"
3035
" use 'bzr upgrade' to change your tree to a later format.")
3037
def __init__(self, tree):
3041
class FileOutsideView(BzrError):
3043
_fmt = ('Specified file "%(file_name)s" is outside the current view: '
3046
def __init__(self, file_name, view_files):
3047
self.file_name = file_name
3048
self.view_str = ", ".join(view_files)
2381
3051
class UnresumableWriteGroup(BzrError):
2383
3053
_fmt = ("Repository %(repository)s cannot resume write group "
2423
3093
def __init__(self, source_branch, target_branch):
2424
3094
self.source_branch = source_branch
2425
3095
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):
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.')