~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/errors.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2010-01-11 13:15:01 UTC
  • mfrom: (4900.1.6 command-cleanup)
  • Revision ID: pqm@pqm.ubuntu.com-20100111131501-btdm0vi95l7xjlp1
(andrew) Implement Command.add_cleanup,
        and replace try/finally blocks in bzrlib.builtins with it.

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
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):
1179
1158
 
1180
1159
class InvalidRevisionSpec(BzrError):
1181
1160
 
1182
 
    _fmt = ("Requested revision: '%(spec)s' does not exist in branch:"
 
1161
    _fmt = ("Requested revision: %(spec)r does not exist in branch:"
1183
1162
            " %(branch)s%(extra)s")
1184
1163
 
1185
1164
    def __init__(self, spec, branch, extra=None):
1297
1276
class BoundBranchOutOfDate(BzrError):
1298
1277
 
1299
1278
    _fmt = ("Bound branch %(branch)s is out of date with master branch"
1300
 
            " %(master)s.%(extra_help)s")
 
1279
            " %(master)s.")
1301
1280
 
1302
1281
    def __init__(self, branch, master):
1303
1282
        BzrError.__init__(self)
1304
1283
        self.branch = branch
1305
1284
        self.master = master
1306
 
        self.extra_help = ''
1307
1285
 
1308
1286
 
1309
1287
class CommitToDoubleBoundBranch(BzrError):
2176
2154
 
2177
2155
    def __init__(self, repo):
2178
2156
        BzrError.__init__(self)
2179
 
        self.repo_path = repo.user_url
 
2157
        self.repo_path = repo.bzrdir.root_transport.base
2180
2158
 
2181
2159
 
2182
2160
class InconsistentDelta(BzrError):
2754
2732
 
2755
2733
    def __init__(self, bzrdir):
2756
2734
        import bzrlib.urlutils as urlutils
2757
 
        display_url = urlutils.unescape_for_display(bzrdir.user_url,
 
2735
        display_url = urlutils.unescape_for_display(bzrdir.root_transport.base,
2758
2736
                                                    'ascii')
2759
2737
        BzrError.__init__(self, bzrdir=bzrdir, display_url=display_url)
2760
2738
 
2835
2813
            more = ' ' + more
2836
2814
        import bzrlib.urlutils as urlutils
2837
2815
        display_url = urlutils.unescape_for_display(
2838
 
            tree.user_url, 'ascii')
 
2816
            tree.bzrdir.root_transport.base, 'ascii')
2839
2817
        BzrError.__init__(self, tree=tree, display_url=display_url, more=more)
2840
2818
 
2841
2819
 
3115
3093
    def __init__(self, source_branch, target_branch):
3116
3094
        self.source_branch = source_branch
3117
3095
        self.target_branch = target_branch
3118
 
 
3119
 
 
3120
 
class FileTimestampUnavailable(BzrError):
3121
 
 
3122
 
    _fmt = "The filestamp for %(path)s is not available."
3123
 
 
3124
 
    internal_error = True
3125
 
 
3126
 
    def __init__(self, path):
3127
 
        self.path = path
3128
 
 
3129
 
 
3130
 
class NoColocatedBranchSupport(BzrError):
3131
 
 
3132
 
    _fmt = ("%(bzrdir)r does not support co-located branches.")
3133
 
 
3134
 
    def __init__(self, bzrdir):
3135
 
        self.bzrdir = bzrdir
3136