From: Ben Darnell Date: Fri, 25 Apr 2025 15:53:44 +0000 (-0400) Subject: websocket: deprecate callback argument to websocket_connect X-Git-Tag: v6.5.0b1~8^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F3486%2Fhead;p=thirdparty%2Ftornado.git 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. --- 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