1 #-------------------------------------------------------------------------------
2 # elftools: common/py3compat.py
4 # Python 2/3 compatibility code
6 # Eli Bendersky (eliben@gmail.com)
7 # This code is in the public domain
8 #-------------------------------------------------------------------------------
10 PY3
= sys
.version_info
[0] == 3
12 Python 2 is no longer supported by pyelftools; if you need to use Python 2,
13 please download an older pyelftools version (such as version 0.29).
19 from pathlib
import Path
21 StringIO
= io
.StringIO
24 # Functions for acting on bytestrings and strings. In Python 2 and 3,
25 # strings and bytes are the same and chr/ord can be used to convert between
26 # numeric byte values and their string representations. In Python 3, bytes
27 # and strings are different types and bytes hold numeric values when
31 def bytes2str(b
): return b
.decode('latin-1')
32 def str2bytes(s
): return s
.encode('latin-1')
33 def int2byte(i
): return bytes((i
,))
34 def byte2int(b
): return b
39 return Path(s
).as_posix()
46 StringIO
= BytesIO
= cStringIO
.StringIO
48 def bytes2str(b
): return b
49 def str2bytes(s
): return s
58 return posixpath
.join(*os
.path
.split(s
))