~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/local_transport.py

  • Committer: John Arbash Meinel
  • Date: 2005-07-11 21:19:12 UTC
  • mto: (1185.11.1)
  • mto: This revision was merged to the branch mainline in revision 1396.
  • Revision ID: john@arbash-meinel.com-20050711211912-df0f83fb6034440d
Removed Transport.open(), making get + put encode/decode to utf-8

Show diffs side-by-side

added added

removed removed

Lines of Context:
36
36
    def has(self, relpath):
37
37
        return os.access(self.abspath(relpath), os.F_OK)
38
38
 
39
 
    def get(self, relpath):
 
39
    def get(self, relpath, decode=False):
40
40
        """Get the file at the given relative path.
41
 
        """
42
 
        return open(self.abspath(relpath), 'rb')
43
 
 
44
 
    def put(self, relpath, f):
45
 
        """Copy the file-like object into the location.
46
 
        """
 
41
 
 
42
        :param relpath: The relative path to the file
 
43
        :param decode:  If True, assume the file is utf-8 encoded and
 
44
                        decode it into Unicode
 
45
        """
 
46
        if decode:
 
47
            import codecs
 
48
            codecs.open(self.abspath(relpath), 'rb', encoding='utf-8',
 
49
                    buffering=60000)
 
50
        else:
 
51
            return open(self.abspath(relpath), 'rb')
 
52
 
 
53
    def put(self, relpath, f, encode=False):
 
54
        """Copy the file-like or string object into the location.
 
55
 
 
56
        :param relpath: Location to put the contents, relative to base.
 
57
        :param f:       File-like or string object.
 
58
        :param encode:  If True, translate the contents into utf-8 encoded text.
 
59
        """
 
60
        raise NotImplementedError
47
61
        from bzrlib.atomicfile import AtomicFile
48
62
 
49
 
        fp = AtomicFile(self.abspath(relpath), 'wb')
 
63
        if encode:
 
64
            fp = AtomicFile(self.abspath(relpath), 'wb', encoding='utf-8')
 
65
        else:
 
66
            fp = AtomicFile(self.abspath(relpath), 'wb')
50
67
        try:
51
68
            self._pump(f, fp)
52
69
            fp.commit()
57
74
        """Create a directory at the given path."""
58
75
        os.mkdir(self.abspath(relpath))
59
76
 
60
 
    def open(self, relpath, mode='wb'):
61
 
        """Open a remote file for writing.
62
 
        This may return a proxy object, which is written to locally, and
63
 
        then when the file is closed, it is uploaded using put()
64
 
        """
65
 
        return open(self.abspath(relpath), mode)
66
 
 
67
77
    def append(self, relpath, f):
68
78
        """Append the text in the file-like object into the final
69
79
        location.