1212from gzip import GzipFile
1313from bz2 import BZ2File
1414from io import BytesIO , UnsupportedOperation
15+ from distutils .version import StrictVersion
1516
1617from ..py3k import asstr , asbytes
17- from ..openers import Opener , ImageOpener
18+ from ..openers import Opener , ImageOpener , HAVE_INDEXED_GZIP
1819from ..tmpdirs import InTemporaryDirectory
1920from ..volumeutils import BinOpener
2021
@@ -67,6 +68,8 @@ def test_Opener_various():
6768 # Check we can do all sorts of files here
6869 message = b"Oh what a giveaway"
6970 bz2_fileno = hasattr (BZ2File , 'fileno' )
71+ if HAVE_INDEXED_GZIP :
72+ import indexed_gzip as igzip
7073 with InTemporaryDirectory ():
7174 sobj = BytesIO ()
7275 for input in ('test.txt' ,
@@ -86,6 +89,11 @@ def test_Opener_various():
8689 assert_raises (UnsupportedOperation , fobj .fileno )
8790 elif input .endswith ('.bz2' ) and not bz2_fileno :
8891 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 )
8997 else :
9098 # Just check there is a fileno
9199 assert_not_equal (fobj .fileno (), 0 )
@@ -139,7 +147,7 @@ def test_Opener_gzip_type():
139147 (False , {'mode' : 'wb' , 'keep_open' : False }, GzipFile ),
140148 (False , {'mode' : 'wb' , 'keep_open' : 'auto' }, GzipFile ),
141149 (True , {'mode' : 'rb' , 'keep_open' : True }, MockIndexedGzipFile ),
142- (True , {'mode' : 'rb' , 'keep_open' : False }, GzipFile ),
150+ (True , {'mode' : 'rb' , 'keep_open' : False }, MockIndexedGzipFile ),
143151 (True , {'mode' : 'rb' , 'keep_open' : 'auto' }, MockIndexedGzipFile ),
144152 (True , {'mode' : 'wb' , 'keep_open' : True }, GzipFile ),
145153 (True , {'mode' : 'wb' , 'keep_open' : False }, GzipFile ),
@@ -260,11 +268,10 @@ class StrictOpener(Opener):
260268 assert_true (isinstance (fobj .fobj , file_class ))
261269 elif lext == 'gz' :
262270 try :
263- from indexed_gzip import SafeIndexedGzipFile
271+ from .. openers import IndexedGzipFile
264272 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 )))
268275 else :
269276 assert_true (isinstance (fobj .fobj , BZ2File ))
270277
0 commit comments