mirror of
https://github.com/thegeeklab/ansible-later.git
synced 2024-11-14 17:20:39 +00:00
179 lines
3.9 KiB
Python
179 lines
3.9 KiB
Python
|
import sys
|
||
|
import base64
|
||
|
|
||
|
__all__ = [
|
||
|
"PY2",
|
||
|
"string_types",
|
||
|
"integer_types",
|
||
|
"text_type",
|
||
|
"bytes_types",
|
||
|
"bytes",
|
||
|
"long",
|
||
|
"input",
|
||
|
"decodebytes",
|
||
|
"encodebytes",
|
||
|
"bytestring",
|
||
|
"byte_ord",
|
||
|
"byte_chr",
|
||
|
"byte_mask",
|
||
|
"b",
|
||
|
"u",
|
||
|
"b2s",
|
||
|
"StringIO",
|
||
|
"BytesIO",
|
||
|
"is_callable",
|
||
|
"MAXSIZE",
|
||
|
"next",
|
||
|
"builtins",
|
||
|
]
|
||
|
|
||
|
PY2 = sys.version_info[0] < 3
|
||
|
|
||
|
if PY2:
|
||
|
string_types = basestring # NOQA
|
||
|
text_type = unicode # NOQA
|
||
|
bytes_types = str
|
||
|
bytes = str
|
||
|
integer_types = (int, long) # NOQA
|
||
|
long = long # NOQA
|
||
|
input = raw_input # NOQA
|
||
|
decodebytes = base64.decodestring
|
||
|
encodebytes = base64.encodestring
|
||
|
|
||
|
import __builtin__ as builtins
|
||
|
|
||
|
def bytestring(s): # NOQA
|
||
|
if isinstance(s, unicode): # NOQA
|
||
|
return s.encode("utf-8")
|
||
|
return s
|
||
|
|
||
|
byte_ord = ord # NOQA
|
||
|
byte_chr = chr # NOQA
|
||
|
|
||
|
def byte_mask(c, mask):
|
||
|
return chr(ord(c) & mask)
|
||
|
|
||
|
def b(s, encoding="utf8"): # NOQA
|
||
|
"""cast unicode or bytes to bytes"""
|
||
|
if isinstance(s, str):
|
||
|
return s
|
||
|
elif isinstance(s, unicode): # NOQA
|
||
|
return s.encode(encoding)
|
||
|
elif isinstance(s, buffer): # NOQA
|
||
|
return s
|
||
|
else:
|
||
|
raise TypeError("Expected unicode or bytes, got {!r}".format(s))
|
||
|
|
||
|
def u(s, encoding="utf8"): # NOQA
|
||
|
"""cast bytes or unicode to unicode"""
|
||
|
if isinstance(s, str):
|
||
|
return s.decode(encoding)
|
||
|
elif isinstance(s, unicode): # NOQA
|
||
|
return s
|
||
|
elif isinstance(s, buffer): # NOQA
|
||
|
return s.decode(encoding)
|
||
|
else:
|
||
|
raise TypeError("Expected unicode or bytes, got {!r}".format(s))
|
||
|
|
||
|
def b2s(s):
|
||
|
return s
|
||
|
|
||
|
import cStringIO
|
||
|
|
||
|
StringIO = cStringIO.StringIO
|
||
|
BytesIO = StringIO
|
||
|
|
||
|
def is_callable(c): # NOQA
|
||
|
return callable(c)
|
||
|
|
||
|
def get_next(c): # NOQA
|
||
|
return c.next
|
||
|
|
||
|
def next(c):
|
||
|
return c.next()
|
||
|
|
||
|
# It's possible to have sizeof(long) != sizeof(Py_ssize_t).
|
||
|
class X(object):
|
||
|
def __len__(self):
|
||
|
return 1 << 31
|
||
|
|
||
|
try:
|
||
|
len(X())
|
||
|
except OverflowError:
|
||
|
# 32-bit
|
||
|
MAXSIZE = int((1 << 31) - 1) # NOQA
|
||
|
else:
|
||
|
# 64-bit
|
||
|
MAXSIZE = int((1 << 63) - 1) # NOQA
|
||
|
del X
|
||
|
else:
|
||
|
import collections
|
||
|
import struct
|
||
|
import builtins
|
||
|
|
||
|
string_types = str
|
||
|
text_type = str
|
||
|
bytes = bytes
|
||
|
bytes_types = bytes
|
||
|
integer_types = int
|
||
|
|
||
|
class long(int):
|
||
|
pass
|
||
|
|
||
|
input = input
|
||
|
decodebytes = base64.decodebytes
|
||
|
encodebytes = base64.encodebytes
|
||
|
|
||
|
def bytestring(s):
|
||
|
return s
|
||
|
|
||
|
def byte_ord(c):
|
||
|
# In case we're handed a string instead of an int.
|
||
|
if not isinstance(c, int):
|
||
|
c = ord(c)
|
||
|
return c
|
||
|
|
||
|
def byte_chr(c):
|
||
|
assert isinstance(c, int)
|
||
|
return struct.pack("B", c)
|
||
|
|
||
|
def byte_mask(c, mask):
|
||
|
assert isinstance(c, int)
|
||
|
return struct.pack("B", c & mask)
|
||
|
|
||
|
def b(s, encoding="utf8"):
|
||
|
"""cast unicode or bytes to bytes"""
|
||
|
if isinstance(s, bytes):
|
||
|
return s
|
||
|
elif isinstance(s, str):
|
||
|
return s.encode(encoding)
|
||
|
else:
|
||
|
raise TypeError("Expected unicode or bytes, got {!r}".format(s))
|
||
|
|
||
|
def u(s, encoding="utf8"):
|
||
|
"""cast bytes or unicode to unicode"""
|
||
|
if isinstance(s, bytes):
|
||
|
return s.decode(encoding)
|
||
|
elif isinstance(s, str):
|
||
|
return s
|
||
|
else:
|
||
|
raise TypeError("Expected unicode or bytes, got {!r}".format(s))
|
||
|
|
||
|
def b2s(s):
|
||
|
return s.decode() if isinstance(s, bytes) else s
|
||
|
|
||
|
import io
|
||
|
|
||
|
StringIO = io.StringIO # NOQA
|
||
|
BytesIO = io.BytesIO # NOQA
|
||
|
|
||
|
def is_callable(c):
|
||
|
return isinstance(c, collections.Callable)
|
||
|
|
||
|
def get_next(c):
|
||
|
return c.__next__
|
||
|
|
||
|
next = next
|
||
|
|
||
|
MAXSIZE = sys.maxsize # NOQA
|