4
4
from datetime import datetime
5
5
import collections
6
6
import pytest
7
- import gzip
8
- import bz2
9
- import lzma
10
7
11
8
import numpy as np
12
9
import pandas as pd
13
10
14
- from pandas import Series , DataFrame
11
+ from pandas import Series , DataFrame , compat
15
12
16
13
from pandas .compat import StringIO , u
17
14
from pandas .util .testing import (assert_series_equal , assert_almost_equal ,
@@ -142,12 +139,31 @@ def test_to_csv_path_is_none(self):
142
139
csv_str = s .to_csv (path = None )
143
140
assert isinstance (csv_str , str )
144
141
145
- @pytest .mark .parametrize ('compression, open_func' , [
146
- ('gzip' , gzip .open ),
147
- ('bz2' , bz2 .BZ2File ),
148
- (pytest .param ('xz' , lzma .open , marks = td .skip_if_no_lzma )),
142
+ def decompress_file (self , src_path , compression ):
143
+ if compression is None :
144
+ f = open (src_path , 'rb' )
145
+ elif compression == 'gzip' :
146
+ import gzip
147
+ f = gzip .open (src_path , 'rb' )
148
+ elif compression == 'bz2' :
149
+ import bz2
150
+ f = bz2 .BZ2File (src_path , 'rb' )
151
+ elif compression == 'xz' :
152
+ lzma = compat .import_lzma ()
153
+ f = lzma .LZMAFile (src_path , 'rb' )
154
+ else :
155
+ msg = 'Unrecognized compression type: {}' .format (compression )
156
+ raise ValueError (msg )
157
+
158
+ return f
159
+
160
+ @pytest .mark .parametrize ('compression' , [
161
+ None ,
162
+ 'gzip' ,
163
+ 'bz2' ,
164
+ pytest .param ('xz' , marks = td .skip_if_no_lzma ),
149
165
])
150
- def test_to_csv_compression (self , compression , open_func ):
166
+ def test_to_csv_compression (self , compression ):
151
167
152
168
s = Series ([0.123456 , 0.234567 , 0.567567 ], index = ['A' , 'B' , 'C' ],
153
169
name = 'X' )
@@ -161,15 +177,14 @@ def test_to_csv_compression(self, compression, open_func):
161
177
squeeze = True )
162
178
assert_series_equal (s , rs )
163
179
164
- # explicitly make sure file is compressed
165
- f = open_func (filename , 'rb' )
180
+ # explicitly ensure file was compressed
181
+ f = self . decompress_file (filename , compression = compression )
166
182
text = f .read ().decode ('utf8' )
167
183
assert s .name in text
184
+ f .close ()
168
185
169
- f = open_func (filename , 'rb' )
170
- assert_series_equal (s , pd .read_csv (f , index_col = 0 ,
171
- squeeze = True ))
172
-
186
+ f = self .decompress_file (filename , compression = compression )
187
+ assert_series_equal (s , pd .read_csv (f , index_col = 0 , squeeze = True ))
173
188
f .close ()
174
189
175
190
0 commit comments