De-compress it to it's original.

    :param obj: Compressed object, could be bytes or str.
    :param return_type: if bytes, then return bytes; if str, then use
        base64.b64decode; if obj, then use pickle.loads return an object.

def decompress(obj, return_type="bytes"):
    """
    De-compress it to it's original.

    :param obj: Compressed object, could be bytes or str.
    :param return_type: if bytes, then return bytes; if str, then use
        base64.b64decode; if obj, then use pickle.loads return an object.
    """
    if isinstance(obj, binary_type):
        b = zlib.decompress(obj)
    elif isinstance(obj, string_types):
        b = zlib.decompress(base64.b64decode(obj.encode("utf-8")))
    else:
        raise TypeError("input cannot be anything other than str and bytes!")

    if return_type == "bytes":
        return b
    elif return_type == "str":
        return b.decode("utf-8")
    elif return_type == "obj":
        return pickle.loads(b)
    else:
        raise ValueError(
            "'return_type' has to be one of 'bytes', 'str' or 'obj'!")