~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/errors.py

Merge description into dont-add-conflict-helpers

Show diffs side-by-side

added added

removed removed

Lines of Context:
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".'
 
705
    _fmt = 'Not a branch: "%(path)s"%(detail)s.'
706
706
 
707
 
    def __init__(self, path):
 
707
    def __init__(self, path, detail=None, bzrdir=None):
708
708
       import bzrlib.urlutils as urlutils
709
 
       self.path = urlutils.unescape_for_display(path, 'ascii')
 
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)
710
731
 
711
732
 
712
733
class NoSubmitBranch(PathError):
1247
1268
class AmbiguousBase(BzrError):
1248
1269
 
1249
1270
    def __init__(self, bases):
1250
 
        warn("BzrError AmbiguousBase has been deprecated as of bzrlib 0.8.",
1251
 
                DeprecationWarning)
 
1271
        symbol_versioning.warn("BzrError AmbiguousBase has been deprecated "
 
1272
            "as of bzrlib 0.8.", DeprecationWarning, stacklevel=2)
1252
1273
        msg = ("The correct base is unclear, because %s are all equally close"
1253
1274
                % ", ".join(bases))
1254
1275
        BzrError.__init__(self, msg)
2942
2963
class HookFailed(BzrError):
2943
2964
    """Raised when a pre_change_branch_tip hook function fails anything other
2944
2965
    than TipChangeRejected.
 
2966
 
 
2967
    Note that this exception is no longer raised, and the import is only left
 
2968
    to be nice to code which might catch it in a plugin.
2945
2969
    """
2946
2970
 
2947
2971
    _fmt = ("Hook '%(hook_name)s' during %(hook_stage)s failed:\n"
2948
2972
            "%(traceback_text)s%(exc_value)s")
2949
2973
 
2950
 
    def __init__(self, hook_stage, hook_name, exc_info):
 
2974
    def __init__(self, hook_stage, hook_name, exc_info, warn=True):
 
2975
        if warn:
 
2976
            symbol_versioning.warn("BzrError HookFailed has been deprecated "
 
2977
                "as of bzrlib 2.1.", DeprecationWarning, stacklevel=2)
2951
2978
        import traceback
2952
2979
        self.hook_stage = hook_stage
2953
2980
        self.hook_name = hook_name