~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/errors.py

[merge] robertc's integration, updated tests to check for retcode=3

Show diffs side-by-side

added added

removed removed

Lines of Context:
46
46
 
47
47
 * the printable form of an exception is generated by the base class
48
48
   __str__ method
 
49
 
 
50
Exception strings should start with a capital letter and not have a final
 
51
fullstop.
49
52
"""
50
53
 
51
54
# based on Scott James Remnant's hct error classes
133
136
    def __init__(self, base):
134
137
        BzrNewError.__init__(self)
135
138
        self.base = base
136
 
        
 
139
 
137
140
 
138
141
class BzrCommandError(BzrError):
139
142
    # Error from malformed user command
338
341
    """Parents are mismatched between two revisions."""
339
342
    
340
343
 
 
344
class NoSuchExportFormat(BzrNewError):
 
345
    """Export format %(format)r not supported"""
 
346
    def __init__(self, format):
 
347
        BzrNewError.__init__(self)
 
348
        self.format = format
 
349
 
 
350
 
341
351
class TransportError(BzrError):
342
352
    """All errors thrown by Transport implementations should derive
343
353
    from this class.
375
385
        TransportError.__init__(self, msg=msg, orig_error=orig_error)
376
386
        IOError.__init__(self, errno.ENOENT, self.msg)
377
387
 
 
388
class ConnectionError(TransportError, IOError):
 
389
    """
 
390
    A connection problem prevents file retrieval.
 
391
    This does not indicate whether the file exists or not; it indicates that a
 
392
    precondition for requesting the file was not met.
 
393
    """
 
394
 
 
395
    # XXX: Is multiple inheritance for exceptions really needed?
 
396
 
 
397
    def __str__(self):
 
398
        return 'connection error: ' + self.msg
 
399
 
 
400
    def __init__(self, msg=None, orig_error=None):
 
401
        import errno
 
402
        TransportError.__init__(self, msg=msg, orig_error=orig_error)
 
403
        IOError.__init__(self, errno.ENOENT, self.msg)
 
404
 
 
405
 
378
406
class FileExists(TransportError, OSError):
379
407
    """An operation was attempted, which would overwrite an entry,
380
408
    but overwritting is not supported.
428
456
        BzrNewError.__init__(self)
429
457
        self.graph = graph
430
458
 
 
459
class NotConflicted(BzrNewError):
 
460
    """File %(filename)s is not conflicted."""
 
461
    def __init__(self, filename):
 
462
        BzrNewError.__init__(self)
 
463
        self.filename = filename
 
464
 
431
465
class MustUseDecorated(Exception):
432
466
    """A decorating function has requested its original command be used.
433
467