/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 J. Tanner
  • Date: 2009-06-10 03:56:49 UTC
  • mfrom: (4423 +trunk)
  • mto: This revision was merged to the branch mainline in revision 4425.
  • Revision ID: tanner@real-time.com-20090610035649-7rfx4cls4550zc3c
Merge 1.15.1 back to trunk

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
636
636
        self.url = url
637
637
 
638
638
 
639
 
class UnstackableLocationError(BzrError):
640
 
 
641
 
    _fmt = "The branch '%(branch_url)s' cannot be stacked on '%(target_url)s'."
642
 
 
643
 
    def __init__(self, branch_url, target_url):
644
 
        BzrError.__init__(self)
645
 
        self.branch_url = branch_url
646
 
        self.target_url = target_url
647
 
 
648
 
 
649
639
class UnstackableRepositoryFormat(BzrError):
650
640
 
651
641
    _fmt = ("The repository '%(url)s'(%(format)s) is not a stackable format. "
680
670
 
681
671
    _fmt = 'Path "%(path)s" is not a child of path "%(base)s"%(extra)s'
682
672
 
683
 
    internal_error = False
 
673
    internal_error = True
684
674
 
685
675
    def __init__(self, path, base, extra=None):
686
676
        BzrError.__init__(self)
702
692
# TODO: Probably this behavior of should be a common superclass
703
693
class NotBranchError(PathError):
704
694
 
705
 
    _fmt = 'Not a branch: "%(path)s"%(detail)s.'
 
695
    _fmt = 'Not a branch: "%(path)s".'
706
696
 
707
 
    def __init__(self, path, detail=None, bzrdir=None):
 
697
    def __init__(self, path):
708
698
       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)
 
699
       self.path = urlutils.unescape_for_display(path, 'ascii')
731
700
 
732
701
 
733
702
class NoSubmitBranch(PathError):
782
751
 
783
752
    _fmt = 'File "%(path)s" is not in branch %(branch_base)s.'
784
753
 
785
 
    # use PathNotChild instead
786
 
    @symbol_versioning.deprecated_method(symbol_versioning.deprecated_in((2, 3, 0)))
787
754
    def __init__(self, branch, path):
788
755
        BzrError.__init__(self)
789
756
        self.branch = branch
816
783
 
817
784
 
818
785
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
786
 
826
787
    _fmt = "%(target)s\n" \
827
788
            "is not compatible with\n" \
949
910
    # original exception is available as e.original_error
950
911
    #
951
912
    # New code should prefer to raise specific subclasses
952
 
    def __init__(self, msg):
953
 
        self.msg = msg
 
913
    def __init__(self, message):
 
914
        # Python 2.5 uses a slot for StandardError.message,
 
915
        # so use a different variable name.  We now work around this in
 
916
        # BzrError.__str__, but this member name is kept for compatability.
 
917
        self.msg = message
954
918
 
955
919
 
956
920
class LockActive(LockError):
1040
1004
class LockContention(LockError):
1041
1005
 
1042
1006
    _fmt = 'Could not acquire lock "%(lock)s": %(msg)s'
 
1007
    # TODO: show full url for lock, combining the transport and relative
 
1008
    # bits?
1043
1009
 
1044
1010
    internal_error = False
1045
1011
 
1176
1142
 
1177
1143
class InvalidRevisionSpec(BzrError):
1178
1144
 
1179
 
    _fmt = ("Requested revision: '%(spec)s' does not exist in branch:"
1180
 
            " %(branch_url)s%(extra)s")
 
1145
    _fmt = ("Requested revision: %(spec)r does not exist in branch:"
 
1146
            " %(branch)s%(extra)s")
1181
1147
 
1182
1148
    def __init__(self, spec, branch, extra=None):
1183
1149
        BzrError.__init__(self, branch=branch, spec=spec)
1184
 
        self.branch_url = getattr(branch, 'user_url', str(branch))
1185
1150
        if extra:
1186
1151
            self.extra = '\n' + str(extra)
1187
1152
        else:
1266
1231
class AmbiguousBase(BzrError):
1267
1232
 
1268
1233
    def __init__(self, bases):
1269
 
        symbol_versioning.warn("BzrError AmbiguousBase has been deprecated "
1270
 
            "as of bzrlib 0.8.", DeprecationWarning, stacklevel=2)
 
1234
        warn("BzrError AmbiguousBase has been deprecated as of bzrlib 0.8.",
 
1235
                DeprecationWarning)
