~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/errors.py

  • Committer: Danny van Heumen
  • Date: 2010-03-09 21:42:11 UTC
  • mto: (4634.139.5 2.0)
  • mto: This revision was merged to the branch mainline in revision 5160.
  • Revision ID: danny@dannyvanheumen.nl-20100309214211-iqh42x6qcikgd9p3
Reverted now-useless TODO list.

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
949
926
    # original exception is available as e.original_error
950
927
    #
951
928
    # New code should prefer to raise specific subclasses
952
 
    def __init__(self, msg):
953
 
        self.msg = msg
 
929
    def __init__(self, message):
 
930
        # Python 2.5 uses a slot for StandardError.message,
 
931
        # so use a different variable name.  We now work around this in
 
932
        # BzrError.__str__, but this member name is kept for compatability.
 
933
        self.msg = message
954
934
 
955
935
 
956
936
class LockActive(LockError):
1040
1020
class LockContention(LockError):
1041
1021
 
1042
1022
    _fmt = 'Could not acquire lock "%(lock)s": %(msg)s'
 
1023
    # TODO: show full url for lock, combining the transport and relative
 
1024
    # bits?
1043
1025
 
1044
1026
    internal_error = False
1045
1027
 
1176
1158
 
1177
1159
class InvalidRevisionSpec(BzrError):
1178
1160
 
1179
 
    _fmt = ("Requested revision: '%(spec)s' does not exist in branch:"
1180
 
            " %(branch_url)s%(extra)s")
 
1161
    _fmt = ("Requested revision: %(spec)r does not exist in branch:"
 
1162
            " %(branch)s%(extra)s")
1181
1163
 
1182
1164
    def __init__(self, spec, branch, extra=None):
1183
1165
        BzrError.__init__(self, branch=branch, spec=spec)
1184
 
        self.branch_url = getattr(branch, 'user_url', str(branch))
1185
1166
        if extra:
1186
1167
            self.extra = '\n' + str(extra)
1187
1168
        else:
1266
1247
class AmbiguousBase(BzrError):
1267
1248
 
1268
1249
    def __init__(self, bases):
1269
 
        symbol_versioning.warn("BzrError AmbiguousBase has been deprecated "
1270
 
            "as of bzrlib 0.8.", DeprecationWarning, stacklevel=2)
 
1250
        warn("BzrError AmbiguousBase has been deprecated as of bzrlib 0.8.",
 
1251
                DeprecationWarning)
1271
1252
        msg = ("The correct base is unclear, because %s are all equally close"
1272
1253
                % ", ".join(bases))
1273
1254
        BzrError.__init__(self, msg)
1295
1276
class BoundBranchOutOfDate(BzrError):
1296
1277
 
1297
1278
    _fmt = ("Bound branch %(branch)s is out of date with master branch"
1298
 
            " %(master)s.%(extra_help)s")
 
1279
            " %(master)s.")
1299
1280
 
1300
1281
    def __init__(self, branch, master):
1301
1282
        BzrError.__init__(self)
1302
1283
        self.branch = branch
1303
1284
        self.master = master
1304
 
        self.extra_help = ''
1305
1285
 
1306
1286
 
1307
1287
class CommitToDoubleBoundBranch(BzrError):
1378
1358
 
1379
1359
class WeaveParentMismatch(WeaveError):
1380
1360
 
1381
 
    _fmt = "Parents are mismatched between two revisions. %(msg)s"
 
1361
    _fmt = "Parents are mismatched between two revisions. %(message)s"
1382
1362
 
1383
1363
 
1384
1364
class WeaveInvalidChecksum(WeaveError):
1385
1365
 
1386
 
    _fmt = "Text did not match it's checksum: %(msg)s"
 
1366
    _fmt = "Text did not match it's checksum: %(message)s"
1387
1367
 
1388
1368
 
1389
1369
class WeaveTextDiffers(WeaveError):
1437
1417
 
1438
1418
class VersionedFileInvalidChecksum(VersionedFileError):
1439
1419
 
1440
 
    _fmt = "Text did not match its checksum: %(msg)s"
 
1420
    _fmt = "Text did not match its checksum: %(message)s"
1441
1421
 
1442
1422
 
1443
1423
class KnitError(InternalBzrError):
1923
1903
    _fmt = "Moving the root directory is not supported at this time"
1924
1904
 
1925
1905
 
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
1906
class BzrMoveFailedError(BzrError):
1938
1907
 
1939
1908
    _fmt = "Could not move %(from_path)s%(operator)s %(to_path)s%(extra)s"
1984
1953
        "Use --keep to not delete them, or --force to delete them regardless.")
1985
1954
 
1986
1955
    def __init__(self, tree_delta):
1987
 
        symbol_versioning.warn(symbol_versioning.deprecated_in((2, 3, 0)) %
1988
 
            "BzrRemoveChangedFilesError", DeprecationWarning, stacklevel=2)
1989
1956
        BzrError.__init__(self)
1990
1957
        self.changes_as_text = tree_delta.get_changes_as_text()
1991
1958
        #self.paths_as_string = '\n'.join(changed_files)
2187
2154
 
