From: Ben Darnell Date: Sun, 18 Mar 2018 22:14:33 +0000 (-0400) Subject: concurrent: Deprecate callback argument with run_on_executor X-Git-Tag: v5.1.0b1~37^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=568897d25632b95019b8b2560ed043273bba2257;p=thirdparty%2Ftornado.git concurrent: Deprecate callback argument with run_on_executor --- diff --git a/tornado/concurrent.py b/tornado/concurrent.py index 2245c0bd4..850766818 100644 --- a/tornado/concurrent.py +++ b/tornado/concurrent.py @@ -426,6 +426,12 @@ def run_on_executor(*args, **kwargs): .. versionchanged:: 5.1 Returns a `.Future` compatible with ``await`` instead of a `concurrent.futures.Future`. + + .. deprecated:: 5.1 + + The ``callback`` argument is deprecated and will be removed in + 6.0. The decorator itself is discouraged in new code but will + not be removed in 6.0. """ def run_on_executor_decorator(fn): executor = kwargs.get("executor", "executor") @@ -437,6 +443,8 @@ def run_on_executor(*args, **kwargs): conc_future = getattr(self, executor).submit(fn, self, *args, **kwargs) chain_future(conc_future, async_future) if callback: + warnings.warn("callback arguments are deprecated, use the returned Future instead", + DeprecationWarning) from tornado.ioloop import IOLoop IOLoop.current().add_future( async_future, lambda future: callback(future.result())) diff --git a/tornado/netutil.py b/tornado/netutil.py index 2d55ccf19..08c9d8862 100644 --- a/tornado/netutil.py +++ b/tornado/netutil.py @@ -328,6 +328,10 @@ class Resolver(Configurable): .. versionchanged:: 4.4 Standardized all implementations to raise `IOError`. + + .. deprecated:: 5.1 + The ``callback`` argument is deprecated and will be removed in 6.0. + Use the returned awaitable object instead. """ raise NotImplementedError() diff --git a/tornado/test/netutil_test.py b/tornado/test/netutil_test.py index f9879946f..5c7381853 100644 --- a/tornado/test/netutil_test.py +++ b/tornado/test/netutil_test.py @@ -13,7 +13,7 @@ from tornado.netutil import ( ) from tornado.stack_context import ExceptionStackContext from tornado.testing import AsyncTestCase, gen_test, bind_unused_port -from tornado.test.util import unittest, skipIfNoNetwork +from tornado.test.util import unittest, skipIfNoNetwork, ignore_deprecation try: from concurrent import futures @@ -38,7 +38,8 @@ else: class _ResolverTestMixin(object): def test_localhost(self): - self.resolver.resolve('localhost', 80, callback=self.stop) + with ignore_deprecation(): + self.resolver.resolve('localhost', 80, callback=self.stop) result = self.wait() self.assertIn((socket.AF_INET, ('127.0.0.1', 80)), result) @@ -59,7 +60,8 @@ class _ResolverErrorTestMixin(object): return True # Halt propagation. with ExceptionStackContext(handler): - self.resolver.resolve('an invalid domain', 80, callback=self.stop) + with ignore_deprecation(): + self.resolver.resolve('an invalid domain', 80, callback=self.stop) result = self.wait() self.assertIsInstance(result, Exception) @@ -108,13 +110,12 @@ class OverrideResolverTest(AsyncTestCase, _ResolverTestMixin): } self.resolver = OverrideResolver(BlockingResolver(), mapping) + @gen_test def test_resolve_multiaddr(self): - self.resolver.resolve('google.com', 80, socket.AF_INET, callback=self.stop) - result = self.wait() + result = yield self.resolver.resolve('google.com', 80, socket.AF_INET) self.assertIn((socket.AF_INET, ('1.2.3.4', 80)), result) - self.resolver.resolve('google.com', 80, socket.AF_INET6, callback=self.stop) - result = self.wait() + result = yield self.resolver.resolve('google.com', 80, socket.AF_INET6) self.assertIn((socket.AF_INET6, ('2a02:6b8:7c:40c:c51e:495f:e23a:3', 80, 0, 0)), result)