1271
1236
        msg = ("The correct base is unclear, because %s are all equally close"
1272
1237
                % ", ".join(bases))
1273
1238
        BzrError.__init__(self, msg)
1295
1260
class BoundBranchOutOfDate(BzrError):
1296
1261
 
1297
1262
    _fmt = ("Bound branch %(branch)s is out of date with master branch"
1298
 
            " %(master)s.%(extra_help)s")
 
1263
            " %(master)s.")
1299
1264
 
1300
1265
    def __init__(self, branch, master):
1301
1266
        BzrError.__init__(self)
1302
1267
        self.branch = branch
1303
1268
        self.master = master
1304
 
        self.extra_help = ''
1305
1269
 
1306
1270
 
1307
1271
class CommitToDoubleBoundBranch(BzrError):
1378
1342
 
1379
1343
class WeaveParentMismatch(WeaveError):
1380
1344
 
1381
 
    _fmt = "Parents are mismatched between two revisions. %(msg)s"
 
1345
    _fmt = "Parents are mismatched between two revisions. %(message)s"
1382
1346
 
1383
1347
 
1384
1348
class WeaveInvalidChecksum(WeaveError):
1385
1349
 
1386
 
    _fmt = "Text did not match it's checksum: %(msg)s"
 
1350
    _fmt = "Text did not match it's checksum: %(message)s"
1387
1351
 
1388
1352
 
1389
1353
class WeaveTextDiffers(WeaveError):
1437
1401
 
1438
1402
class VersionedFileInvalidChecksum(VersionedFileError):
1439
1403
 
1440
 
    _fmt = "Text did not match its checksum: %(msg)s"
 
1404
    _fmt = "Text did not match its checksum: %(message)s"
1441
1405
 
1442
1406
 
1443
1407
class KnitError(InternalBzrError):
1923
1887
    _fmt = "Moving the root directory is not supported at this time"
1924
1888
 
1925
1889
 
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
1890
class BzrMoveFailedError(BzrError):
1938
1891
 
1939
1892
    _fmt = "Could not move %(from_path)s%(operator)s %(to_path)s%(extra)s"
2043
1996
 
2044
1997
class BadConversionTarget(BzrError):
2045
1998
 
2046
 
    _fmt = "Cannot convert from format %(from_format)s to format %(format)s." \
2047
 
            "    %(problem)s"
 
1999
    _fmt = "Cannot convert to format %(format)s.  %(problem)s"
2048
2000
 
2049
 
    def __init__(self, problem, format, from_format=None):
 
2001
    def __init__(self, problem, format):
2050
2002
        BzrError.__init__(self)
2051
2003
        self.problem = problem
2052
2004
        self.format = format
2053
 
        self.from_format = from_format or '(unspecified)'
2054
2005
 
2055
2006
 
2056
2007
class NoDiffFound(BzrError):
2132
2083
 
2133
2084
class OutOfDateTree(BzrError):
2134
2085
 
2135
 
    _fmt = "Working tree is out of date, please run 'bzr update'.%(more)s"
 
2086
    _fmt = "Working tree is out of date, please run 'bzr update'."
2136
2087
 
2137
 
    def __init__(self, tree, more=None):
2138
 
        if more is None:
2139
 
            more = ''
2140
 
        else:
2141
 
            more = ' ' + more
 
2088
    def __init__(self, tree):
2142
2089
        BzrError.__init__(self)
2143
2090
        self.tree = tree
2144
 
        self.more = more
2145
2091
 
2146
2092
 
2147
2093
class PublicBranchOutOfDate(BzrError):
2185
2131
 
2186
2132
    def __init__(self, repo):
2187
2133
        BzrError.__init__(self)
2188
 
        self.repo_path = repo.user_url
 
2134
        self.repo_path = repo.bzrdir.root_transport.base
2189
2135
 
2190
2136
 
2191
2137
class InconsistentDelta(BzrError):
2201
2147
        self.reason = reason
2202
2148
 
2203
2149
 
2204
 
class InconsistentDeltaDelta(InconsistentDelta):
2205
 
    """Used when we get a delta that is not valid."""
2206
 
 
2207
 
    _fmt = ("An inconsistent delta was supplied: %(delta)r"
2208
 
            "\nreason: %(reason)s")
2209
 
 
2210
 
    def __init__(self, delta, reason):
2211
 
        BzrError.__init__(self)
2212
 
        self.delta = delta
