Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Async fetch_related_object_async / fetch_event_async send "usage" as an API parameter

Abierto Apto para principiantes
#1,948 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
90/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
python

Línea de trabajo

Empieza por raw_request y raw_request_async en stripe/_stripe_client.py y luego rastrea los helpers de eventos asíncronos que pasan usage. Ejecuta la reproducción proporcionada contra stripe-mock y confirma que las solicitudes GET y POST asíncronas omiten el parámetro interno usage y conservan los datos de telemetría proporcionados por el llamante; agrega o actualiza pruebas enfocadas del cliente para ambas rutas.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

What happens

StripeClient.raw_request_async does not remove the internal usage keyword from params the way raw_request does. The SDK's own event notification helpers pass usage=[...] to it, so every async fetch adds usage[0]=... to the request.

For a related object with a v1 URL the API rejects the request as an unknown parameter. Against stripe-mock:

sync:  Meter
async error: InvalidRequestError Request req_123: Request validation error: ... additional properties are not allowed

Request URLs observed with a stub HTTP client for the same notification:

sync  get https://api.stripe.com/v1/accounts/acct_123
async get https://api.stripe.com/v1/accounts/acct_123?usage[0]=fetch_related_object

fetch_event_async() has the same problem (/v2/core/events/evt_...?usage[0]=pushed_event_pull&usage[1]=pushed_event_pull_async). The request telemetry also reports ["raw_request", "async"] instead of the usage the caller passed.

What should happen

The async path should behave like the sync path: usage is consumed as telemetry and never sent to the API.

Minimal repro
import asyncio, json, stripe

client = stripe.StripeClient("sk_test_123", base_addresses={"api": "http://localhost:12111"})  # stripe-mock
payload = json.dumps({
    "id": "evt_1", "object": "v2.core.event",
    "type": "v1.billing.meter.error_report_triggered",
    "created": "2024-01-01T00:00:00Z", "livemode": False,
    "related_object": {"id": "mtr_123", "type": "billing.meter", "url": "/v1/billing/meters/mtr_123"},
})
notif = client.parse_event_notification_without_verification(payload)
notif.fetch_related_object()                        # works
asyncio.run(notif.fetch_related_object_async())     # InvalidRequestError
Root cause

In stripe/_stripe_client.py, raw_request does usage = params.pop("usage", ["raw_request"]), but raw_request_async hardcodes usage=["raw_request"] and leaves usage inside params, which are then encoded into the query string (GET) or body (POST).

Tested on master at aff846c (16.0.0).

Lenguaje dominante
Python
Estrellas
2.1k
Forks
539
Merge medio
3 d 5 h
PR fusionados (30 d)
17

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de stripe/stripe-python

Todos los issues de stripe/stripe-python

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.