Unchecked multi-value query parameters are sent as a single tuple string
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 78/100
Línea de trabajo
Comienza con Query.parameters y _build_url, y después inspecciona VariableQuery.instance_format para el comportamiento de secuencia relacionado. Ejecuta los casos de regresión y de control usando URLs analizadas y Requests preparados, seguidos de la suite completa de 148 pruebas con VCR record_mode='none'; el trabajo estará terminado cuando haya claves de consulta repetidas para los valores de tupla y el comportamiento existente de listas, escalares, paginación y métodos dedicados siga pasando.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Reproduction
On develop at 9f7648ccb925b9c0eb50241e35f15d6454e89505, the unchecked multi-value path in Query.parameters stores a tuple under a key ending in [], but _build_url only expands lists.
from cmr import CollectionQuery
query = CollectionQuery().parameters(data_center=["FIRST", "SECOND"])
print(query._build_url())
The query string is data_center[]=('FIRST', 'SECOND'). It should be data_center[]=FIRST&data_center[]=SECOND. Singleton and empty iterables are also serialized as tuple representations. The same base-class behavior affects every query type and reaches requests made by results, get, and hits.
VariableQuery.instance_format also accepts sequences, but a tuple argument has the same problem without the existing array suffix.
Expected behavior
Expand both list and tuple parameter values into repeated query keys, without adding a second [] to keys that already have one. Keep the existing stored parameter representation, dedicated-method tuple unpacking, scalar handling, and pagination behavior.
Nineteen new regression/control cases use parsed URLs and real Requests prepared requests with only the transport replaced. Seventeen fail on unchanged code, while the existing list/scalar controls pass. The focused fix passes all 148 tests, with existing VCR cassettes replayed in record_mode='none' so no live CMR requests are made.
- Lenguaje dominante
- Python
- Estrellas
- 29
- Forks
- 32
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Aún no hemos revisado los archivos de configuración de este proyecto. 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 nasa/python_cmr
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
nasa/python_cmr#122 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
nasa/python_cmr#108 ·
-
additional attributesAbierto
Dificultad 3/5 1-2 días Aptitud para principiantes 52/100
nasa/python_cmr#104 ·
-
enhancement
Dificultad 3/5 1-2 días Aptitud para principiantes 38/100
nasa/python_cmr#95 · 1 comentario ·
-
enhancement
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
nasa/python_cmr#94 ·
Todos los issues de nasa/python_cmr
Issues similares
-
pydanty:is-working
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
pydantic/pydantic-ai#8843 ·
Los mantenedores suelen responder en 1 día
-
breaking change enhancement server
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
sktime/sktime#11310 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
needs-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
Los mantenedores suelen responder en 1 día