2213
 
        self.reason = reason
2214
 
 
2215
 
 
2216
2150
class UpgradeRequired(BzrError):
2217
2151
 
2218
2152
    _fmt = "To use this feature you must upgrade your branch at %(path)s."
2227
2161
    _fmt = "To use this feature you must upgrade your repository at %(path)s."
2228
2162
 
2229
2163
 
2230
 
class RichRootUpgradeRequired(UpgradeRequired):
2231
 
 
2232
 
    _fmt = ("To use this feature you must upgrade your branch at %(path)s to"
2233
 
           " a format which supports rich roots.")
2234
 
 
2235
 
 
2236
2164
class LocalRequiresBoundBranch(BzrError):
2237
2165
 
2238
2166
    _fmt = "Cannot perform local-only commits on unbound branches."
2239
2167
 
2240
2168
 
 
2169
class InvalidProgressBarType(BzrError):
 
2170
 
 
2171
    _fmt = ("Environment variable BZR_PROGRESS_BAR='%(bar_type)s"
 
2172
            " is not a supported type Select one of: %(valid_types)s")
 
2173
 
 
2174
    def __init__(self, bar_type, valid_types):
 
2175
        BzrError.__init__(self, bar_type=bar_type, valid_types=valid_types)
 
2176
 
 
2177
 
2241
2178
class UnsupportedOperation(BzrError):
2242
2179
 
2243
2180
    _fmt = ("The method %(mname)s is not supported on"
2763
2700
 
2764
2701
    def __init__(self, bzrdir):
2765
2702
        import bzrlib.urlutils as urlutils
2766
 
        display_url = urlutils.unescape_for_display(bzrdir.user_url,
 
2703
        display_url = urlutils.unescape_for_display(bzrdir.root_transport.base,
2767
2704
                                                    'ascii')
2768
2705
        BzrError.__init__(self, bzrdir=bzrdir, display_url=display_url)
2769
2706
 
2834
2771
 
2835
2772
class UncommittedChanges(BzrError):
2836
2773
 
2837
 
    _fmt = ('Working tree "%(display_url)s" has uncommitted changes'
2838
 
            ' (See bzr status).%(more)s')
 
2774
    _fmt = 'Working tree "%(display_url)s" has uncommitted changes.'
2839
2775
 
2840
 
    def __init__(self, tree, more=None):
2841
 
        if more is None:
2842
 
            more = ''
2843
 
        else:
2844
 
            more = ' ' + more
 
2776
    def __init__(self, tree):
2845
2777
        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')
2851
 
        BzrError.__init__(self, tree=tree, display_url=display_url, more=more)
2852
 
 
2853
 
 
2854
 
class ShelvedChanges(UncommittedChanges):
2855
 
 
2856
 
    _fmt = ('Working tree "%(display_url)s" has shelved changes'
2857
 
            ' (See bzr shelve --list).%(more)s')
 
2778
        display_url = urlutils.unescape_for_display(
 
2779
            tree.bzrdir.root_transport.base, 'ascii')
 
2780
        BzrError.__init__(self, tree=tree, display_url=display_url)
2858
2781
 
2859
2782
 
2860
2783
class MissingTemplateVariable(BzrError):
2966
2889
    _fmt = 'Cannot bind address "%(host)s:%(port)i": %(orig_error)s.'
2967
2890
 
2968
2891
    def __init__(self, host, port, orig_error):
2969
 
        # nb: in python2.4 socket.error doesn't have a useful repr
2970
2892
        BzrError.__init__(self, host=host, port=port,
2971
 
            orig_error=repr(orig_error.args))
 
2893
            orig_error=orig_error[1])
2972
2894
 
2973
2895
 
2974
2896
class UnknownRules(BzrError):
2982
2904
class HookFailed(BzrError):
2983
2905
    """Raised when a pre_change_branch_tip hook function fails anything other
2984
2906
    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
2907
    """
2989
2908
 
2990
2909
    _fmt = ("Hook '%(hook_name)s' during %(hook_stage)s failed:\n"
2991
2910
            "%(traceback_text)s%(exc_value)s")
2992
2911
 
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)
 
2912
    def __init__(self, hook_stage, hook_name, exc_info):
2997
2913
        import traceback
2998
2914
        self.hook_stage = hook_stage
2999
2915
        self.hook_name = hook_name
3121
3037
    def __init__(self, source_branch, target_branch):
3122
3038
        self.source_branch = source_branch
3123
3039
        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