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)
418
class UnstackableLocationError(BzrError):
420
_fmt = "The branch '%(branch_url)s' cannot be stacked on '%(target_url)s'."
422
def __init__(self, branch_url, target_url):
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):
423
634
BzrError.__init__(self)
424
self.branch_url = branch_url
425
self.target_url = target_url
428
639
class UnstackableRepositoryFormat(BzrError):
481
692
# TODO: Probably this behavior of should be a common superclass
482
693
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'
695
_fmt = 'Not a branch: "%(path)s".'
697
def __init__(self, path):
698
import bzrlib.urlutils as urlutils
699
self.path = urlutils.unescape_for_display(path, 'ascii')
524
702
class NoSubmitBranch(PathError):
526
704
_fmt = 'No submit branch available for branch "%(path)s"'
528
706
def __init__(self, branch):
529
from . import urlutils
707
import bzrlib.urlutils as urlutils
530
708
self.path = urlutils.unescape_for_display(branch.base, 'ascii')
533
class AlreadyControlDirError(PathError):
535
_fmt = 'A control directory already exists: "%(path)s".'
538
711
class AlreadyBranchError(PathError):
540
713
_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
716
class BranchExistsWithoutWorkingTree(PathError):
559
718
_fmt = 'Directory contains a branch, but no working tree \
560
(use brz checkout if you wish to build a working tree): "%(path)s"'
719
(use bzr checkout if you wish to build a working tree): "%(path)s"'
722
class AtomicFileAlreadyClosed(PathError):
724
_fmt = ('"%(function)s" called on an AtomicFile after it was closed:'
727
def __init__(self, path, function):
728
PathError.__init__(self, path=path, extra=None)
729
self.function = function
563
732
class InaccessibleParent(PathError):
595
775
class IncompatibleFormat(BzrError):
597
_fmt = "Format %(format)s is not compatible with .bzr version %(controldir)s."
599
def __init__(self, format, controldir_format):
600
BzrError.__init__(self)
602
self.controldir = controldir_format
605
class ParseFormatError(BzrError):
607
_fmt = "Parse error on line %(lineno)d of %(format)s format: %(line)s"
609
def __init__(self, format, lineno, line, text):
610
BzrError.__init__(self)
777
_fmt = "Format %(format)s is not compatible with .bzr version %(bzrdir)s."
779
def __init__(self, format, bzrdir_format):
780
BzrError.__init__(self)
782
self.bzrdir = bzrdir_format
617
785
class IncompatibleRepositories(BzrError):
618
"""Report an error that two repositories are not compatible.
620
Note that the source and target repositories are permitted to be strings:
621
this exception is thrown from the smart server and may refer to a
622
repository the client hasn't opened.
625
787
_fmt = "%(target)s\n" \
626
788
"is not compatible with\n" \
1106
1301
self.error = error
1304
class WeaveError(BzrError):
1306
_fmt = "Error in processing weave: %(msg)s"
1308
def __init__(self, msg=None):
1309
BzrError.__init__(self)
1313
class WeaveRevisionAlreadyPresent(WeaveError):
1315
_fmt = "Revision {%(revision_id)s} already present in %(weave)s"
1317
def __init__(self, revision_id, weave):
1319
WeaveError.__init__(self)
1320
self.revision_id = revision_id
1324
class WeaveRevisionNotPresent(WeaveError):
1326
_fmt = "Revision {%(revision_id)s} not present in %(weave)s"
1328
def __init__(self, revision_id, weave):
1329
WeaveError.__init__(self)
1330
self.revision_id = revision_id
1334
class WeaveFormatError(WeaveError):
1336
_fmt = "Weave invariant violated: %(what)s"
1338
def __init__(self, what):
1339
WeaveError.__init__(self)
1343
class WeaveParentMismatch(WeaveError):
1345
_fmt = "Parents are mismatched between two revisions. %(message)s"
1348
class WeaveInvalidChecksum(WeaveError):
1350
_fmt = "Text did not match it's checksum: %(message)s"
1353
class WeaveTextDiffers(WeaveError):
1355
_fmt = ("Weaves differ on text content. Revision:"
1356
" {%(revision_id)s}, %(weave_a)s, %(weave_b)s")
1358
def __init__(self, revision_id, weave_a, weave_b):
1359
WeaveError.__init__(self)
1360
self.revision_id = revision_id
1361
self.weave_a = weave_a
1362
self.weave_b = weave_b
1365
class WeaveTextDiffers(WeaveError):
1367
_fmt = ("Weaves differ on text content. Revision:"
1368
" {%(revision_id)s}, %(weave_a)s, %(weave_b)s")
1370
def __init__(self, revision_id, weave_a, weave_b):
1371
WeaveError.__init__(self)
1372
self.revision_id = revision_id
1373
self.weave_a = weave_a
1374
self.weave_b = weave_b
1109
1377
class VersionedFileError(BzrError):
1111
1379
_fmt = "Versioned file error"
1134
1402
class VersionedFileInvalidChecksum(VersionedFileError):
1136
_fmt = "Text did not match its checksum: %(msg)s"
1404
_fmt = "Text did not match its checksum: %(message)s"
1407
class KnitError(InternalBzrError):
1412
class KnitCorrupt(KnitError):
1414
_fmt = "Knit %(filename)s corrupt: %(how)s"
1416
def __init__(self, filename, how):
1417
KnitError.__init__(self)
1418
self.filename = filename
1422
class SHA1KnitCorrupt(KnitCorrupt):
1424
_fmt = ("Knit %(filename)s corrupt: sha-1 of reconstructed text does not "
1425
"match expected sha-1. key %(key)s expected sha %(expected)s actual "
1428
def __init__(self, filename, actual, expected, key, content):
1429
KnitError.__init__(self)
1430
self.filename = filename
1431
self.actual = actual
1432
self.expected = expected
1434
self.content = content
1437
class KnitDataStreamIncompatible(KnitError):
1438
# Not raised anymore, as we can convert data streams. In future we may
1439
# need it again for more exotic cases, so we're keeping it around for now.
1441
_fmt = "Cannot insert knit data stream of format \"%(stream_format)s\" into knit of format \"%(target_format)s\"."
1443
def __init__(self, stream_format, target_format):
1444
self.stream_format = stream_format
1445
self.target_format = target_format
1448
class KnitDataStreamUnknown(KnitError):
1449
# Indicates a data stream we don't know how to handle.
1451
_fmt = "Cannot parse knit data stream of format \"%(stream_format)s\"."
1453
def __init__(self, stream_format):
1454
self.stream_format = stream_format
1457
class KnitHeaderError(KnitError):
1459
_fmt = 'Knit header error: %(badline)r unexpected for file "%(filename)s".'
1461
def __init__(self, badline, filename):
1462
KnitError.__init__(self)
1463
self.badline = badline
1464
self.filename = filename
1466
class KnitIndexUnknownMethod(KnitError):
1467
"""Raised when we don't understand the storage method.
1469
Currently only 'fulltext' and 'line-delta' are supported.
1472
_fmt = ("Knit index %(filename)s does not have a known method"
1473
" in options: %(options)r")
1475
def __init__(self, filename, options):
1476
KnitError.__init__(self)
1477
self.filename = filename
1478
self.options = options
1139
1481
class RetryWithNewPacks(BzrError):
1379
1695
_fmt = "Working tree has conflicts."
1382
class DependencyNotPresent(BzrError):
1384
_fmt = 'Unable to import library "%(library)s": %(error)s'
1386
def __init__(self, library, error):
1387
BzrError.__init__(self, library=library, error=error)
1698
class ParseConfigError(BzrError):
1700
def __init__(self, errors, filename):
1701
if filename is None:
1703
message = "Error(s) parsing config file %s:\n%s" % \
1704
(filename, ('\n'.join(e.msg for e in errors)))
1705
BzrError.__init__(self, message)
1708
class NoEmailInUsername(BzrError):
1710
_fmt = "%(username)r does not seem to contain a reasonable email address"
1712
def __init__(self, username):
1713
BzrError.__init__(self)
1714
self.username = username
1717
class SigningFailed(BzrError):
1719
_fmt = 'Failed to gpg sign data with command "%(command_line)s"'
1721
def __init__(self, command_line):
1722
BzrError.__init__(self, command_line=command_line)
1390
1725
class WorkingTreeNotRevision(BzrError):
1546
1887
_fmt = "Moving the root directory is not supported at this time"
1549
class TransformRenameFailed(BzrError):
1551
_fmt = "Failed to rename %(from_path)s to %(to_path)s: %(why)s"
1553
def __init__(self, from_path, to_path, why, errno):
1554
self.from_path = from_path
1555
self.to_path = to_path
1560
1890
class BzrMoveFailedError(BzrError):
1562
_fmt = ("Could not move %(from_path)s%(operator)s %(to_path)s"
1563
"%(_has_extra)s%(extra)s")
1892
_fmt = "Could not move %(from_path)s%(operator)s %(to_path)s%(extra)s"
1565
1894
def __init__(self, from_path='', to_path='', extra=None):
1566
from breezy.osutils import splitpath
1895
from bzrlib.osutils import splitpath
1567
1896
BzrError.__init__(self)
1569
self.extra, self._has_extra = extra, ': '
1898
self.extra = ': ' + str(extra)
1571
self.extra = self._has_extra = ''
1573
1902
has_from = len(from_path) > 0
1574
1903
has_to = len(to_path) > 0
1596
1925
class BzrRenameFailedError(BzrMoveFailedError):
1598
_fmt = ("Could not rename %(from_path)s%(operator)s %(to_path)s"
1599
"%(_has_extra)s%(extra)s")
1927
_fmt = "Could not rename %(from_path)s%(operator)s %(to_path)s%(extra)s"
1601
1929
def __init__(self, from_path, to_path, extra=None):
1602
1930
BzrMoveFailedError.__init__(self, from_path, to_path, extra)
1932
class BzrRemoveChangedFilesError(BzrError):
1933
"""Used when user is trying to remove changed files."""
1935
_fmt = ("Can't safely remove modified or unknown files:\n"
1936
"%(changes_as_text)s"
1937
"Use --keep to not delete them, or --force to delete them regardless.")
1939
def __init__(self, tree_delta):
1940
BzrError.__init__(self)
1941
self.changes_as_text = tree_delta.get_changes_as_text()
1942
#self.paths_as_string = '\n'.join(changed_files)
1943
#self.paths_as_string = '\n'.join([quotefn(p) for p in changed_files])
1605
1946
class BzrBadParameterNotString(BzrBadParameter):
2142
2485
self.tag_name = tag_name
2488
class MalformedBugIdentifier(BzrError):
2490
_fmt = ('Did not understand bug identifier %(bug_id)s: %(reason)s. '
2491
'See "bzr help bugs" for more information on this feature.')
2493
def __init__(self, bug_id, reason):
2494
self.bug_id = bug_id
2495
self.reason = reason
2498
class InvalidBugTrackerURL(BzrError):
2500
_fmt = ("The URL for bug tracker \"%(abbreviation)s\" doesn't "
2501
"contain {id}: %(url)s")
2503
def __init__(self, abbreviation, url):
2504
self.abbreviation = abbreviation
2508
class UnknownBugTrackerAbbreviation(BzrError):
2510
_fmt = ("Cannot find registered bug tracker called %(abbreviation)s "
2513
def __init__(self, abbreviation, branch):
2514
self.abbreviation = abbreviation
2515
self.branch = branch
2518
class InvalidLineInBugsProperty(BzrError):
2520
_fmt = ("Invalid line in bugs property: '%(line)s'")
2522
def __init__(self, line):
2526
class InvalidBugStatus(BzrError):
2528
_fmt = ("Invalid bug status: '%(status)s'")
2530
def __init__(self, status):
2531
self.status = status
2145
2534
class UnexpectedSmartServerResponse(BzrError):
2147
2536
_fmt = "Could not understand response from smart server: %(response_tuple)r"
2172
2561
class UnknownErrorFromSmartServer(BzrError):
2173
"""An ErrorFromSmartServer could not be translated into a typical breezy
2562
"""An ErrorFromSmartServer could not be translated into a typical bzrlib
2176
2565
This is distinct from ErrorFromSmartServer so that it is possible to
2177
2566
distinguish between the following two cases:
2179
- ErrorFromSmartServer was uncaught. This is logic error in the client
2180
and so should provoke a traceback to the user.
2181
- ErrorFromSmartServer was caught but its error_tuple could not be
2182
translated. This is probably because the server sent us garbage, and
2183
should not provoke a traceback.
2567
- ErrorFromSmartServer was uncaught. This is logic error in the client
2568
and so should provoke a traceback to the user.
2569
- ErrorFromSmartServer was caught but its error_tuple could not be
2570
translated. This is probably because the server sent us garbage, and
2571
should not provoke a traceback.
2186
2574
_fmt = "Server sent an unexpected error: %(error_tuple)r"
2253
2646
self.reason = reason
2649
class SMTPError(BzrError):
2651
_fmt = "SMTP error: %(error)s"
2653
def __init__(self, error):
2657
class NoMessageSupplied(BzrError):
2659
_fmt = "No message supplied."
2662
class NoMailAddressSpecified(BzrError):
2664
_fmt = "No mail-to address (--mail-to) or output (-o) specified."
2667
class UnknownMailClient(BzrError):
2669
_fmt = "Unknown mail client: %(mail_client)s"
2671
def __init__(self, mail_client):
2672
BzrError.__init__(self, mail_client=mail_client)
2675
class MailClientNotFound(BzrError):
2677
_fmt = "Unable to find mail client with the following names:"\
2678
" %(mail_command_list_string)s"
2680
def __init__(self, mail_command_list):
2681
mail_command_list_string = ', '.join(mail_command_list)
2682
BzrError.__init__(self, mail_command_list=mail_command_list,
2683
mail_command_list_string=mail_command_list_string)
2685
class SMTPConnectionRefused(SMTPError):
2687
_fmt = "SMTP connection to %(host)s refused"
2689
def __init__(self, error, host):
2694
class DefaultSMTPConnectionRefused(SMTPConnectionRefused):
2696
_fmt = "Please specify smtp_server. No server at default %(host)s."
2699
class BzrDirError(BzrError):
2701
def __init__(self, bzrdir):
2702
import bzrlib.urlutils as urlutils
2703
display_url = urlutils.unescape_for_display(bzrdir.root_transport.base,
2705
BzrError.__init__(self, bzrdir=bzrdir, display_url=display_url)
2708
class UnsyncedBranches(BzrDirError):
2710
_fmt = ("'%(display_url)s' is not in sync with %(target_url)s. See"
2711
" bzr help sync-for-reconfigure.")
2713
def __init__(self, bzrdir, target_branch):
2714
BzrDirError.__init__(self, bzrdir)
2715
import bzrlib.urlutils as urlutils
2716
self.target_url = urlutils.unescape_for_display(target_branch.base,
2720
class AlreadyBranch(BzrDirError):
2722
_fmt = "'%(display_url)s' is already a branch."
2725
class AlreadyTree(BzrDirError):
2727
_fmt = "'%(display_url)s' is already a tree."
2730
class AlreadyCheckout(BzrDirError):
2732
_fmt = "'%(display_url)s' is already a checkout."
2735
class AlreadyLightweightCheckout(BzrDirError):
2737
_fmt = "'%(display_url)s' is already a lightweight checkout."
2740
class AlreadyUsingShared(BzrDirError):
2742
_fmt = "'%(display_url)s' is already using a shared repository."
2745
class AlreadyStandalone(BzrDirError):
2747
_fmt = "'%(display_url)s' is already standalone."
2750
class AlreadyWithTrees(BzrDirError):
2752
_fmt = ("Shared repository '%(display_url)s' already creates "
2756
class AlreadyWithNoTrees(BzrDirError):
2758
_fmt = ("Shared repository '%(display_url)s' already doesn't create "
2762
class ReconfigurationNotSupported(BzrDirError):
2764
_fmt = "Requested reconfiguration of '%(display_url)s' is not supported."
2767
class NoBindLocation(BzrDirError):
2769
_fmt = "No location could be found to bind to at %(display_url)s."
2256
2772
class UncommittedChanges(BzrError):
2258
_fmt = ('Working tree "%(display_url)s" has uncommitted changes'
2259
' (See brz status).%(more)s')
2261
def __init__(self, tree, more=None):
2266
import breezy.urlutils as urlutils
2267
user_url = getattr(tree, "user_url", None)
2268
if user_url is None:
2269
display_url = str(tree)
2271
display_url = urlutils.unescape_for_display(user_url, 'ascii')
2272
BzrError.__init__(self, tree=tree, display_url=display_url, more=more)
2275
class StoringUncommittedNotSupported(BzrError):
2277
_fmt = ('Branch "%(display_url)s" does not support storing uncommitted'
2280
def __init__(self, branch):
2281
import breezy.urlutils as urlutils
2282
user_url = getattr(branch, "user_url", None)
2283
if user_url is None:
2284
display_url = str(branch)
2286
display_url = urlutils.unescape_for_display(user_url, 'ascii')
2287
BzrError.__init__(self, branch=branch, display_url=display_url)
2290
class ShelvedChanges(UncommittedChanges):
2292
_fmt = ('Working tree "%(display_url)s" has shelved changes'
2293
' (See brz shelve --list).%(more)s')
2774
_fmt = 'Working tree "%(display_url)s" has uncommitted changes.'
2776
def __init__(self, tree):
2777
import bzrlib.urlutils as urlutils
2778
display_url = urlutils.unescape_for_display(
2779
tree.bzrdir.root_transport.base, 'ascii')
2780
BzrError.__init__(self, tree=tree, display_url=display_url)
2783
class MissingTemplateVariable(BzrError):
2785
_fmt = 'Variable {%(name)s} is not available.'
2787
def __init__(self, name):
2791
class NoTemplate(BzrError):
2793
_fmt = 'No template specified.'
2296
2796
class UnableCreateSymlink(BzrError):
2308
2808
self.path_str = path_str
2811
class UnsupportedTimezoneFormat(BzrError):
2813
_fmt = ('Unsupported timezone format "%(timezone)s", '
2814
'options are "utc", "original", "local".')
2816
def __init__(self, timezone):
2817
self.timezone = timezone
2820
class CommandAvailableInPlugin(StandardError):
2822
internal_error = False
2824
def __init__(self, cmd_name, plugin_metadata, provider):
2826
self.plugin_metadata = plugin_metadata
2827
self.cmd_name = cmd_name
2828
self.provider = provider
2832
_fmt = ('"%s" is not a standard bzr command. \n'
2833
'However, the following official plugin provides this command: %s\n'
2834
'You can install it by going to: %s'
2835
% (self.cmd_name, self.plugin_metadata['name'],
2836
self.plugin_metadata['url']))
2841
class NoPluginAvailable(BzrError):
2311
2845
class UnableEncodePath(BzrError):
2313
2847
_fmt = ('Unable to encode %(kind)s path %(path)r in '
2314
2848
'user encoding %(user_encoding)s')
2316
2850
def __init__(self, path, kind):
2317
from breezy.osutils import get_user_encoding
2851
from bzrlib.osutils import get_user_encoding
2318
2852
self.path = path
2319
2853
self.kind = kind
2320
self.user_encoding = get_user_encoding()
2854
self.user_encoding = osutils.get_user_encoding()
2323
2857
class NoSuchAlias(BzrError):
2328
2862
BzrError.__init__(self, alias_name=alias_name)
2865
class DirectoryLookupFailure(BzrError):
2866
"""Base type for lookup errors."""
2871
class InvalidLocationAlias(DirectoryLookupFailure):
2873
_fmt = '"%(alias_name)s" is not a valid location alias.'
2875
def __init__(self, alias_name):
2876
DirectoryLookupFailure.__init__(self, alias_name=alias_name)
2879
class UnsetLocationAlias(DirectoryLookupFailure):
2881
_fmt = 'No %(alias_name)s location assigned.'
2883
def __init__(self, alias_name):
2884
DirectoryLookupFailure.__init__(self, alias_name=alias_name[1:])
2331
2887
class CannotBindAddress(BzrError):
2333
2889
_fmt = 'Cannot bind address "%(host)s:%(port)i": %(orig_error)s.'
2335
2891
def __init__(self, host, port, orig_error):
2336
# nb: in python2.4 socket.error doesn't have a useful repr
2337
2892
BzrError.__init__(self, host=host, port=port,
2338
orig_error=repr(orig_error.args))
2893
orig_error=orig_error[1])
2896
class UnknownRules(BzrError):
2898
_fmt = ('Unknown rules detected: %(unknowns_str)s.')
2900
def __init__(self, unknowns):
2901
BzrError.__init__(self, unknowns_str=", ".join(unknowns))
2904
class HookFailed(BzrError):
2905
"""Raised when a pre_change_branch_tip hook function fails anything other
2906
than TipChangeRejected.
2909
_fmt = ("Hook '%(hook_name)s' during %(hook_stage)s failed:\n"
2910
"%(traceback_text)s%(exc_value)s")
2912
def __init__(self, hook_stage, hook_name, exc_info):
2914
self.hook_stage = hook_stage
2915
self.hook_name = hook_name
2916
self.exc_info = exc_info
2917
self.exc_type = exc_info[0]
2918
self.exc_value = exc_info[1]
2919
self.exc_tb = exc_info[2]
2920
self.traceback_text = ''.join(traceback.format_tb(self.exc_tb))
2341
2923
class TipChangeRejected(BzrError):
2362
2965
_fmt = 'The user aborted the operation.'
2968
class MustHaveWorkingTree(BzrError):
2970
_fmt = ("Branching '%(url)s'(%(format)s) must create a working tree.")
2972
def __init__(self, format, url):
2973
BzrError.__init__(self, format=format, url=url)
2976
class NoSuchView(BzrError):
2977
"""A view does not exist.
2980
_fmt = u"No such view: %(view_name)s."
2982
def __init__(self, view_name):
2983
self.view_name = view_name
2986
class ViewsNotSupported(BzrError):
2987
"""Views are not supported by a tree format.
2990
_fmt = ("Views are not supported by %(tree)s;"
2991
" use 'bzr upgrade' to change your tree to a later format.")
2993
def __init__(self, tree):
2997
class FileOutsideView(BzrError):
2999
_fmt = ('Specified file "%(file_name)s" is outside the current view: '
3002
def __init__(self, file_name, view_files):
3003
self.file_name = file_name
3004
self.view_str = ", ".join(view_files)
2365
3007
class UnresumableWriteGroup(BzrError):
2367
3009
_fmt = ("Repository %(repository)s cannot resume write group "
2395
3037
def __init__(self, source_branch, target_branch):
2396
3038
self.source_branch = source_branch
2397
3039
self.target_branch = target_branch
2400
class NoRoundtrippingSupport(BzrError):
2402
_fmt = ("Roundtripping is not supported between %(source_branch)r and "
2403
"%(target_branch)r.")
2405
internal_error = True
2407
def __init__(self, source_branch, target_branch):
2408
self.source_branch = source_branch
2409
self.target_branch = target_branch
2412
class NoColocatedBranchSupport(BzrError):
2414
_fmt = ("%(controldir)r does not support co-located branches.")
2416
def __init__(self, controldir):
2417
self.controldir = controldir
2420
class RecursiveBind(BzrError):
2422
_fmt = ('Branch "%(branch_url)s" appears to be bound to itself. '
2423
'Please use `brz unbind` to fix.')
2425
def __init__(self, branch_url):
2426
self.branch_url = branch_url
2429
class UnsupportedKindChange(BzrError):
2431
_fmt = ("Kind change from %(from_kind)s to %(to_kind)s for "
2432
"%(path)s not supported by format %(format)r")
2434
def __init__(self, path, from_kind, to_kind, format):
2436
self.from_kind = from_kind
2437
self.to_kind = to_kind
2438
self.format = format
2441
class ChangesAlreadyStored(BzrCommandError):
2443
_fmt = ('Cannot store uncommitted changes because this branch already'
2444
' stores uncommitted changes.')