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

List query parameters are percent-encoded twice

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

I maintainer di solito rispondono entro 1 giorno

@RaphaelFakhri ci sta già lavorando.

Dal 10/10/2026.

  • #306 di @RaphaelFakhri — aperta

Valutazione

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

Direzione di ricerca

Trova build_query_param ed esegui la riproduzione fornita con httpx.MockTransport per ispezionare il parametro collection_refs decodificato. Controlla i test vicini sui parametri di query e aggiungi copertura per i caratteri riservati; il completamento significa che gli elementi dell’elenco vengono codificati una sola volta e la riproduzione segnala food:pizza.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Description

build_query_param percent-encodes each item of a list parameter with urllib.parse.quote before it joins the items with commas. httpx then encodes the whole query string again, so every character that quote escapes reaches the server double-encoded.

For example, client.feeds.read_collections(collection_refs=["food:pizza"]) sends:

GET /api/v2/feeds/collections?collection_refs=food%253Apizza

The server decodes this once to food%3Apizza instead of food:pizza. Collection references always contain :, so read_collections and delete_collections cannot match any collection. The same applies to any list parameter item that contains a space, :, @, , or another reserved character, for example in get_many_messages(ids=...), member_custom_include and the moderation ids.

getstream-go and stream-node join list items with commas and encode the query string once, so they send collection_refs=food%3Apizza.

Steps to reproduce
import httpx
from getstream import Stream

seen = []
client = Stream(
    api_key="key",
    api_secret="secret",
    transport=httpx.MockTransport(
        lambda r: seen.append(r)
        or httpx.Response(200, json={"duration": "0ms", "collections": []})
    ),
)
client.feeds.read_collections(collection_refs=["food:pizza"])
print(seen[0].url.params["collection_refs"])

Expected output: food:pizza

Actual output: food%3Apizza

Lingua principale
Python
Stelle
25
Fork
14
Merge medio
18h 23m
PR unite (30g)
12

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: 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 GetStream/stream-py

Tutte le issue di GetStream/stream-py

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.