~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/errors.py

  • Committer: Robert Collins
  • Date: 2005-09-29 02:01:49 UTC
  • Revision ID: robertc@robertcollins.net-20050929020149-1ff16722c6a01b2c
reenable remotebranch tests

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
# exceptions 
24
24
class BzrError(StandardError):
25
25
    def __str__(self):
26
 
        # XXX: Should we show the exception class in 
27
 
        # exceptions that don't provide their own message?  
28
 
        # maybe it should be done at a higher level
29
 
        ## n = self.__class__.__name__ + ': '
30
 
        n = ''
31
26
        if len(self.args) == 1:
32
 
            return n + self.args[0]
 
27
            return self.args[0]
33
28
        elif len(self.args) == 2:
34
29
            # further explanation or suggestions
35
 
            try:
36
 
                return n + '\n  '.join([self.args[0]] + self.args[1])
37
 
            except TypeError:
38
 
                return n + "%r" % self
 
30
            return '\n  '.join([self.args[0]] + self.args[1])
39
31
        else:
40
 
            return n + `self.args`
 
32
            return `self.args`
41
33
 
42
34
 
43
35
class BzrCheckError(BzrError):
55
47
 
56
48
class BzrCommandError(BzrError):
57
49
    # Error from malformed user command
58
 
    def __str__(self):
59
 
        return self.args[0]
 
50
    pass
60
51
 
61
52
 
62
53
class NotBranchError(BzrError):
63
54
    """Specified path is not in a branch"""
64
 
    def __str__(self):
65
 
        return 'not a branch: %s' % self.args[0]
 
55
    pass
66
56
 
67
57
 
68
58
class NotVersionedError(BzrError):
148
138
        self.not_ancestor_id = not_ancestor_id
149
139
 
150
140
 
151
 
class NotAncestor(BzrError):
152
 
    def __init__(self, rev_id, not_ancestor_id):
153
 
        self.rev_id = rev_id
154
 
        self.not_ancestor_id = not_ancestor_id
155
 
        msg = "Revision %s is not an ancestor of %s" % (not_ancestor_id, 
156
 
                                                        rev_id)
157
 
        BzrError.__init__(self, msg)
158
 
 
159
 
 
160
141
class InstallFailed(BzrError):
161
142
    def __init__(self, revisions):
162
143
        msg = "Could not install revisions:\n%s" % " ,".join(revisions)
186
167
 
187
168
 
188
169
from bzrlib.weave import WeaveError
189
 
 
190
 
class TransportError(BzrError):
191
 
    """All errors thrown by Transport implementations should derive
192
 
    from this class.
193
 
    """
194
 
    def __init__(self, msg=None, orig_error=None):
195
 
        if msg is None and orig_error is not None:
196
 
            msg = str(orig_error)
197
 
        BzrError.__init__(self, msg)
198
 
        self.msg = msg
199
 
        self.orig_error = orig_error
200
 
 
201
 
# A set of semi-meaningful errors which can be thrown
202
 
class TransportNotPossible(TransportError):
203
 
    """This is for transports where a specific function is explicitly not
204
 
    possible. Such as pushing files to an HTTP server.
205
 
    """
206
 
    pass
207
 
 
208
 
class NonRelativePath(TransportError):
209
 
    """An absolute path was supplied, that could not be decoded into
210
 
    a relative path.
211
 
    """
212
 
    pass
213
 
 
214
 
class NoSuchFile(TransportError, IOError):
215
 
    """A get() was issued for a file that doesn't exist."""
216
 
 
217
 
    # XXX: Is multiple inheritance for exceptions really needed?
218
 
 
219
 
    def __str__(self):
220
 
        return 'no such file: ' + self.msg
221
 
 
222
 
    def __init__(self, msg=None, orig_error=None):
223
 
        import errno
224
 
        TransportError.__init__(self, msg=msg, orig_error=orig_error)
225
 
        IOError.__init__(self, errno.ENOENT, self.msg)
226
 
 
227
 
class FileExists(TransportError, OSError):
228
 
    """An operation was attempted, which would overwrite an entry,
229
 
    but overwritting is not supported.
230
 
 
231
 
    mkdir() can throw this, but put() just overwites existing files.
232
 
    """
233
 
    # XXX: Is multiple inheritance for exceptions really needed?
234
 
    def __init__(self, msg=None, orig_error=None):
235
 
        import errno
236
 
        TransportError.__init__(self, msg=msg, orig_error=orig_error)
237
 
        OSError.__init__(self, errno.EEXIST, self.msg)
238
 
 
239
 
class PermissionDenied(TransportError):
240
 
    """An operation cannot succeed because of a lack of permissions."""
241
 
    pass
242
 
 
243
 
class ConnectionReset(TransportError):
244
 
    """The connection has been closed."""
245
 
    pass
246
 
 
247
 
class ConflictsInTree(BzrError):
248
 
    def __init__(self):
249
 
        BzrError.__init__(self, "Working tree has conflicts.")