¿Hay una alternativa a parse_qs que maneja punto y coma?

TL; DR

¿Qué bibliotecas / llamadas están disponibles para manejar cadenas de consulta que contienen punto y coma de manera diferente a parse_qs?

>>> urlparse.parse_qs("tagged=python;ruby")
>>> {'tagged': ['python']}
Fondo completo

Estoy trabajando con la API de StackExchange para buscar preguntas etiquetadas.

Buscar Se presenta como tal, con etiquetas separadas por punto y coma:

/2.1/search?order=desc&sort=activity&tagged=python;ruby&site=stackoverflow

Interactuar con la API está bien. El problema viene cuando quiero probar las llamadas, especialmente cuando usohttpretty para burlarse de HTTP.

Bajo el capó,httpretty esta usandourlparse.parse_qs de las bibliotecas estándar de python para analizar la cadena de consulta.

>>> urlparse.parse_qs("tagged=python;ruby")
{'tagged': ['python']}

Claramente eso no funciona bien. Ese es el pequeño ejemplo, aquí hay un fragmento de httpretty (fuera del contexto de prueba).

import requests
import httpretty

httpretty.enable()

httpretty.register_uri(httpretty.GET, "https://api.stackexchange.com/2.1/search", body='{"items":[]}')
resp = requests.get("https://api.stackexchange.com/2.1/search", params={"tagged":"python;ruby"})
httpretty_request = httpretty.last_request()
print(httpretty_request.querystring)

httpretty.disable()
httpretty.reset()

Quiero usar la maquinaria de httpretty, pero necesito una solución paraparse_qs. Puedo hacer un parche de mono, por ahora, pero me encantaría ver qué más se puede hacer.

Respuestas a la pregunta(1)

Su respuesta a la pregunta