diff options
author | Victor Stinner <vstinner@redhat.com> | 2015-07-21 14:10:22 +0200 |
---|---|---|
committer | Victor Stinner <vstinner@redhat.com> | 2015-07-21 14:51:53 +0200 |
commit | de2a25c5fe2545eaea9d04497e83e1d994ad9c0d (patch) | |
tree | a6ebe46972c25681c629dc6db58c0c3c1e0f4fe4 | |
parent | cf04d34162c377c9ae08d49abacd6f23dd9e1430 (diff) | |
download | pyeclib-de2a25c5fe2545eaea9d04497e83e1d994ad9c0d.tar.gz |
Fix Python 3 issues
* Use relative imports
* Fix bytes/unicode issues in tests
* Replace long() with int()
* Replace a/b with a//b to get integer division
* Use a key function to sort list
* Replace zip() with list(zip()) in a test to get a list on Python 3
-rw-r--r-- | pyeclib/core.py | 6 | ||||
-rw-r--r-- | pyeclib/ec_iface.py | 14 | ||||
-rw-r--r-- | test/test_pyeclib_api.py | 16 | ||||
-rw-r--r-- | test/test_pyeclib_c.py | 13 |
4 files changed, 26 insertions, 23 deletions
diff --git a/pyeclib/core.py b/pyeclib/core.py index d10e56e..2a1f0fb 100644 --- a/pyeclib/core.py +++ b/pyeclib/core.py @@ -21,9 +21,9 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -from ec_iface import ECDriverError -from ec_iface import ECInsufficientFragments -from ec_iface import PyECLib_FRAGHDRCHKSUM_Types +from .ec_iface import ECDriverError +from .ec_iface import ECInsufficientFragments +from .ec_iface import PyECLib_FRAGHDRCHKSUM_Types import math import pyeclib_c diff --git a/pyeclib/ec_iface.py b/pyeclib/ec_iface.py index 48f4fd0..4cc9eb6 100644 --- a/pyeclib/ec_iface.py +++ b/pyeclib/ec_iface.py @@ -22,10 +22,10 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -from enum import Enum -from enum import unique -from utils import create_instance -from utils import positive_int_value +from .enum import Enum +from .enum import unique +from .utils import create_instance +from .utils import positive_int_value def PyECLibVersion(z, y, x): @@ -354,7 +354,7 @@ class ECDriver(object): num_segments = segment_info['num_segments'] sorted_ranges = ranges[:] - sorted_ranges.sort(lambda x, y: x[0] - y[0]) + sorted_ranges.sort(key=lambda obj: obj[0]) recipe = {} @@ -362,8 +362,8 @@ class ECDriver(object): segment_map = {} begin_off = r[0] end_off = r[1] - begin_segment = begin_off / segment_size - end_segment = end_off / segment_size + begin_segment = begin_off // segment_size + end_segment = end_off // segment_size if begin_segment == end_segment: begin_relative_off = begin_off % segment_size diff --git a/test/test_pyeclib_api.py b/test/test_pyeclib_api.py index 21ebed6..242809c 100644 --- a/test/test_pyeclib_api.py +++ b/test/test_pyeclib_api.py @@ -31,7 +31,7 @@ from pyeclib.ec_iface import ECDriverError from pyeclib.ec_iface import ECInsufficientFragments from pyeclib.ec_iface import ECDriver, PyECLib_EC_Types -from test_pyeclib_c import _available_backends +from .test_pyeclib_c import _available_backends if sys.version < '3': def b2i(b): @@ -93,8 +93,10 @@ class TestPyECLibDriver(unittest.TestCase): # Create the dictionary of files to test with buf = ''.join(random.choice(ascii_letters) for i in range(size)) + if sys.version_info >= (3,): + buf = buf.encode('ascii') tmp_file = tempfile.NamedTemporaryFile() - tmp_file.write(buf.decode('utf-8')) + tmp_file.write(buf) self.files[size_str] = tmp_file def setUp(self): @@ -394,11 +396,11 @@ class TestPyECLibDriver(unittest.TestCase): results = pyeclib_drivers[0].get_segment_info_byterange(ranges, file_size, segment_size) for exp_result_key in expected_results: - self.assertTrue(results.has_key(exp_result_key)) + self.assertIn(exp_result_key, results) self.assertTrue(len(results[exp_result_key]) == len(expected_results[exp_result_key])) exp_result_map = expected_results[exp_result_key] for segment_key in exp_result_map: - self.assertTrue(results[exp_result_key].has_key(segment_key)) + self.assertIn(segment_key, results[exp_result_key]) self.assertTrue(results[exp_result_key][segment_key] == expected_results[exp_result_key][segment_key]) def test_get_segment_info(self): @@ -504,8 +506,7 @@ class TestPyECLibDriver(unittest.TestCase): for file_size in self.file_sizes: tmp_file = self.files[file_size] tmp_file.seek(0) - whole_file_str = tmp_file.read() - whole_file_bytes = whole_file_str.encode('utf-8') + whole_file_bytes = tmp_file.read() encode_input = whole_file_bytes orig_fragments = pyeclib_driver.encode(encode_input) @@ -576,8 +577,7 @@ class TestPyECLibDriver(unittest.TestCase): file_size = self.file_sizes[0] tmp_file = self.files[file_size] tmp_file.seek(0) - whole_file_str = tmp_file.read() - whole_file_bytes = whole_file_str.encode('utf-8') + whole_file_bytes = tmp_file.read() for ec_type in ['flat_xor_hd_3', 'liberasurecode_rs_vand']: pyeclib_driver = self.get_available_backend( k=10, m=5, ec_type=ec_type) diff --git a/test/test_pyeclib_c.py b/test/test_pyeclib_c.py index 9827fd3..b62ac57 100644 --- a/test/test_pyeclib_c.py +++ b/test/test_pyeclib_c.py @@ -23,6 +23,7 @@ import random from string import ascii_letters +import sys import tempfile import time import unittest @@ -111,8 +112,10 @@ class TestPyECLib(unittest.TestCase): # Create the dictionary of files to test with buf = ''.join(random.choice(ascii_letters) for i in range(size)) - tmp_file = tempfile.NamedTemporaryFile() - tmp_file.write(buf.decode('utf-8')) + if sys.version_info >= (3,): + buf = buf.encode('ascii') + tmp_file = tempfile.NamedTemporaryFile('w+b') + tmp_file.write(buf) self.files[size_str] = tmp_file def get_tmp_file(self, name): @@ -200,10 +203,10 @@ class TestPyECLib(unittest.TestCase): whole_file_bytes = self.get_tmp_file(file_size).read() success = True - begins = [long(random.randint(0, len(whole_file_bytes) - 1)) for i in range(3)] - ends = [long(random.randint(begins[i], len(whole_file_bytes))) for i in range(3)] + begins = [int(random.randint(0, len(whole_file_bytes) - 1)) for i in range(3)] + ends = [int(random.randint(begins[i], len(whole_file_bytes))) for i in range(3)] - ranges = zip(begins, ends) + ranges = list(zip(begins, ends)) fragments = pyeclib_c.encode(handle, whole_file_bytes) orig_fragments = fragments[:] |