Unchecked multi-value query parameters are sent as a single tuple string
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 78/100
Direzione di ricerca
Inizia con Query.parameters e _build_url, quindi esamina VariableQuery.instance_format per il comportamento di sequenza correlato. Esegui i casi di regressione e di controllo usando URL analizzati e Requests preparate, seguiti dall’intera suite di 148 test con VCR record_mode='none'; il lavoro è completato quando sono presenti chiavi di query ripetute per i valori tupla e il comportamento esistente di liste, scalari, paginazione e metodi dedicati continua a superare i test.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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.
- Lingua principale
- Python
- Stelle
- 29
- Fork
- 32
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Non abbiamo ancora controllato i file di configurazione di questo progetto. Parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di nasa/python_cmr
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
nasa/python_cmr#122 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
nasa/python_cmr#108 ·
-
additional attributesAperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 52/100
nasa/python_cmr#104 ·
-
enhancement
Difficoltà 3/5 1-2 giorni Idoneità per principianti 38/100
nasa/python_cmr#95 · 1 commento ·
-
enhancement
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
nasa/python_cmr#94 ·
Tutte le issue di nasa/python_cmr
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
solana-foundation/pay-kit#341 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
EleutherAI/lm-evaluation-harness#4243 ·
I maintainer di solito rispondono entro 1 giorno
-
area: dashboard bug perceived difficulty: 3
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
Nitjsefnie-Harness-Commons/daedalus#1179 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
cusp-ai-oss/tojax#17 ·
-
Difficoltà 1/5 1-3 ore Idoneità per principianti 88/100