~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/errors.py

  • Committer: Robert Collins
  • Date: 2005-10-02 21:51:29 UTC
  • mfrom: (1396)
  • mto: This revision was merged to the branch mainline in revision 1397.
  • Revision ID: robertc@robertcollins.net-20051002215128-5686c7d24bf9bdb9
merge from martins newformat branch - brings in transport abstraction

Show diffs side-by-side

added added

removed removed

Lines of Context:
176
176
 
177
177
 
178
178
from bzrlib.weave import WeaveError
 
179
 
 
180
class TransportError(BzrError):
 
181
    """All errors thrown by Transport implementations should derive
 
182
    from this class.
 
183
    """
 
184
    def __init__(self, msg=None, orig_error=None):
 
185
        if msg is None and orig_error is not None:
 
186
            msg = str(orig_error)
 
187
        BzrError.__init__(self, msg)
 
188
        self.msg = msg
 
189
        self.orig_error = orig_error
 
190
 
 
191
# A set of semi-meaningful errors which can be thrown
 
192
class TransportNotPossible(TransportError):
 
193
    """This is for transports where a specific function is explicitly not
 
194
    possible. Such as pushing files to an HTTP server.
 
195
    """
 
196
    pass
 
197
 
 
198
class NonRelativePath(TransportError):
 
199
    """An absolute path was supplied, that could not be decoded into
 
200
    a relative path.
 
201
    """
 
202
    pass
 
203
 
 
204
class NoSuchFile(TransportError, IOError):
 
205
    """A get() was issued for a file that doesn't exist."""
 
206
    def __init__(self, msg=None, orig_error=None):
 
207
        import errno
 
208
        TransportError.__init__(self, msg=msg, orig_error=orig_error)
 
209
        IOError.__init__(self, errno.ENOENT, self.msg)
 
210
 
 
211
class FileExists(TransportError, OSError):
 
212
    """An operation was attempted, which would overwrite an entry,
 
213
    but overwritting is not supported.
 
214
 
 
215
    mkdir() can throw this, but put() just overwites existing files.
 
216
    """
 
217
    def __init__(self, msg=None, orig_error=None):
 
218
        import errno
 
219
        TransportError.__init__(self, msg=msg, orig_error=orig_error)
 
220
        OSError.__init__(self, errno.EEXIST, self.msg)
 
221
 
 
222
class PermissionDenied(TransportError):
 
223
    """An operation cannot succeed because of a lack of permissions."""
 
224
    pass
 
225
 
 
226
class ConnectionReset(TransportError):
 
227
    """The connection has been closed."""
 
228
    pass
 
229