def set_query_parameter(url: str, param_name: str, param_value: str) -> str:
    """Given a URL, set or replace a query parameter and return the modified URL.

    Args:
        url: A given  URL.
        param_name: The parameter name to add.
        param_value: The parameter value.

    Returns:
        URL with the added parameter.

    """
    scheme, netloc, path, query_string, fragment = urlsplit(url)
    query_params = parse_qs(query_string)

    query_params[param_name] = [param_value]
    new_query_string = urlencode(query_params, doseq=True)

    return urlunsplit((scheme, netloc, path, new_query_string, fragment))
Given a URL, set or replace a query parameter and return the modified URL.

    Args:
        url: A given  URL.
        param_name: The parameter name to add.
        param_value: The parameter value.

    Returns:
        URL with the added parameter.

    
deeppavlov/core/data/utils.py