~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/transport/__init__.py

  • Committer: Robert Collins
  • Date: 2006-09-29 06:24:03 UTC
  • mto: This revision was merged to the branch mainline in revision 2587.
  • Revision ID: robertc@robertcollins.net-20060929062403-7e8b779181d8766c
``Transport.get`` has had its interface made more clear for ease of use.
Retrieval of a directory must now fail with either 'PathError' at open
time, or raise 'ReadError' on a read. (Robert Collins)

Show diffs side-by-side

added added

removed removed

Lines of Context:
189
189
                   (other.start, other.length, other.ranges))
190
190
 
191
191
 
 
192
class LateReadError(object):
 
193
    """A helper for transports which pretends to be a readable file.
 
194
 
 
195
    When read() is called, errors.ReadError is raised.
 
196
    """
 
197
 
 
198
    def __init__(self, path):
 
199
        self._path = path
 
200
 
 
201
    def close(self):
 
202
        """a no-op - do nothing."""
 
203
 
 
204
    def read(self, count=-1):
 
205
        """Raise ReadError."""
 
206
        raise errors.ReadError(self._path)
 
207
 
 
208
 
192
209
class Transport(object):
193
210
    """This class encapsulates methods for retrieving or putting a file
194
211
    from/to a storage location.
429
446
    def get(self, relpath):
430
447
        """Get the file at the given relative path.
431
448
 
 
449
        This may fail in a number of ways:
 
450
         - HTTP servers may return content for a directory. (unexpected
 
451
           content failure)
 
452
         - FTP servers may indicate NoSuchFile for a directory.
 
453
         - SFTP servers may give a file handle for a directory that will
 
454
           fail on read().
 
455
 
 
456
        For correct use of the interface, be sure to catch errors.PathError
 
457
        when calling it and catch errors.ReadError when reading from the
 
458
        returned object.
 
459
 
432
460
        :param relpath: The relative path to the file
433
461
        :rtype: File-like object.
434
462
        """