/breezy/unstable

To get this branch, use:
bzr branch https://code.breezy-vcs.org/breezy/unstable

« back to all changes in this revision

Viewing changes to breezy/store/text.py

  • Committer: Jelmer Vernooij
  • Date: 2017-05-24 01:39:33 UTC
  • mfrom: (3815.3776.6)
  • Revision ID: jelmer@jelmer.uk-20170524013933-ir4y4tqtrsiz2ka2
New upstream snapshot.

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
import gzip
26
26
import os
27
27
 
28
 
from bzrlib import osutils
29
 
from bzrlib.errors import BzrError, NoSuchFile, FileExists
30
 
import bzrlib.store
31
 
from bzrlib.trace import mutter
32
 
 
33
 
 
34
 
 
35
 
class TextStore(bzrlib.store.TransportStore):
 
28
from .. import osutils
 
29
from ..errors import BzrError, NoSuchFile, FileExists
 
30
from ..sixish import (
 
31
    BytesIO,
 
32
    )
 
33
from . import TransportStore
 
34
from ..trace import mutter
 
35
 
 
36
 
 
37
 
 
38
class TextStore(TransportStore):
36
39
    """Store that holds files indexed by unique names.
37
40
 
38
41
    Files can be added, but not modified once they are in.  Typically
43
46
    """
44
47
 
45
48
    def _add_compressed(self, fn, f):
46
 
        from cStringIO import StringIO
47
 
        from bzrlib.osutils import pumpfile
48
 
 
49
 
        if isinstance(f, basestring):
50
 
            f = StringIO(f)
51
 
 
52
 
        sio = StringIO()
 
49
        from ..osutils import pumpfile
 
50
 
 
51
        if isinstance(f, bytes):
 
52
            f = BytesIO(f)
 
53
 
 
54
        sio = BytesIO()
53
55
        gf = gzip.GzipFile(mode='wb', fileobj=sio)
54
56
        # if pumpfile handles files that don't fit in ram,
55
57
        # so will this function
116
118
        f = self._transport.get(filename)
117
119
        # gzip.GzipFile.read() requires a tell() function
118
120
        # but some transports return objects that cannot seek
119
 
        # so buffer them in a StringIO instead
 
121
        # so buffer them in a BytesIO instead
120
122
        if getattr(f, 'tell', None) is not None:
121
123
            return gzip.GzipFile(mode='rb', fileobj=f)
122
124
        try:
123
 
            from cStringIO import StringIO
124
 
            sio = StringIO(f.read())
 
125
            sio = BytesIO(f.read())
125
126
            return gzip.GzipFile(mode='rb', fileobj=sio)
126
127
        finally:
127
128
            f.close()