/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/errors.py

  • Committer: Robert Collins
  • Date: 2009-08-24 21:05:09 UTC
  • mto: This revision was merged to the branch mainline in revision 4645.
  • Revision ID: robertc@robertcollins.net-20090824210509-pproia2q9evq1nsl
lsprof support.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2010 Canonical Ltd
 
1
# Copyright (C) 2005, 2006, 2007, 2008 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
680
680
 
681
681
    _fmt = 'Path "%(path)s" is not a child of path "%(base)s"%(extra)s'
682
682
 
683
 
    internal_error = False
 
683
    internal_error = True
684
684
 
685
685
    def __init__(self, path, base, extra=None):
686
686
        BzrError.__init__(self)
702
702
# TODO: Probably this behavior of should be a common superclass
703
703
class NotBranchError(PathError):
704
704
 
705
 
    _fmt = 'Not a branch: "%(path)s"%(detail)s.'
 
705
    _fmt = 'Not a branch: "%(path)s".'
706
706
 
707
 
    def __init__(self, path, detail=None, bzrdir=None):
 
707
    def __init__(self, path):
708
708
       import bzrlib.urlutils as urlutils
709
 
       path = urlutils.unescape_for_display(path, 'ascii')
710
 
       if detail is not None:
711
 
           detail = ': ' + detail
712
 
       self.detail = detail
713
 
       self.bzrdir = bzrdir
714
 
       PathError.__init__(self, path=path)
715
 
 
716
 
    def _format(self):
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.
720
 
        if self.detail is None:
721
 
            if self.bzrdir is not None:
722
 
                try:
723
 
                    self.bzrdir.open_repository()
724
 
                except NoRepositoryPresent:
725
 
                    self.detail = ''
726
 
                else:
727
 
                    self.detail = ': location is a repository'
728
 
            else:
729
 
                self.detail = ''
730
 
        return PathError._format(self)
 
709
       self.path = urlutils.unescape_for_display(path, 'ascii')
731
710
 
732
711
 
733
712
class NoSubmitBranch(PathError):
782
761
 
783
762
    _fmt = 'File "%(path)s" is not in branch %(branch_base)s.'
784
763
 
785
 
    # use PathNotChild instead
786
 
    @symbol_versioning.deprecated_method(symbol_versioning.deprecated_in((2, 3, 0)))
787
764
    def __init__(self, branch, path):
788
765
        BzrError.__init__(self)
789
766
        self.branch = branch
816
793
 
817
794
 
818
795
class IncompatibleRepositories(BzrError):
819
 
    """Report an error that two repositories are not compatible.
820
 
 
821
 
    Note that the source and target repositories are permitted to be strings:
822
 
    this exception is thrown from the smart server and may refer to a
823
 
    repository the client hasn't opened.
824
 
    """
825
796
 
826
797
    _fmt = "%(target)s\n" \
827
798
            "is not compatible with\n" \
949
920
    # original exception is available as e.original_error
950
921
    #
951
922
    # New code should prefer to raise specific subclasses
952
 
    def __init__(self, msg):
953
 
        self.msg = msg
 
923
    def __init__(self, message):
 
924
        # Python 2.5 uses a slot for StandardError.message,
 
925
        # so use a different variable name.  We now work around this in
 
926
        # BzrError.__str__, but this member name is kept for compatability.
 
927
        self.msg = message
954
928
 
955
929
 
956
930
class LockActive(LockError):
1040
1014
class LockContention(LockError):
1041
1015
 
1042
1016
    _fmt = 'Could not acquire lock "%(lock)s": %(msg)s'
 
1017
    # TODO: show full url for lock, combining the transport and relative
 
1018
    # bits?
1043
1019
 
1044
1020
    internal_error = False
1045
1021
 
1176
1152
 
1177
1153
class InvalidRevisionSpec(BzrError):
1178
1154
 
1179
 
    _fmt = ("Requested revision: '%(spec)s' does not exist in branch:"
1180
 
            " %(branch_url)s%(extra)s")
 
1155
    _fmt = ("Requested revision: %(spec)r does not exist in branch:"
 
1156
            " %(branch)s%(extra)s")
1181
1157
 
1182
1158
    def __init__(self, spec, branch, extra=None):