2188
2155
    def __init__(self, repo):
2189
2156
        BzrError.__init__(self)
2190
 
        self.repo_path = repo.user_url
 
2157
        self.repo_path = repo.bzrdir.root_transport.base
2191
2158
 
2192
2159
 
2193
2160
class InconsistentDelta(BzrError):
2765
2732
 
2766
2733
    def __init__(self, bzrdir):
2767
2734
        import bzrlib.urlutils as urlutils
2768
 
        display_url = urlutils.unescape_for_display(bzrdir.user_url,
 
2735
        display_url = urlutils.unescape_for_display(bzrdir.root_transport.base,
2769
2736
                                                    'ascii')
2770
2737
        BzrError.__init__(self, bzrdir=bzrdir, display_url=display_url)
2771
2738
 
2845
2812
        else:
2846
2813
            more = ' ' + more
2847
2814
        import bzrlib.urlutils as urlutils
2848
 
        user_url = getattr(tree, "user_url", None)
2849
 
        if user_url is None:
2850
 
            display_url = str(tree)
2851
 
        else:
2852
 
            display_url = urlutils.unescape_for_display(user_url, 'ascii')
 
2815
        display_url = urlutils.unescape_for_display(
 
2816
            tree.bzrdir.root_transport.base, 'ascii')
2853
2817
        BzrError.__init__(self, tree=tree, display_url=display_url, more=more)
2854
2818
 
2855
2819
 
2856
 
class ShelvedChanges(UncommittedChanges):
2857
 
 
2858
 
    _fmt = ('Working tree "%(display_url)s" has shelved changes'
2859
 
            ' (See bzr shelve --list).%(more)s')
2860
 
 
2861
 
 
2862
2820
class MissingTemplateVariable(BzrError):
2863
2821
 
2864
2822
    _fmt = 'Variable {%(name)s} is not available.'
2984
2942
class HookFailed(BzrError):
2985
2943
    """Raised when a pre_change_branch_tip hook function fails anything other
2986
2944
    than TipChangeRejected.
2987
 
 
2988
 
    Note that this exception is no longer raised, and the import is only left
2989
 
    to be nice to code which might catch it in a plugin.
2990
2945
    """
2991
2946
 
2992
2947
    _fmt = ("Hook '%(hook_name)s' during %(hook_stage)s failed:\n"
2993
2948
            "%(traceback_text)s%(exc_value)s")
2994
2949
 
2995
 
    def __init__(self, hook_stage, hook_name, exc_info, warn=True):
2996
 
        if warn:
2997
 
            symbol_versioning.warn("BzrError HookFailed has been deprecated "
2998
 
                "as of bzrlib 2.1.", DeprecationWarning, stacklevel=2)
 
2950
    def __init__(self, hook_stage, hook_name, exc_info):
2999
2951
        import traceback
3000
2952
        self.hook_stage = hook_stage
3001
2953
        self.hook_name = hook_name
3123
3075
    def __init__(self, source_branch, target_branch):
3124
3076
        self.source_branch = source_branch
3125
3077
        self.target_branch = target_branch
3126
 
 
3127
 
 
3128
 
class NoRoundtrippingSupport(BzrError):
3129
 
 
3130
 
    _fmt = ("Roundtripping is not supported between %(source_branch)r and "
3131
 
            "%(target_branch)r.")
3132
 
 
3133
 
    internal_error = True
3134
 
 
3135
 
    def __init__(self, source_branch, target_branch):
3136
 
        self.source_branch = source_branch
3137
 
        self.target_branch = target_branch
3138
 
 
3139
 
 
3140
 
class FileTimestampUnavailable(BzrError):
3141
 
 
3142
 
    _fmt = "The filestamp for %(path)s is not available."
3143
 
 
3144
 
    internal_error = True
3145
 
 
3146
 
    def __init__(self, path):
3147
 
        self.path = path
3148
 
 
3149
 
 
3150
 
class NoColocatedBranchSupport(BzrError):
3151
 
 
3152
 
    _fmt = ("%(bzrdir)r does not support co-located branches.")
3153
 
 
3154
 
    def __init__(self, bzrdir):
3155
 
        self.bzrdir = bzrdir
3156
 
 
3157
 
 
3158
 
class NoWhoami(BzrError):
3159
 
 
3160
 
    _fmt = ('Unable to determine your name.\n'
3161
 
        "Please, set your name with the 'whoami' command.\n"
3162
 
        'E.g. bzr whoami "Your Name <name@example.com>"')
3163
 
 
3164
 
 
3165
 
class InvalidPattern(BzrError):
3166
 
 
3167
 
    _fmt = ('Invalid pattern(s) found. %(msg)s')
3168
 
 
3169
 
    def __init__(self, msg):
3170
 
        self.msg = msg
3171
 
 
3172
 
 
3173
 
class RecursiveBind(BzrError):
3174
 
 
3175
 
    _fmt = ('Branch "%(branch_url)s" appears to be bound to itself. '
3176
 
        'Please use `bzr unbind` to fix.')
3177
 
 
3178
 
    def __init__(self, branch_url):
3179
 
        self.branch_url = branch_url
3180