Add igor.util._ord for Python 3 compatibility.
authorW. Trevor King <wking@tremily.us>
Sat, 21 Jul 2012 13:04:18 +0000 (09:04 -0400)
committerW. Trevor King <wking@tremily.us>
Sat, 21 Jul 2012 13:04:18 +0000 (09:04 -0400)
igor/util.py

index c60e59701c0c6c0244b215653cafa69ae02dbeab..b91bf2bf00f211f08903eeba215fd0da9c1d46bb 100644 (file)
@@ -22,21 +22,33 @@ import sys as _sys
 import numpy as _numpy
 
 
+def _ord(byte):
+    r"""Convert a byte to an integer.
+
+    >>> buffer = b'\x00\x01\x02'
+    >>> [_ord(b) for b in buffer]
+    [0, 1, 2]
+    """
+    if _sys.version_info >= (3,):
+        return byte
+    else:
+        return ord(byte)
+
 def hex_bytes(buffer, spaces=None):
     r"""Pretty-printing for binary buffers.
 
-    >>> hex_bytes(buffer('\x00\x01\x02\x03\x04'))
+    >>> hex_bytes(b'\x00\x01\x02\x03\x04')
     '0001020304'
-    >>> hex_bytes(buffer('\x00\x01\x02\x03\x04'), spaces=1)
+    >>> hex_bytes(b'\x00\x01\x02\x03\x04', spaces=1)
     '00 01 02 03 04'
-    >>> hex_bytes(buffer('\x00\x01\x02\x03\x04'), spaces=2)
+    >>> hex_bytes(b'\x00\x01\x02\x03\x04', spaces=2)
     '0001 0203 04'
-    >>> hex_bytes(buffer('\x00\x01\x02\x03\x04\x05\x06'), spaces=2)
+    >>> hex_bytes(b'\x00\x01\x02\x03\x04\x05\x06', spaces=2)
     '0001 0203 0405 06'
-    >>> hex_bytes(buffer('\x00\x01\x02\x03\x04\x05\x06'), spaces=3)
+    >>> hex_bytes(b'\x00\x01\x02\x03\x04\x05\x06', spaces=3)
     '000102 030405 06'
     """
-    hex_bytes = ['{:02x}'.format(ord(x)) for x in buffer]
+    hex_bytes = ['{:02x}'.format(_ord(x)) for x in buffer]
     if spaces is None:
         return ''.join(hex_bytes)
     elif spaces is 1:
@@ -49,19 +61,19 @@ def assert_null(buffer, strict=True):
     r"""Ensure an input buffer is entirely zero.
 
     >>> import sys
-    >>> assert_null(buffer(''))
-    >>> assert_null(buffer('\x00\x00'))
-    >>> assert_null(buffer('\x00\x01\x02\x03'))
+    >>> assert_null(b'')
+    >>> assert_null(b'\x00\x00')
+    >>> assert_null(b'\x00\x01\x02\x03')
     Traceback (most recent call last):
       ...
     ValueError: 00 01 02 03
     >>> stderr = sys.stderr
     >>> sys.stderr = sys.stdout
-    >>> assert_null(buffer('\x00\x01\x02\x03'), strict=False)
+    >>> assert_null(b'\x00\x01\x02\x03', strict=False)
     warning: post-data padding not zero: 00 01 02 03
     >>> sys.stderr = stderr
     """
-    if buffer and ord(max(buffer)) != 0:
+    if buffer and _ord(max(buffer)) != 0:
         hex_string = hex_bytes(buffer, spaces=1)
         if strict:
             raise ValueError(hex_string)