SPOT : UserDataStreamEventsResponse does not deserialize correctly, instance is always None
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 45/100
Direzione di ricerca
Inizia con UserDataStreamEventsResponse.model_validate e i relativi modelli concreti degli eventi, quindi confronta il comportamento dell’unione discriminata con il problema SymbolFilters in #476 e il problema correlato #405. Il lavoro è completo quando un evento come balanceUpdate produce un’istanza di evento tipizzata e conserva i suoi campi invece di lasciare actual_instance come None.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Description
The UserDataStreamEventsResponse model fails to parse user data stream events into their concrete event types (BalanceUpdate, ExecutionReport, OutboundAccountPosition, EventStreamTerminated, etc.). All input results in None and the event data is completely lost.
Expected Behavior
When validating a user data stream event, the model should:
- Parse the event dictionary into the appropriate concrete event type based on the
"e"field - Return a strongly-typed instance (e.g.,
BalanceUpdate,ExecutionReport) - Preserve all event data fields
Example:
from binance_sdk_spot.websocket_api.models import UserDataStreamEventsResponse
event = {
"e": "balanceUpdate",
"E": 1573200697110,
"a": "BTC",
"d": "100.00000000",
"T": 1573200697068
}
result = UserDataStreamEventsResponse.model_validate(event)
# Expected: result is a BalanceUpdate instance with all fields accessible
# Expected: result.a == "BTC"
# Expected: result.d == "100.00000000"
# Expected: result.E == 1573200697110
# Expected: result.e == "balanceUpdate"
# Expected: result.T == 1573200697068
Actual Behavior
The parsing always fails and returns None, losing all event data:
result = UserDataStreamEventsResponse.model_validate(event)
# Actual: result.actual_instance is None
# Actual: All event data is lost
# Actual: Cannot access event fields
Possible Root Cause
The model uses Pydantic's discriminated union pattern but fails to properly discriminate between event types. Issues include:
- Schema Validation Failure: The discriminator field or schema mapping is not correctly configured
- Type Resolution Failure: The model cannot resolve which concrete event type to instantiate
- Silent Failure: Instead of raising validation errors, it silently returns
None
This is similar to the SymbolFilters discriminated union issue that was previously identified, where filter type discrimination failed.
Impact
- Complete Data Loss: All user data stream events are lost when using this model
- No Balance Updates: Balance changes from
outboundAccountPositionevents cannot be processed - No Order Updates: Order status changes from
executionReportevents cannot be tracked - No Stream Monitoring: Stream termination events cannot be detected
Related Issues
- Similar to #476 discriminated union parsing issue
References
Affected Version: >=2.1.0
Related or same as #405
- Lingua principale
- Python
- Stelle
- 2.9k
- Fork
- 699
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
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 binance/binance-connector-python
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
binance/binance-connector-python#514 · 1 commento ·
-
Answered
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
binance/binance-connector-python#502 · 3 commenti ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 68/100
binance/binance-connector-python#553 · 2 commenti ·
-
Answered
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
binance/binance-connector-python#513 · 2 commenti ·
-
Answered
Difficoltà 2/5 1-3 ore Idoneità per principianti 56/100
binance/binance-connector-python#512 · 1 commento ·
Tutte le issue di binance/binance-connector-python
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
stephrobert/dsoxlab#238 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
sublimehq/package_control#1780 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
nwg-piotr/nwg-displays#145 ·