Port to Python 3.
[catacomb-python] / catacomb / pwsafe.py
index 8fa5ee6..3133d1e 100644 (file)
@@ -31,19 +31,28 @@ from __future__ import with_statement
 import binascii as _B
 import errno as _E
 import os as _OS
-from cStringIO import StringIO as _StringIO
+import sys as _SYS
+
+if _SYS.version_info >= (3,): from io import StringIO as _StringIO
+else: from cStringIO import StringIO as _StringIO
 
 import catacomb as _C
 
 ###--------------------------------------------------------------------------
 ### Python version portability.
 
-def _iterkeys(dict): return dict.iterkeys()
-def _itervalues(dict): return dict.itervalues()
-def _iteritems(dict): return dict.iteritems()
-
-def _bin(text): return text
-def _text(bin): return bin
+if _SYS.version_info >= (3,):
+  def _iterkeys(dict): return dict.keys()
+  def _itervalues(dict): return dict.values()
+  def _iteritems(dict): return dict.items()
+  def _bin(text): return text.encode(errors = "surrogateescape")
+  def _text(bin): return bin.decode(errors = "surrogateescape")
+else:
+  def _iterkeys(dict): return dict.iterkeys()
+  def _itervalues(dict): return dict.itervalues()
+  def _iteritems(dict): return dict.iteritems()
+  def _bin(text): return text
+  def _text(bin): return bin
 
 _NUL = _bin('\0')
 _CIPHER = _bin('cipher:')