URIBuilder.extend_query_with drops existing parameters that have an empty value
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 86/100
Línea de trabajo
Empieza por URIBuilder.extend_query_with e inspecciona su uso de urllib.parse.parse_qsl; el issue identifica el tratamiento de los valores vacíos, que hace que se pierdan los pares de query existentes. Añade una prueba de regresión para ampliar a= con un par y con una lista vacía, y luego ejecuta las pruebas pertinentes para URIBuilder. El objetivo se cumple cuando en ambos casos a= se conserva en la query resultante.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
>>> from rfc3986.builder import URIBuilder
>>> URIBuilder(query="a=").extend_query_with([("b", "c")]).query
'b=c' # expected 'a=&b=c'
>>> URIBuilder(query="a=").extend_query_with([]).query
'' # expected 'a='
extend_query_with re-parses the existing query with urllib.parse.parse_qsl(self.query or ""), whose default keep_blank_values=False silently drops every pair with an empty value, so extending a query can lose parameters that were there before. a= and a are meaningful to many servers (presence of a flag), and the docstring describes the method as extending the existing query, not filtering it.
Reproduced on 2.0.0 (main 3bd3832). The fix is parse_qsl(self.query or "", keep_blank_values=True). Happy to send a PR with a test if you would take one.
- Lenguaje dominante
- Python
- Estrellas
- 189
- Forks
- 43
- Merge medio
- 12 h 14 min
- PR fusionados (30 d)
- 2
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de python-hyper/rfc3986
-
ParseResultBytes.unsplit() raises AttributeError for a reference without an authorityPosiblemente ocupada @mayuriphad la tomó hace 1 día. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
python-hyper/rfc3986#163 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
python-hyper/rfc3986#138 · 1 comentario ·
-
sdist is missing `tox.ini`Quizá libre de nuevo Un pull request para esta issue se cerró sin fusionarse. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 55/100
python-hyper/rfc3986#129 ·
-
wrong parseAbierto
Dificultad 3/5 1-2 días Aptitud para principiantes 38/100
python-hyper/rfc3986#128 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
python-hyper/rfc3986#123 · 2 comentarios ·
Todos los issues de python-hyper/rfc3986
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
AstrBotDevs/AstrBot#10720 ·
Los mantenedores suelen responder en 1 día
-
fix(xiaomi): curated picker list still offers six ids that return 400 (plan-limited vs retired)Abiertocause/upstream comp/cli P2 provider/other tool/file type/bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
NousResearch/hermes-agent#143900 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 85/100
WLAN-Pi/wlanpi-profiler#341 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
Los mantenedores suelen responder en 1 día