~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/errors.py

  • Committer: Karl Bielefeldt
  • Date: 2010-09-29 19:57:28 UTC
  • mto: (5483.1.1 integration)
  • mto: This revision was merged to the branch mainline in revision 5484.
  • Revision ID: 7mq3cbbd9q@snkmail.com-20100929195728-nvuqlepsrwcxbziw
Use meliae to dump memory to a file upon MemoryError.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2011 Canonical Ltd
 
1
# Copyright (C) 2005-2010 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
713
713
       self.bzrdir = bzrdir
714
714
       PathError.__init__(self, path=path)
715
715
 
716
 
    def __repr__(self):
717
 
        return '<%s %r>' % (self.__class__.__name__, self.__dict__)
718
 
 
719
716
    def _format(self):
720
717
        # XXX: Ideally self.detail would be a property, but Exceptions in
721
718
        # Python 2.4 have to be old-style classes so properties don't work.
726
723
                    self.bzrdir.open_repository()
727
724
                except NoRepositoryPresent:
728
725
                    self.detail = ''
729
 
                except Exception:
730
 
                    # Just ignore unexpected errors.  Raising arbitrary errors
731
 
                    # during str(err) can provoke strange bugs.  Concretely
732
 
                    # Launchpad's codehosting managed to raise NotBranchError
733
 
                    # here, and then get stuck in an infinite loop/recursion
734
 
                    # trying to str() that error.  All this error really cares
735
 
                    # about that there's no working repository there, and if
736
 
                    # open_repository() fails, there probably isn't.
737
 
                    self.detail = ''
738
726
                else:
739
727
                    self.detail = ': location is a repository'
740
728
            else:
1140
1128
        BzrError.__init__(self, files=files, files_str=files_str)
1141
1129
 
1142
1130
 
1143
 
class ExcludesUnsupported(BzrError):
1144
 
 
1145
 
    _fmt = ('Excluding paths during commit is not supported by '
1146
 
            'repository at %(repository)r.')
1147
 
 
1148
 
    def __init__(self, repository):
1149
 
        BzrError.__init__(self, repository=repository)
1150
 
 
1151
 
 
1152
1131
class BadCommitMessageEncoding(BzrError):
1153
1132
 
1154
1133
    _fmt = 'The specified commit message contains characters unsupported by '\
1416
1395
 
1417
1396
class WeaveInvalidChecksum(WeaveError):
1418
1397
 
1419
 
    _fmt = "Text did not match its checksum: %(msg)s"
 
1398
    _fmt = "Text did not match it's checksum: %(msg)s"
1420
1399
 
1421
1400
 
1422
1401
class WeaveTextDiffers(WeaveError):
1969
1948
 
1970
1949
class BzrMoveFailedError(BzrError):
1971
1950
 
1972
 
    _fmt = ("Could not move %(from_path)s%(operator)s %(to_path)s"
1973
 
        "%(_has_extra)s%(extra)s")
 
1951
    _fmt = "Could not move %(from_path)s%(operator)s %(to_path)s%(extra)s"
1974
1952
 
1975
1953
    def __init__(self, from_path='', to_path='', extra=None):
1976
1954
        from bzrlib.osutils import splitpath
1977
1955
        BzrError.__init__(self)
1978
1956
        if extra:
1979
 
            self.extra, self._has_extra = extra, ': '
 
1957
            self.extra = ': ' + str(extra)
1980
1958
        else:
1981
 
            self.extra = self._has_extra = ''
 
1959
            self.extra = ''
1982
1960
 
1983
1961
        has_from = len(from_path) > 0
1984
1962
        has_to = len(to_path) > 0
2005
1983
 
2006
1984
class BzrRenameFailedError(BzrMoveFailedError):
2007
1985
 
2008
 
    _fmt = ("Could not rename %(from_path)s%(operator)s %(to_path)s"
2009
 
        "%(_has_extra)s%(extra)s")
 
1986
    _fmt = "Could not rename %(from_path)s%(operator)s %(to_path)s%(extra)s"
2010
1987
 
2011
1988
    def __init__(self, from_path, to_path, extra=None):
2012
1989
        BzrMoveFailedError.__init__(self, from_path, to_path, extra)
2013
1990
 
2014
 
 
2015
1991
class BzrRemoveChangedFilesError(BzrError):
2016
1992
    """Used when user is trying to remove changed files."""
2017
1993
 
2035
2011
 
2036
2012
class BzrBadParameterMissing(BzrBadParameter):
2037
2013
 
2038
 
    _fmt = "Parameter %(param)s is required but not present."
 
2014
    _fmt = "Parameter $(param)s is required but not present."
2039
2015
 
2040
2016
 
2041
2017
class BzrBadParameterUnicode(BzrBadParameter):
2969
2945
        self.user_encoding = osutils.get_user_encoding()
2970
2946
 
2971
2947
 
2972
 
class NoSuchConfig(BzrError):
2973
 
 
2974
 
    _fmt = ('The "%(config_id)s" configuration does not exist.')
2975
 
 
2976
 
    def __init__(self, config_id):
2977
 
        BzrError.__init__(self, config_id=config_id)
2978
 
 
2979
 
 
2980
 
class NoSuchConfigOption(BzrError):
2981
 
 
2982
 
    _fmt = ('The "%(option_name)s" configuration option does not exist.')
2983
 
 
2984
 
    def __init__(self, option_name):
2985
 
        BzrError.__init__(self, option_name=option_name)
2986
 
 
2987
 
 
2988
2948
class NoSuchAlias(BzrError):
2989
2949
 
2990
2950
    _fmt = ('The alias "%(alias_name)s" does not exist.')
3230
3190
    def __init__(self, branch_url):
3231
3191
        self.branch_url = branch_url
3232
3192
 
3233
 
 
3234
 
# FIXME: I would prefer to define the config related exception classes in
3235
 
# config.py but the lazy import mechanism proscribes this -- vila 20101222
3236
 
class OptionExpansionLoop(BzrError):
3237
 
 
3238
 
    _fmt = 'Loop involving %(refs)r while expanding "%(string)s".'
3239
 
 
3240
 
    def __init__(self, string, refs):
3241
 
        self.string = string
3242
 
        self.refs = '->'.join(refs)
3243
 
 
3244
 
 
3245
 
class ExpandingUnknownOption(BzrError):
3246
 
 
3247
 
    _fmt = 'Option %(name)s is not defined while expanding "%(string)s".'
3248
 
 
3249
 
    def __init__(self, name, string):
3250
 
        self.name = name
3251
 
        self.string = string