(userinfo)
return unquote_plus(user), unquote_plus(passwd)
Validates the format of user information in a MongoDB URI.
    Reserved characters like ':', '/', '+' and '@' must be escaped
    following RFC 3986.

    Returns a 2-tuple containing the unescaped username followed
    by the unescaped password.

    :Paramaters:
        - `userinfo`: A string of the form <username>:<password>

    .. versionchanged:: 2.2
       Now uses `urllib.unquote_plus` so `+` characters must be escaped.
Validates the format of user information in a MongoDB URI.
    Reserved characters like ':', '/', '+' and '@' must be escaped
    following RFC 3986.
Validates the format of user information in a MongoDB URI . Reserved characters like : / + and @ must be escaped following RFC 3986 .
def parse_userinfo(userinfo):
    """Validates the format of user information in a MongoDB URI.
    Reserved characters like ':', '/', '+' and '@' must be escaped
    following RFC 3986.

    Returns a 2-tuple containing the unescaped username followed
    by the unescaped password.

    :Paramaters:
        - `userinfo`: A string of the form <username>:<password>

    .. versionchanged:: 2.2
       Now uses `urllib.unquote_plus` so `+` characters must be escaped.
    """
    if '@' in userinfo or userinfo.count(':') > 1:
        if PY3:
            quote_fn = "urllib.parse.quote_plus"
        else:
            quote_fn = "urllib.quote_plus"
        raise InvalidURI("Username and password must be escaped according to "
                         "RFC 3986, use %s()." % quote_fn)
    user, _, passwd = _partition(userinfo, ":")
    # No password is expected with GSSAPI authentication.
    if not user:
        raise InvalidURI("The empty string is not valid username.")
    return unquote_plus(user), unquote_plus(passwd)
def parse_userinfo ( userinfo ) : if '@' in userinfo or userinfo . count ( ':' ) > 1 : if PY3 : quote_fn = "urllib.parse.quote_plus" else : quote_fn = "urllib.quote_plus" raise InvalidURI ( "Username and password must be escaped according to " "RFC 3986, use %s()." % quote_fn ) user , _ , passwd = _partition ( userinfo , ":" ) # No password is expected with GSSAPI authentication. if not user : raise InvalidURI ( "The empty string is not valid username." ) return unquote_plus ( user ) , unquote_plus ( passwd )