Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Unchecked multi-value query parameters are sent as a single tuple string

Aperta Adatta ai principianti
#123 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
78/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
python
Ambito
api

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

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di nasa/python_cmr

Tutte le issue di nasa/python_cmr

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.