import six try: from urllib import urlencode as format_query except ImportError: from urllib.parse import urlencode as format_query try: from urlparse import urlparse as parse_url except ImportError: from urllib.parse import urlparse as parse_url try: memoryview = memoryview except NameError: memoryview = buffer def get_character(x, index): return chr(get_byte(x, index)) def get_byte(x, index): return six.indexbytes(x, index) def encode_string(x): return x.encode('utf-8') def decode_string(x): try: return x.decode('utf-8') except UnicodeDecodeError: return x.decode('latin-1')