def quote_with_encoding()

in templates/python/facebook_business/utils/urls.py [0:0]


def quote_with_encoding(val):
    """Quote a string that will be placed in url.
    If the string is unicode, we encode it
    to utf-8 before using `urllib.parse.quote`.
    In case it's not a string (an int for instance),
    we still try to convert it.

    Args:
            val: The string to be properly encoded.
    """
    if not isinstance(val, (six.integer_types, six.string_types)):
        raise ValueError("Cannot encode {} type.".format(type(val)))

    # handle other stuff than strings
    if isinstance(val, six.integer_types):
        val = six.text_type(val).encode('utf-8') if six.PY3 else bytes(val)

    # works with PY2 and PY3
    elif not isinstance(val, bytes):
        val = val.encode("utf-8")

    return six.moves.urllib.parse.quote(val)