summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2018-01-03 20:09:10 +0100
committerMichał Górny <mgorny@gentoo.org>2018-01-03 20:11:31 +0100
commit0e4be84fd6693582810855b00c32eb9e5b597c0e (patch)
treeaef650f71da1f5a42ee11731280cd0d3c7d8e635
parent55d80199c8ed723c7607a09d5e628c1d7949316f (diff)
downloadgemato-0e4be84fd6693582810855b00c32eb9e5b597c0e.tar.gz
compression: Prevent using incompatible 'lzma' module from pyliblzma
Try importing the 'lzma' module only in Python 3.3+, that is versions known to have it built-in. This way, we can prevent accidentally importing incompatible module using the same name, e.g. pyliblzma. Bug: https://bugs.gentoo.org/643254
-rw-r--r--gemato/compression.py9
-rw-r--r--tox.ini8
2 files changed, 13 insertions, 4 deletions
diff --git a/gemato/compression.py b/gemato/compression.py
index 11ede67..145c0bf 100644
--- a/gemato/compression.py
+++ b/gemato/compression.py
@@ -1,6 +1,6 @@
# gemato: compressed file support
# vim:fileencoding=utf-8
-# (c) 2017 Michał Górny
+# (c) 2017-2018 Michał Górny
# Licensed under the terms of 2-clause BSD license
import gzip
@@ -18,9 +18,12 @@ else:
except ImportError:
bz2 = None
-try:
+# Python 3.3+ has a built-in lzma module. Older versions may have
+# an incompatible external module of the same name, so explicitly
+# force using the backport there.
+if sys.hexversion >= 0x03030000:
import lzma
-except ImportError:
+else:
try:
import backports.lzma as lzma
except ImportError:
diff --git a/tox.ini b/tox.ini
index 45f7ce7..7acc9c3 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,5 +1,5 @@
[tox]
-envlist = begin,py27,py34,py35,py36,pypy,pypy3,nodeps,end
+envlist = begin,py27,py34,py35,py36,pypy,pypy3,incompatible-lzma,nodeps,end
# we operate on sources anyway
skipsdist = True
@@ -54,6 +54,12 @@ basepython = python2.7
deps =
coverage
+[testenv:incompatible-lzma]
+basepython = python2.7
+deps =
+ coverage
+ pyliblzma
+
[testenv]
commands = coverage run -p -m unittest discover -v