~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/errors.py

merge from mbp.

Show diffs side-by-side

added added

removed removed

Lines of Context:
153
153
class StrictCommitFailed(Exception):
154
154
    """Commit refused because there are unknowns in the tree."""
155
155
 
 
156
 
 
157
class PathError(BzrNewError):
 
158
    """Generic path error: %(path)r%(extra)s)"""
 
159
    def __init__(self, path, extra=None):
 
160
        BzrNewError.__init__(self)
 
161
        self.path = path
 
162
        if extra:
 
163
            self.extra = ': ' + str(extra)
 
164
        else:
 
165
            self.extra = ''
 
166
 
 
167
 
 
168
class NoSuchFile(PathError):
 
169
    """No such file: %(path)r%(extra)s"""
 
170
 
 
171
 
 
172
class FileExists(PathError):
 
173
    """File exists: %(path)r%(extra)s"""
 
174
 
 
175
 
 
176
class PermissionDenied(PathError):
 
177
    """Permission denied: %(path)r%(extra)s"""
 
178
 
 
179
 
 
180
class PathNotChild(BzrNewError):
 
181
    """Path %(path)r is not a child of path %(base)r%(extra)s"""
 
182
    def __init__(self, path, base, extra=None):
 
183
        BzrNewError.__init__(self)
 
184
        self.path = path
 
185
        self.base = base
 
186
        if extra:
 
187
            self.extra = ': ' + str(extra)
 
188
        else:
 
189
            self.extra = ''
 
190
 
 
191
 
156
192
class NotBranchError(BzrNewError):
157
193
    """Not a branch: %(path)s"""
158
194
    def __init__(self, path):
354
390
    """
355
391
    pass
356
392
 
357
 
class NonRelativePath(TransportError):
358
 
    """An absolute path was supplied, that could not be decoded into
359
 
    a relative path.
360
 
    """
361
 
    pass
362
 
 
363
 
class NoSuchFile(TransportError, IOError):
364
 
    """A get() was issued for a file that doesn't exist."""
365
 
 
366
 
    # XXX: Is multiple inheritance for exceptions really needed?
367
 
 
368
 
    def __str__(self):
369
 
        return 'no such file: ' + self.msg
370
 
 
371
 
    def __init__(self, msg=None, orig_error=None):
372
 
        import errno
373
 
        TransportError.__init__(self, msg=msg, orig_error=orig_error)
374
 
        IOError.__init__(self, errno.ENOENT, self.msg)
375
 
 
376
 
class ConnectionError(TransportError, IOError):
377
 
    """
378
 
    A connection problem prevents file retrieval.
 
393
 
 
394
class ConnectionError(TransportError):
 
395
    """A connection problem prevents file retrieval.
379
396
    This does not indicate whether the file exists or not; it indicates that a
380
397
    precondition for requesting the file was not met.
381
398
    """
382
 
 
383
 
    # XXX: Is multiple inheritance for exceptions really needed?
384
 
 
385
 
    def __str__(self):
386
 
        return 'connection error: ' + self.msg
387
 
 
388
 
    def __init__(self, msg=None, orig_error=None):
389
 
        import errno
390
 
        TransportError.__init__(self, msg=msg, orig_error=orig_error)
391
 
        IOError.__init__(self, errno.ENOENT, self.msg)
392
 
 
393
 
 
394
 
class FileExists(TransportError, OSError):
395
 
    """An operation was attempted, which would overwrite an entry,
396
 
    but overwritting is not supported.
397
 
 
398
 
    mkdir() can throw this, but put() just overwites existing files.
399
 
    """
400
 
    # XXX: Is multiple inheritance for exceptions really needed?
401
 
    def __init__(self, msg=None, orig_error=None):
402
 
        import errno
403
 
        TransportError.__init__(self, msg=msg, orig_error=orig_error)
404
 
        OSError.__init__(self, errno.EEXIST, self.msg)
405
 
 
406
 
class PermissionDenied(TransportError):
407
 
    """An operation cannot succeed because of a lack of permissions."""
408
 
    pass
 
399
    def __init__(self, msg=None, orig_error=None):
 
400
        TransportError.__init__(self, msg=msg, orig_error=orig_error)
 
401
 
409
402
 
410
403
class ConnectionReset(TransportError):
411
404
    """The connection has been closed."""