1183
1159
        BzrError.__init__(self, branch=branch, spec=spec)
1184
 
        self.branch_url = getattr(branch, 'user_url', str(branch))
1185
1160
        if extra:
1186
1161
            self.extra = '\n' + str(extra)
1187
1162
        else:
1266
1241
class AmbiguousBase(BzrError):
1267
1242
 
1268
1243
    def __init__(self, bases):
1269
 
        symbol_versioning.warn("BzrError AmbiguousBase has been deprecated "
1270
 
            "as of bzrlib 0.8.", DeprecationWarning, stacklevel=2)
 
1244
        warn("BzrError AmbiguousBase has been deprecated as of bzrlib 0.8.",
 
1245
                DeprecationWarning)
1271
1246
        msg = ("The correct base is unclear, because %s are all equally close"
1272
1247
                % ", ".join(bases))
1273
1248
        BzrError.__init__(self, msg)
1295
1270
class BoundBranchOutOfDate(BzrError):
1296
1271
 
1297
1272
    _fmt = ("Bound branch %(branch)s is out of date with master branch"
1298
 
            " %(master)s.%(extra_help)s")
 
1273
            " %(master)s.")
1299
1274
 
1300
1275
    def __init__(self, branch, master):
1301
1276
        BzrError.__init__(self)
1302
1277
        self.branch = branch
1303
1278
        self.master = master
1304
 
        self.extra_help = ''
1305
1279
 
1306
1280
 
1307
1281
class CommitToDoubleBoundBranch(BzrError):
1378
1352
 
1379
1353
class WeaveParentMismatch(WeaveError):
1380
1354
 
1381
 
    _fmt = "Parents are mismatched between two revisions. %(msg)s"
 
1355
    _fmt = "Parents are mismatched between two revisions. %(message)s"
1382
1356
 
1383
1357
 
1384
1358
class WeaveInvalidChecksum(WeaveError):
1385
1359
 
1386
 
    _fmt = "Text did not match it's checksum: %(msg)s"
 
1360
    _fmt = "Text did not match it's checksum: %(message)s"
1387
1361
 
1388
1362
 
1389
1363
class WeaveTextDiffers(WeaveError):
1437
1411
 
1438
1412
class VersionedFileInvalidChecksum(VersionedFileError):
1439
1413
 
1440
 
    _fmt = "Text did not match its checksum: %(msg)s"
 
1414
    _fmt = "Text did not match its checksum: %(message)s"
1441
1415
 
1442
1416
 
1443
1417
class KnitError(InternalBzrError):
1923
1897
    _fmt = "Moving the root directory is not supported at this time"
1924
1898
 
1925
1899
 
1926
 
class TransformRenameFailed(BzrError):
1927
 
 
1928
 
    _fmt = "Failed to rename %(from_path)s to %(to_path)s: %(why)s"
1929
 
 
1930
 
    def __init__(self, from_path, to_path, why, errno):
1931
 
        self.from_path = from_path
1932
 
        self.to_path = to_path
1933
 
        self.why = why
1934
 
        self.errno = errno
1935
 
 
1936
 
 
1937
1900
class BzrMoveFailedError(BzrError):
1938
1901
 
1939
1902
    _fmt = "Could not move %(from_path)s%(operator)s %(to_path)s%(extra)s"
2185
2148
 
2186
2149
    def __init__(self, repo):
2187
2150
        BzrError.__init__(self)
2188
 
        self.repo_path = repo.user_url
 
2151
        self.repo_path = repo.bzrdir.root_transport.base
2189
2152
 
2190
2153
 
2191
2154
class InconsistentDelta(BzrError):
2763
2726
 
2764
2727
    def __init__(self, bzrdir):
2765
2728
        import bzrlib.urlutils as urlutils
