Fix for Python 4 (#862)
* Fix for Python 4
* Fix for Python 4
diff --git a/src/OpenSSL/_util.py b/src/OpenSSL/_util.py
index cf8b888..cdcacc8 100644
--- a/src/OpenSSL/_util.py
+++ b/src/OpenSSL/_util.py
@@ -1,7 +1,7 @@
import sys
import warnings
-from six import PY3, binary_type, text_type
+from six import PY2, binary_type, text_type
from cryptography.hazmat.bindings.openssl.binding import Binding
@@ -81,12 +81,12 @@
"""
if not isinstance(s, (binary_type, text_type)):
raise TypeError("%r is neither bytes nor unicode" % s)
- if PY3:
- if isinstance(s, binary_type):
- return s.decode("utf-8")
- else:
+ if PY2:
if isinstance(s, text_type):
return s.encode("utf-8")
+ else:
+ if isinstance(s, binary_type):
+ return s.decode("utf-8")
return s
@@ -107,12 +107,12 @@
raise TypeError("Path must be represented as bytes or unicode string")
-if PY3:
- def byte_string(s):
- return s.encode("charmap")
-else:
+if PY2:
def byte_string(s):
return s
+else:
+ def byte_string(s):
+ return s.encode("charmap")
# A marker object to observe whether some optional arguments are passed any
diff --git a/tests/test_ssl.py b/tests/test_ssl.py
index 7704c72..6b9422c 100644
--- a/tests/test_ssl.py
+++ b/tests/test_ssl.py
@@ -25,7 +25,7 @@
from pretend import raiser
-from six import PY3, text_type
+from six import PY2, text_type
from cryptography import x509
from cryptography.hazmat.backends import default_backend
@@ -101,7 +101,7 @@
"""
-skip_if_py3 = pytest.mark.skipif(PY3, reason="Python 2 only")
+skip_if_py3 = pytest.mark.skipif(not PY2, reason="Python 2 only")
def socket_any_family():
@@ -2138,7 +2138,7 @@
with pytest.raises(TypeError):
conn.set_tlsext_host_name(b"with\0null")
- if PY3:
+ if not PY2:
# On Python 3.x, don't accidentally implicitly convert from text.
with pytest.raises(TypeError):
conn.set_tlsext_host_name(b"example.com".decode("ascii"))
diff --git a/tests/util.py b/tests/util.py
index 4464379..65b905a 100644
--- a/tests/util.py
+++ b/tests/util.py
@@ -6,7 +6,7 @@
U{Twisted<http://twistedmatrix.com/>}.
"""
-from six import PY3
+from six import PY2
# This is the UTF-8 encoding of the SNOWMAN unicode code point.
@@ -152,7 +152,7 @@
# The type name expected in warnings about using the wrong string type.
-if PY3:
- WARNING_TYPE_EXPECTED = "str"
-else:
+if PY2:
WARNING_TYPE_EXPECTED = "unicode"
+else:
+ WARNING_TYPE_EXPECTED = "str"