L’ANALISI
OpenAI Python 3.35.1: fix per beta Realtime e websockets 13
Analisi pratica di openai-python 3.35.1: errore del client sincrono beta Realtime con websockets 13, correzione, test dichiarati e checklist di aggiornamento.

In breve: OpenAI Python 3.35.1 va aggiornato con priorità se un’applicazione usa il percorso sincrono `client.beta.realtime` insieme a websockets 13.x: la 3.35.0 poteva fallire alla prima ricezione con `TypeError`. Il fix sostituisce la chiamata incompatibile con l’helper SDK che conserva i byte, senza modificare firme pubbliche o valore restituito.
Perché la 3.35.0 non bastava
La release 3.35.0 aveva corretto la ricezione binaria nel percorso Realtime principale, ma il client sincrono beta conservava una chiamata diretta a `recv(decode=False)`. Nella API sincrona di websockets 13.x l’argomento `decode` non esiste, quindi il messaggio poteva produrre `TypeError` prima di essere restituito.
Che cosa cambia nel codice
La 3.35.1 sostituisce la chiamata diretta del metodo beta `recv_bytes()` con `_recv_bytes`, l’helper già usato dagli altri percorsi sincroni dell’SDK. L’obiettivo è mantenere invariati i byte restituiti e la firma pubblica, adattando internamente la ricezione alle versioni supportate della dipendenza.
Chi è interessato dal bug
Il caso documentato richiede tre condizioni: uso del client Python, connessione beta Realtime sincrona e dipendenza websockets 13.x. Il percorso asincrono, il client Realtime non beta e versioni diverse della libreria sono stati inclusi nella matrice di regressione, ma non sono descritti come il punto di rottura originario.
Quali prove dichiara il progetto
Il pull request riporta 191 test focalizzati superati con websockets 13.1 e 15.0.1. La versione pubblicata 3.35.0 riproduce due errori nei casi beta su 13.1, mentre una wheel locale con il fix supera 64 nuovi casi di connessione, inclusi testo, binario, redirect, credenziali, header, eventi e pulizia.
Perché è un delta operativo
Chi ha aggiornato subito alla 3.35.0 per il precedente fix Realtime può restare esposto se usa ancora l’endpoint beta sincrono. La 3.35.1 trasforma quindi una correzione parziale in una copertura coerente dei due percorsi, ma non sostituisce un test con la combinazione reale di SDK, websockets e wrapper applicativi.
Compatibilità e rollback
Il progetto dichiara firme pubbliche e byte restituiti invariati. Il rischio di migrazione è quindi limitato, ma conviene bloccare esplicitamente le versioni, eseguire un test con frame di testo e binari e conservare la possibilità di rollback se middleware o monkey patch dipendono dall’implementazione precedente.
Condizioni e limitazioni
Il fix riguarda il client Python sincrono beta Realtime con websockets 13.x. Le prove dichiarate usano server locali e credenziali sintetiche, non il servizio ospitato; questo run non ha eseguito una sessione Realtime reale né verificato applicazioni che dipendono da wrapper propri.
Checklist pratica
- Controllare se il codice usa `client.beta.realtime` in modalità sincrona.
- Registrare le versioni effettive di `openai` e `websockets` nell’ambiente di esecuzione.
- Riprodurre in staging una ricezione con openai-python 3.35.0 e websockets 13.1 se serve confermare l’esposizione.
- Aggiornare a openai-python 3.35.1 con dipendenze bloccate e ricostruire l’ambiente.
- Inviare e ricevere almeno un frame testuale e uno binario attraverso `recv_bytes()`.
- Verificare redirect, header di autorizzazione e chiusura pulita se il proprio gateway li modifica.
- Monitorare `TypeError`, disconnessioni e messaggi persi prima di estendere il rollout.