106
100
# __str__() should always return a 'str' object
107
101
# never a 'unicode' object.
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.
103
except Exception as e:
105
return 'Unprintable exception %s: dict=%r, fmt=%r, error=%r' \
106
% (self.__class__.__name__,
108
getattr(self, '_fmt', None),
115
return self._format().encode('utf-8')
117
__unicode__ = _format
136
119
def __repr__(self):
137
120
return '%s(%s)' % (self.__class__.__name__, str(self))
140
123
"""Return format string for this exception or None"""
141
124
fmt = getattr(self, '_fmt', None)
142
125
if fmt is not 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' \
151
% (self.__class__.__name__,
153
getattr(self, '_fmt', None),
126
from breezy.i18n import gettext
127
return gettext(fmt) # _fmt strings should be ascii
156
129
def __eq__(self, other):
157
130
if self.__class__ is not other.__class__:
158
131
return NotImplemented
159
132
return self.__dict__ == other.__dict__
162
138
class InternalBzrError(BzrError):
163
139
"""Base class for errors that are internal in nature.
170
146
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."
211
149
class BranchError(BzrError):
212
150
"""Base class for concrete 'errors about a branch'."""
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):
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):
253
172
self.wanted = wanted
254
self.minimum = minimum
255
173
self.current = current
409
313
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)
481
316
class StrictCommitFailed(BzrError):
483
318
_fmt = "Commit refused because there are unknown files in the tree"
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
620
445
class UnsupportedProtocol(PathError):
622
447
_fmt = 'Unsupported protocol for url "%(path)s"%(extra)s'
624
def __init__(self, url, extra):
449
def __init__(self, url, extra=""):
625
450
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)
639
453
class UnstackableLocationError(BzrError):
641
455
_fmt = "The branch '%(branch_url)s' cannot be stacked on '%(target_url)s'."
705
519
_fmt = 'Not a branch: "%(path)s"%(detail)s.'
707
def __init__(self, path, detail=None, bzrdir=None):
708
import bzrlib.urlutils as urlutils
521
def __init__(self, path, detail=None, controldir=None):
522
from . import urlutils
709
523
path = urlutils.unescape_for_display(path, 'ascii')
710
524
if detail is not None:
711
525
detail = ': ' + detail
712
526
self.detail = detail
527
self.controldir = controldir
714
528
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.
531
return '<%s %r>' % (self.__class__.__name__, self.__dict__)
533
def _get_format_string(self):
534
# GZ 2017-06-08: Not the best place to lazy fill detail in.
720
535
if self.detail is None:
721
if self.bzrdir is not None:
723
self.bzrdir.open_repository()
724
except NoRepositoryPresent:
727
self.detail = ': location is a repository'
536
self.detail = self._get_detail()
537
return super(NotBranchError, self)._get_format_string()
539
def _get_detail(self):
540
if self.controldir is not None:
542
self.controldir.open_repository()
543
except NoRepositoryPresent:
545
except Exception as e:
546
# Just ignore unexpected errors. Raising arbitrary errors
547
# during str(err) can provoke strange bugs. Concretely
548
# Launchpad's codehosting managed to raise NotBranchError
549
# here, and then get stuck in an infinite loop/recursion
550
# trying to str() that error. All this error really cares
551
# about that there's no working repository there, and if
552
# open_repository() fails, there probably isn't.
553
return ': ' + e.__class__.__name__
730
return PathError._format(self)
555
return ': location is a repository'
733
559
class NoSubmitBranch(PathError):
735
561
_fmt = 'No submit branch available for branch "%(path)s"'
737
563
def __init__(self, branch):
738
import bzrlib.urlutils as urlutils
564
from . import urlutils
739
565
self.path = urlutils.unescape_for_display(branch.base, 'ascii')
568
class AlreadyControlDirError(PathError):
570
_fmt = 'A control directory already exists: "%(path)s".'
742
573
class AlreadyBranchError(PathError):
744
575
_fmt = 'Already a branch: "%(path)s".'
578
class InvalidBranchName(PathError):
580
_fmt = "Invalid branch name: %(name)s"
582
def __init__(self, name):
583
BzrError.__init__(self)
587
class ParentBranchExists(AlreadyBranchError):
589
_fmt = 'Parent branch already exists: "%(path)s".'
747
592
class BranchExistsWithoutWorkingTree(PathError):
749
594
_fmt = 'Directory contains a branch, but no working tree \
750
(use bzr checkout if you wish to build a working tree): "%(path)s"'
595
(use brz checkout if you wish to build a working tree): "%(path)s"'
753
598
class AtomicFileAlreadyClosed(PathError):
1339
1151
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
1415
1154
class VersionedFileError(BzrError):
1417
1156
_fmt = "Versioned file error"
1733
1498
_fmt = "Working tree has conflicts."
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)
1501
class DependencyNotPresent(BzrError):
1503
_fmt = 'Unable to import library "%(library)s": %(error)s'
1505
def __init__(self, library, error):
1506
BzrError.__init__(self, library=library, error=error)
1763
1509
class WorkingTreeNotRevision(BzrError):
1925
1671
_fmt = "Moving the root directory is not supported at this time"
1674
class TransformRenameFailed(BzrError):
1676
_fmt = "Failed to rename %(from_path)s to %(to_path)s: %(why)s"
1678
def __init__(self, from_path, to_path, why, errno):
1679
self.from_path = from_path
1680
self.to_path = to_path
1928
1685
class BzrMoveFailedError(BzrError):
1930
_fmt = "Could not move %(from_path)s%(operator)s %(to_path)s%(extra)s"
1687
_fmt = ("Could not move %(from_path)s%(operator)s %(to_path)s"
1688
"%(_has_extra)s%(extra)s")
1932
1690
def __init__(self, from_path='', to_path='', extra=None):
1933
from bzrlib.osutils import splitpath
1691
from breezy.osutils import splitpath
1934
1692
BzrError.__init__(self)
1936
self.extra = ': ' + str(extra)
1694
self.extra, self._has_extra = extra, ': '
1696
self.extra = self._has_extra = ''
1940
1698
has_from = len(from_path) > 0
1941
1699
has_to = len(to_path) > 0
1963
1721
class BzrRenameFailedError(BzrMoveFailedError):
1965
_fmt = "Could not rename %(from_path)s%(operator)s %(to_path)s%(extra)s"
1723
_fmt = ("Could not rename %(from_path)s%(operator)s %(to_path)s"
1724
"%(_has_extra)s%(extra)s")
1967
1726
def __init__(self, from_path, to_path, extra=None):
1968
1727
BzrMoveFailedError.__init__(self, from_path, to_path, extra)
1970
class BzrRemoveChangedFilesError(BzrError):
1971
"""Used when user is trying to remove changed files."""
1973
_fmt = ("Can't safely remove modified or unknown files:\n"
1974
"%(changes_as_text)s"
1975
"Use --keep to not delete them, or --force to delete them regardless.")
1977
def __init__(self, tree_delta):
1978
BzrError.__init__(self)
1979
self.changes_as_text = tree_delta.get_changes_as_text()
1980
#self.paths_as_string = '\n'.join(changed_files)
1981
#self.paths_as_string = '\n'.join([quotefn(p) for p in changed_files])
1984
1730
class BzrBadParameterNotString(BzrBadParameter):
2539
2274
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
2588
2277
class UnexpectedSmartServerResponse(BzrError):
2590
2279
_fmt = "Could not understand response from smart server: %(response_tuple)r"
2615
2304
class UnknownErrorFromSmartServer(BzrError):
2616
"""An ErrorFromSmartServer could not be translated into a typical bzrlib
2305
"""An ErrorFromSmartServer could not be translated into a typical breezy
2619
2308
This is distinct from ErrorFromSmartServer so that it is possible to
2620
2309
distinguish between the following two cases:
2621
- ErrorFromSmartServer was uncaught. This is logic error in the client
2622
and so should provoke a traceback to the user.
2623
- ErrorFromSmartServer was caught but its error_tuple could not be
2624
translated. This is probably because the server sent us garbage, and
2625
should not provoke a traceback.
2311
- ErrorFromSmartServer was uncaught. This is logic error in the client
2312
and so should provoke a traceback to the user.
2313
- ErrorFromSmartServer was caught but its error_tuple could not be
2314
translated. This is probably because the server sent us garbage, and
2315
should not provoke a traceback.
2628
2318
_fmt = "Server sent an unexpected error: %(error_tuple)r"
2700
2385
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."
2826
2388
class UncommittedChanges(BzrError):
2828
2390
_fmt = ('Working tree "%(display_url)s" has uncommitted changes'
2829
' (See bzr status).%(more)s')
2391
' (See brz status).%(more)s')
2831
2393
def __init__(self, tree, more=None):
2832
2394
if more is None:
2835
2397
more = ' ' + more
2836
import bzrlib.urlutils as urlutils
2837
display_url = urlutils.unescape_for_display(
2838
tree.user_url, 'ascii')
2398
import breezy.urlutils as urlutils
2399
user_url = getattr(tree, "user_url", None)
2400
if user_url is None:
2401
display_url = str(tree)
2403
display_url = urlutils.unescape_for_display(user_url, 'ascii')
2839
2404
BzrError.__init__(self, tree=tree, display_url=display_url, more=more)
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.'
2407
class StoringUncommittedNotSupported(BzrError):
2409
_fmt = ('Branch "%(display_url)s" does not support storing uncommitted'
2412
def __init__(self, branch):
2413
import breezy.urlutils as urlutils
2414
user_url = getattr(branch, "user_url", None)
2415
if user_url is None:
2416
display_url = str(branch)
2418
display_url = urlutils.unescape_for_display(user_url, 'ascii')
2419
BzrError.__init__(self, branch=branch, display_url=display_url)
2422
class ShelvedChanges(UncommittedChanges):
2424
_fmt = ('Working tree "%(display_url)s" has shelved changes'
2425
' (See brz shelve --list).%(more)s')
2855
2428
class UnableCreateSymlink(BzrError):
2867
2440
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):
2904
2443
class UnableEncodePath(BzrError):
2906
2445
_fmt = ('Unable to encode %(kind)s path %(path)r in '
2907
2446
'user encoding %(user_encoding)s')
2909
2448
def __init__(self, path, kind):
2910
from bzrlib.osutils import get_user_encoding
2449
from breezy.osutils import get_user_encoding
2911
2450
self.path = path
2912
2451
self.kind = kind
2913
self.user_encoding = osutils.get_user_encoding()
2452
self.user_encoding = get_user_encoding()
2916
2455
class NoSuchAlias(BzrError):
2953
2470
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))
2989
2473
class TipChangeRejected(BzrError):
2990
2474
"""A pre_change_branch_tip hook function may raise this to cleanly and
2991
2475
explicitly abort a change to a branch tip.
3031
2494
_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)
3073
2497
class UnresumableWriteGroup(BzrError):
3075
2499
_fmt = ("Repository %(repository)s cannot resume write group "
3117
2541
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):
3130
2544
class NoColocatedBranchSupport(BzrError):
3132
_fmt = ("%(bzrdir)r does not support co-located branches.")
3134
def __init__(self, bzrdir):
3135
self.bzrdir = bzrdir
2546
_fmt = ("%(controldir)r does not support co-located branches.")
2548
def __init__(self, controldir):
2549
self.controldir = controldir
2552
class RecursiveBind(BzrError):
2554
_fmt = ('Branch "%(branch_url)s" appears to be bound to itself. '
2555
'Please use `brz unbind` to fix.')
2557
def __init__(self, branch_url):
2558
self.branch_url = branch_url
2561
class UnsupportedKindChange(BzrError):
2563
_fmt = ("Kind change from %(from_kind)s to %(to_kind)s for "
2564
"%(path)s not supported by format %(format)r")
2566
def __init__(self, path, from_kind, to_kind, format):
2568
self.from_kind = from_kind
2569
self.to_kind = to_kind
2570
self.format = format
2573
class ChangesAlreadyStored(BzrCommandError):
2575
_fmt = ('Cannot store uncommitted changes because this branch already'
2576
' stores uncommitted changes.')