From abbc070ea2e4e7526da6577929dcb8acf0b71a13 Mon Sep 17 00:00:00 2001 From: Ben Darnell Date: Fri, 25 Apr 2025 11:53:44 -0400 Subject: [PATCH] websocket: deprecate callback argument to websocket_connect This was missed in the 6.0-era deprecation of callback arguments. The on_message_callback remains because even in coroutine-oriented code it is often more convenient to use a callback than to loop on read_message. --- tornado/test/websocket_test.py | 9 +++++---- tornado/websocket.py | 11 +++++++++++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/tornado/test/websocket_test.py b/tornado/test/websocket_test.py index 097dca85..1f317fb0 100644 --- a/tornado/test/websocket_test.py +++ b/tornado/test/websocket_test.py @@ -14,7 +14,7 @@ from tornado.log import gen_log, app_log from tornado.netutil import Resolver from tornado.simple_httpclient import SimpleAsyncHTTPClient from tornado.template import DictLoader -from tornado.test.util import abstract_base_test +from tornado.test.util import abstract_base_test, ignore_deprecation from tornado.testing import AsyncHTTPTestCase, gen_test, bind_unused_port, ExpectLog from tornado.web import Application, RequestHandler @@ -333,9 +333,10 @@ class WebSocketTest(WebSocketBaseTestCase): self.assertEqual(response, "hello") def test_websocket_callbacks(self): - websocket_connect( - "ws://127.0.0.1:%d/echo" % self.get_http_port(), callback=self.stop - ) + with ignore_deprecation(): + websocket_connect( + "ws://127.0.0.1:%d/echo" % self.get_http_port(), callback=self.stop + ) ws = self.wait().result() ws.write_message("hello") ws.read_message(self.stop) diff --git a/tornado/websocket.py b/tornado/websocket.py index a7089c81..b719547b 100644 --- a/tornado/websocket.py +++ b/tornado/websocket.py @@ -1675,6 +1675,11 @@ def websocket_connect( .. versionchanged:: 6.3 Added the ``resolver`` argument. + + .. deprecated:: 6.5 + The ``callback`` argument is deprecated and will be removed in Tornado 7.0. + Use the returned Future instead. Note that ``on_message_callback`` is not + deprecated and may still be used. """ if isinstance(url, httpclient.HTTPRequest): assert connect_timeout is None @@ -1699,5 +1704,11 @@ def websocket_connect( resolver=resolver, ) if callback is not None: + warnings.warn( + "The callback argument to websocket_connect is deprecated. " + "Use the returned Future instead.", + DeprecationWarning, + stacklevel=2, + ) IOLoop.current().add_future(conn.connect_future, callback) return conn.connect_future -- 2.47.2