From 70beb603ac179ce070627e39479b856dbe791de3 Mon Sep 17 00:00:00 2001 From: reidy-p Date: Tue, 13 Mar 2018 21:51:54 +0000 Subject: [PATCH 1/2] TST: Parameterize some compression tests --- pandas/tests/io/parser/compression.py | 81 +++++++-------------------- 1 file changed, 19 insertions(+), 62 deletions(-) diff --git a/pandas/tests/io/parser/compression.py b/pandas/tests/io/parser/compression.py index 4291d59123e8b..db4a93dea14f1 100644 --- a/pandas/tests/io/parser/compression.py +++ b/pandas/tests/io/parser/compression.py @@ -12,6 +12,10 @@ import pandas.util.testing as tm import pandas.util._test_decorators as td +import gzip +import bz2 +lzma = compat.import_lzma() + class CompressionTests(object): @@ -64,83 +68,36 @@ def test_zip(self): pytest.raises(zipfile.BadZipfile, self.read_csv, f, compression='zip') - def test_gzip(self): - import gzip - - with open(self.csv1, 'rb') as data_file: - data = data_file.read() - expected = self.read_csv(self.csv1) - - with tm.ensure_clean() as path: - tmp = gzip.GzipFile(path, mode='wb') - tmp.write(data) - tmp.close() - - result = self.read_csv(path, compression='gzip') - tm.assert_frame_equal(result, expected) - - with open(path, 'rb') as f: - result = self.read_csv(f, compression='gzip') - tm.assert_frame_equal(result, expected) - - with tm.ensure_clean('test.gz') as path: - tmp = gzip.GzipFile(path, mode='wb') - tmp.write(data) - tmp.close() - result = self.read_csv(path, compression='infer') - tm.assert_frame_equal(result, expected) - - def test_bz2(self): - import bz2 + @pytest.mark.parametrize('compress_type, compress_method, ext', [ + ('gzip', gzip.GzipFile, 'gz'), + ('bz2', bz2.BZ2File, 'bz2'), + pytest.param('xz', lzma.LZMAFile, 'xz', + marks=td.skip_if_no_lzma) + ]) + def test_other_compression(self, compress_type, compress_method, ext): with open(self.csv1, 'rb') as data_file: data = data_file.read() expected = self.read_csv(self.csv1) with tm.ensure_clean() as path: - tmp = bz2.BZ2File(path, mode='wb') + tmp = compress_method(path, mode='wb') tmp.write(data) tmp.close() - result = self.read_csv(path, compression='bz2') + result = self.read_csv(path, compression=compress_type) tm.assert_frame_equal(result, expected) - pytest.raises(ValueError, self.read_csv, - path, compression='bz3') + if compress_type == 'bz2': + pytest.raises(ValueError, self.read_csv, + path, compression='bz3') with open(path, 'rb') as fin: - result = self.read_csv(fin, compression='bz2') - tm.assert_frame_equal(result, expected) - - with tm.ensure_clean('test.bz2') as path: - tmp = bz2.BZ2File(path, mode='wb') - tmp.write(data) - tmp.close() - result = self.read_csv(path, compression='infer') - tm.assert_frame_equal(result, expected) - - @td.skip_if_no_lzma - def test_xz(self): - lzma = compat.import_lzma() - - with open(self.csv1, 'rb') as data_file: - data = data_file.read() - expected = self.read_csv(self.csv1) - - with tm.ensure_clean() as path: - tmp = lzma.LZMAFile(path, mode='wb') - tmp.write(data) - tmp.close() - - result = self.read_csv(path, compression='xz') - tm.assert_frame_equal(result, expected) - - with open(path, 'rb') as f: - result = self.read_csv(f, compression='xz') + result = self.read_csv(fin, compression=compress_type) tm.assert_frame_equal(result, expected) - with tm.ensure_clean('test.xz') as path: - tmp = lzma.LZMAFile(path, mode='wb') + with tm.ensure_clean('test.{}'.format(ext)) as path: + tmp = compress_method(path, mode='wb') tmp.write(data) tmp.close() result = self.read_csv(path, compression='infer') From 3a6fd0d4202437ced376d0f9521f20be8868fb80 Mon Sep 17 00:00:00 2001 From: reidy-p Date: Thu, 15 Mar 2018 21:37:57 +0000 Subject: [PATCH 2/2] try to fix import lzma --- pandas/tests/io/parser/compression.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pandas/tests/io/parser/compression.py b/pandas/tests/io/parser/compression.py index db4a93dea14f1..01c6620e50d37 100644 --- a/pandas/tests/io/parser/compression.py +++ b/pandas/tests/io/parser/compression.py @@ -14,7 +14,10 @@ import gzip import bz2 -lzma = compat.import_lzma() +try: + lzma = compat.import_lzma() +except ImportError: + lzma = None class CompressionTests(object): @@ -71,7 +74,7 @@ def test_zip(self): @pytest.mark.parametrize('compress_type, compress_method, ext', [ ('gzip', gzip.GzipFile, 'gz'), ('bz2', bz2.BZ2File, 'bz2'), - pytest.param('xz', lzma.LZMAFile, 'xz', + pytest.param('xz', getattr(lzma, 'LZMAFile', None), 'xz', marks=td.skip_if_no_lzma) ]) def test_other_compression(self, compress_type, compress_method, ext):