12
12
from gzip import GzipFile
13
13
from bz2 import BZ2File
14
14
from io import BytesIO , UnsupportedOperation
15
+ from distutils .version import StrictVersion
15
16
16
17
from ..py3k import asstr , asbytes
17
- from ..openers import Opener , ImageOpener
18
+ from ..openers import Opener , ImageOpener , HAVE_INDEXED_GZIP
18
19
from ..tmpdirs import InTemporaryDirectory
19
20
from ..volumeutils import BinOpener
20
21
@@ -67,6 +68,8 @@ def test_Opener_various():
67
68
# Check we can do all sorts of files here
68
69
message = b"Oh what a giveaway"
69
70
bz2_fileno = hasattr (BZ2File , 'fileno' )
71
+ if HAVE_INDEXED_GZIP :
72
+ import indexed_gzip as igzip
70
73
with InTemporaryDirectory ():
71
74
sobj = BytesIO ()
72
75
for input in ('test.txt' ,
@@ -86,6 +89,11 @@ def test_Opener_various():
86
89
assert_raises (UnsupportedOperation , fobj .fileno )
87
90
elif input .endswith ('.bz2' ) and not bz2_fileno :
88
91
assert_raises (AttributeError , fobj .fileno )
92
+ # indexed gzip is used by default, and drops file
93
+ # handles by default, so we don't have a fileno.
94
+ elif input .endswith ('gz' ) and HAVE_INDEXED_GZIP and \
95
+ StrictVersion (igzip .__version__ ) >= StrictVersion ('0.7.0' ):
96
+ assert_raises (igzip .NoHandleError , fobj .fileno )
89
97
else :
90
98
# Just check there is a fileno
91
99
assert_not_equal (fobj .fileno (), 0 )
@@ -139,7 +147,7 @@ def test_Opener_gzip_type():
139
147
(False , {'mode' : 'wb' , 'keep_open' : False }, GzipFile ),
140
148
(False , {'mode' : 'wb' , 'keep_open' : 'auto' }, GzipFile ),
141
149
(True , {'mode' : 'rb' , 'keep_open' : True }, MockIndexedGzipFile ),
142
- (True , {'mode' : 'rb' , 'keep_open' : False }, GzipFile ),
150
+ (True , {'mode' : 'rb' , 'keep_open' : False }, MockIndexedGzipFile ),
143
151
(True , {'mode' : 'rb' , 'keep_open' : 'auto' }, MockIndexedGzipFile ),
144
152
(True , {'mode' : 'wb' , 'keep_open' : True }, GzipFile ),
145
153
(True , {'mode' : 'wb' , 'keep_open' : False }, GzipFile ),
@@ -260,11 +268,10 @@ class StrictOpener(Opener):
260
268
assert_true (isinstance (fobj .fobj , file_class ))
261
269
elif lext == 'gz' :
262
270
try :
263
- from indexed_gzip import SafeIndexedGzipFile
271
+ from .. openers import IndexedGzipFile
264
272
except ImportError :
265
- SafeIndexedGzipFile = GzipFile
266
- assert_true (isinstance (fobj .fobj , (GzipFile ,
267
- SafeIndexedGzipFile )))
273
+ IndexedGzipFile = GzipFile
274
+ assert_true (isinstance (fobj .fobj , (GzipFile , IndexedGzipFile )))
268
275
else :
269
276
assert_true (isinstance (fobj .fobj , BZ2File ))
270
277
0 commit comments