parse a dsn to parts similar to parseurl

    :param dsn: string, the dsn to parse
    :param parse_class: ParseResult, the class that will be used to hold parsed values
    :param **defaults: dict, any values you want to have defaults for if they aren't in the dsn
    :returns: ParseResult() tuple-like instance

def parse(dsn, parse_class=ParseResult, **defaults):
    """
    parse a dsn to parts similar to parseurl

    :param dsn: string, the dsn to parse
    :param parse_class: ParseResult, the class that will be used to hold parsed values
    :param **defaults: dict, any values you want to have defaults for if they aren't in the dsn
    :returns: ParseResult() tuple-like instance
    """
    r = parse_class(dsn, **defaults)
    return r