~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/transport/__init__.py

  • Committer: John Arbash Meinel
  • Date: 2006-08-24 19:07:09 UTC
  • mto: (1946.2.8 reduce-knit-churn)
  • mto: This revision was merged to the branch mainline in revision 1988.
  • Revision ID: john@arbash-meinel.com-20060824190709-af1edd54464abb7b
Add put_bytes() and a base-level implementation for it

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
import errno
30
30
from collections import deque
31
31
from copy import deepcopy
 
32
from cStringIO import StringIO
32
33
import re
33
34
from stat import S_ISDIR
34
35
import sys
484
485
            count += 1
485
486
 
486
487
    def put(self, relpath, f, mode=None):
487
 
        """Copy the file-like or string object into the location.
 
488
        """Copy the file-like into the location.
488
489
 
489
490
        :param relpath: Location to put the contents, relative to base.
490
491
        :param f:       File-like or string object.
493
494
        """
494
495
        raise NotImplementedError(self.put)
495
496
 
 
497
    def put_bytes(self, relpath, bytes, mode=None):
 
498
        """Atomically put the supplied bytes into the given location.
 
499
 
 
500
        :param relpath: The location to put the contents, relative to the
 
501
            transport base.
 
502
        :param bytes: A bytestring of data.
 
503
        :param mode: Create the file with the given mode.
 
504
        :return: None
 
505
        """
 
506
        assert isinstance(bytes, str), \
 
507
            'bytes must be a plain string, not %s' % type(bytes)
 
508
        return self.put(relpath, StringIO(bytes), mode=mode)
 
509
 
496
510
    def put_multi(self, files, mode=None, pb=None):
497
511
        """Put a set of files into the location.
498
512