1
2
3
4
5 """Python 3 compatibility tools (PRIVATE)."""
6
7 import sys
8
9 if sys.version_info[0] >= 3:
10
11
12 _bytes_to_string = lambda b: b.decode()
13 _string_to_bytes = lambda s: s.encode()
14
16 """Turn byte string or unicode string into a unicode string."""
17 if isinstance(s, str):
18 return s
19
20 return s.decode()
21
22
24 """Turn byte string or unicode string into a bytes string.
25
26 The Python 2 version returns a (byte) string.
27 """
28 if isinstance(s, bytes):
29 return s
30
31 return s.encode()
32
33 _as_string = _as_unicode
34
36 """Check if the value is an integer.
37
38 Note there are no longs on Python 3.
39 """
40 return isinstance(i, int)
41
42 else:
43
44
45 _bytes_to_string = lambda b: b
46 _string_to_bytes = lambda s: str(s)
47
49 """Turn a (byte) string or a unicode string into a (byte) string."""
50
51 if isinstance(s, unicode):
52 return s
53 return s.decode()
54
56 """Turn a (byte) string or a unicode string into a (byte) string."""
57 return str(s)
58
59 _as_string = _as_bytes
60
62 """Check if the value is an integer or long."""
63
64
65
66 return isinstance(i, int) or isinstance(i, long)
67