From f070adf984c6bb3ef72a3bf3d05648ea304eaa61 Mon Sep 17 00:00:00 2001 From: Dwayne Litzenberger Date: Sun, 22 Jun 2014 20:17:45 -0700 Subject: Fix tobytes() broken by previous commit. Python 2.1 str objects don't have a .decode() method. --- lib/Crypto/Util/py3compat.py | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/lib/Crypto/Util/py3compat.py b/lib/Crypto/Util/py3compat.py index 1ab2206..7aa2bee 100644 --- a/lib/Crypto/Util/py3compat.py +++ b/lib/Crypto/Util/py3compat.py @@ -63,6 +63,8 @@ __revision__ = "$Id$" import sys if sys.version_info[0] == 2: + from types import UnicodeType as _UnicodeType # In Python 2.1, 'unicode' is a function, not a type. + def b(s): return s def bchr(s): @@ -71,22 +73,13 @@ if sys.version_info[0] == 2: return str(s) def bord(s): return ord(s) - if sys.version_info[1] == 1: - def tobytes(s): - try: - return s.encode('latin-1') - except UnicodeError: - return ''.join(s) - def tostr(bs): - return unicode(bs, 'latin-1') - else: - def tobytes(s): - if isinstance(s, unicode): - return s.encode("latin-1") - else: - return ''.join(s) - def tostr(bs): - return bs.decode('latin-1') + def tobytes(s): + if isinstance(s, _UnicodeType): + return s.encode("latin-1") + else: + return ''.join(s) + def tostr(bs): + return unicode(bs, 'latin-1') # In Pyton 2.x, StringIO is a stand-alone module from StringIO import StringIO as BytesIO else: -- cgit v1.2.1