2766
 
        display_url = urlutils.unescape_for_display(bzrdir.user_url,
 
2729
        display_url = urlutils.unescape_for_display(bzrdir.root_transport.base,
2767
2730
                                                    'ascii')
2768
2731
        BzrError.__init__(self, bzrdir=bzrdir, display_url=display_url)
2769
2732
 
2843
2806
        else:
2844
2807
            more = ' ' + more
2845
2808
        import bzrlib.urlutils as urlutils
2846
 
        user_url = getattr(tree, "user_url", None)
2847
 
        if user_url is None:
2848
 
            display_url = str(tree)
2849
 
        else:
2850
 
            display_url = urlutils.unescape_for_display(user_url, 'ascii')
 
2809
        display_url = urlutils.unescape_for_display(
 
2810
            tree.bzrdir.root_transport.base, 'ascii')
2851
2811
        BzrError.__init__(self, tree=tree, display_url=display_url, more=more)
2852
2812
 
2853
2813
 
2854
 
class ShelvedChanges(UncommittedChanges):
2855
 
 
2856
 
    _fmt = ('Working tree "%(display_url)s" has shelved changes'
2857
 
            ' (See bzr shelve --list).%(more)s')
2858
 
 
2859
 
 
2860
2814
class MissingTemplateVariable(BzrError):
2861
2815
 
2862
2816
    _fmt = 'Variable {%(name)s} is not available.'
2982
2936
class HookFailed(BzrError):
2983
2937
    """Raised when a pre_change_branch_tip hook function fails anything other
2984
2938
    than TipChangeRejected.
2985
 
 
2986
 
    Note that this exception is no longer raised, and the import is only left
2987
 
    to be nice to code which might catch it in a plugin.
2988
2939
    """
2989
2940
 
2990
2941
    _fmt = ("Hook '%(hook_name)s' during %(hook_stage)s failed:\n"
2991
2942
            "%(traceback_text)s%(exc_value)s")
2992
2943
 
2993
 
    def __init__(self, hook_stage, hook_name, exc_info, warn=True):
2994
 
        if warn:
2995
 
            symbol_versioning.warn("BzrError HookFailed has been deprecated "
2996
 
                "as of bzrlib 2.1.", DeprecationWarning, stacklevel=2)
 
2944
    def __init__(self, hook_stage, hook_name, exc_info):
2997
2945
        import traceback
2998
2946
        self.hook_stage = hook_stage
2999
2947
        self.hook_name = hook_name
3121
3069
    def __init__(self, source_branch, target_branch):
3122
3070
        self.source_branch = source_branch
3123
3071
        self.target_branch = target_branch
3124
 
 
3125
 
 
3126
 
class NoRoundtrippingSupport(BzrError):
3127
 
 
3128
 
    _fmt = ("Roundtripping is not supported between %(source_branch)r and "
3129
 
            "%(target_branch)r.")
3130
 
 
3131
 
    internal_error = True
3132
 
 
3133
 
    def __init__(self, source_branch, target_branch):
3134
 
        self.source_branch = source_branch
3135
 
        self.target_branch = target_branch
3136
 
 
3137
 
 
3138
 
class FileTimestampUnavailable(BzrError):
3139
 
 
3140
 
    _fmt = "The filestamp for %(path)s is not available."
3141
 
 
3142
 
    internal_error = True
3143
 
 
3144
 
    def __init__(self, path):
3145
 
        self.path = path
3146
 
 
3147
 
 
3148
 
class NoColocatedBranchSupport(BzrError):
3149
 
 
3150
 
    _fmt = ("%(bzrdir)r does not support co-located branches.")
3151
 
 
3152
 
    def __init__(self, bzrdir):
3153
 
        self.bzrdir = bzrdir
3154
 
 
3155
 
 
3156
 
class NoWhoami(BzrError):
3157
 
 
3158
 
    _fmt = ('Unable to determine your name.\n'
3159
 
        "Please, set your name with the 'whoami' command.\n"
3160
 
        'E.g. bzr whoami "Your Name <name@example.com>"')
3161
 
 
3162
 
 
3163
 
class InvalidPattern(BzrError):
3164
 
 
3165
 
    _fmt = ('Invalid pattern(s) found. %(msg)s')
3166
 
 
3167
 
    def __init__(self, msg):
3168
 
        self.msg = msg
3169
 
 
3170
 
 
3171
 
class RecursiveBind(BzrError):
3172
 
 
3173
 
    _fmt = ('Branch "%(branch_url)s" appears to be bound to itself. '
3174
 
        'Please use `bzr unbind` to fix.')
3175
 
 
3176
 
    def __init__(self, branch_url):
3177
 
        self.branch_url = branch_url
3178