Stop using twisted.internet.defer.returnValue (#18020)

`defer.returnValue` was only needed in Python 2; in Python 3, a simple
`return` is fine.

`twisted.internet.defer.returnValue` is deprecated as of Twisted 24.7.0.

Most uses of `returnValue` in synapse were removed a while back; this
cleans up some remaining bits.
This commit is contained in:
Colin Watson 2024-12-20 10:57:59 +00:00 committed by GitHub
parent 2d23250da7
commit d69c00b5a1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 11 additions and 27 deletions

1
changelog.d/18020.misc Normal file
View File

@ -0,0 +1 @@
Remove some remaining uses of `twisted.internet.defer.returnValue`. Contributed by Colin Watson.

View File

@ -245,7 +245,7 @@ class SynapseCmd(cmd.Cmd):
if "flows" not in json_res: if "flows" not in json_res:
print("Failed to find any login flows.") print("Failed to find any login flows.")
defer.returnValue(False) return False
flow = json_res["flows"][0] # assume first is the one we want. flow = json_res["flows"][0] # assume first is the one we want.
if "type" not in flow or "m.login.password" != flow["type"] or "stages" in flow: if "type" not in flow or "m.login.password" != flow["type"] or "stages" in flow:
@ -254,8 +254,8 @@ class SynapseCmd(cmd.Cmd):
"Unable to login via the command line client. Please visit " "Unable to login via the command line client. Please visit "
"%s to login." % fallback_url "%s to login." % fallback_url
) )
defer.returnValue(False) return False
defer.returnValue(True) return True
def do_emailrequest(self, line): def do_emailrequest(self, line):
"""Requests the association of a third party identifier """Requests the association of a third party identifier

View File

@ -78,7 +78,7 @@ class TwistedHttpClient(HttpClient):
url, data, headers_dict={"Content-Type": ["application/json"]} url, data, headers_dict={"Content-Type": ["application/json"]}
) )
body = yield readBody(response) body = yield readBody(response)
defer.returnValue((response.code, body)) return response.code, body
@defer.inlineCallbacks @defer.inlineCallbacks
def get_json(self, url, args=None): def get_json(self, url, args=None):
@ -88,7 +88,7 @@ class TwistedHttpClient(HttpClient):
url = "%s?%s" % (url, qs) url = "%s?%s" % (url, qs)
response = yield self._create_get_request(url) response = yield self._create_get_request(url)
body = yield readBody(response) body = yield readBody(response)
defer.returnValue(json.loads(body)) return json.loads(body)
def _create_put_request(self, url, json_data, headers_dict: Optional[dict] = None): def _create_put_request(self, url, json_data, headers_dict: Optional[dict] = None):
"""Wrapper of _create_request to issue a PUT request""" """Wrapper of _create_request to issue a PUT request"""
@ -134,7 +134,7 @@ class TwistedHttpClient(HttpClient):
response = yield self._create_request(method, url) response = yield self._create_request(method, url)
body = yield readBody(response) body = yield readBody(response)
defer.returnValue(json.loads(body)) return json.loads(body)
@defer.inlineCallbacks @defer.inlineCallbacks
def _create_request( def _create_request(
@ -173,7 +173,7 @@ class TwistedHttpClient(HttpClient):
if self.verbose: if self.verbose:
print("Status %s %s" % (response.code, response.phrase)) print("Status %s %s" % (response.code, response.phrase))
print(pformat(list(response.headers.getAllRawHeaders()))) print(pformat(list(response.headers.getAllRawHeaders())))
defer.returnValue(response) return response
def sleep(self, seconds): def sleep(self, seconds):
d = defer.Deferred() d = defer.Deferred()

View File

@ -20,13 +20,10 @@
# #
import logging import logging
from types import TracebackType from typing import Optional
from typing import Optional, Type
from opentracing import Scope, ScopeManager, Span from opentracing import Scope, ScopeManager, Span
import twisted
from synapse.logging.context import ( from synapse.logging.context import (
LoggingContext, LoggingContext,
current_context, current_context,
@ -112,9 +109,6 @@ class _LogContextScope(Scope):
""" """
A custom opentracing scope, associated with a LogContext A custom opentracing scope, associated with a LogContext
* filters out _DefGen_Return exceptions which arise from calling
`defer.returnValue` in Twisted code
* When the scope is closed, the logcontext's active scope is reset to None. * When the scope is closed, the logcontext's active scope is reset to None.
and - if enter_logcontext was set - the logcontext is finished too. and - if enter_logcontext was set - the logcontext is finished too.
""" """
@ -146,17 +140,6 @@ class _LogContextScope(Scope):
self._finish_on_close = finish_on_close self._finish_on_close = finish_on_close
self._enter_logcontext = enter_logcontext self._enter_logcontext = enter_logcontext
def __exit__(
self,
exc_type: Optional[Type[BaseException]],
value: Optional[BaseException],
traceback: Optional[TracebackType],
) -> None:
if exc_type == twisted.internet.defer._DefGen_Return:
# filter out defer.returnValue() calls
exc_type = value = traceback = None
super().__exit__(exc_type, value, traceback)
def __str__(self) -> str: def __str__(self) -> str:
return f"Scope<{self.span}>" return f"Scope<{self.span}>"

View File

@ -162,7 +162,7 @@ def _check_yield_points(
d = result.throwExceptionIntoGenerator(gen) d = result.throwExceptionIntoGenerator(gen)
else: else:
d = gen.send(result) d = gen.send(result)
except (StopIteration, defer._DefGen_Return) as e: except StopIteration as e:
if current_context() != expected_context: if current_context() != expected_context:
# This happens when the context is lost sometime *after* the # This happens when the context is lost sometime *after* the
# final yield and returning. E.g. we forgot to yield on a # final yield and returning. E.g. we forgot to yield on a
@ -183,7 +183,7 @@ def _check_yield_points(
) )
) )
changes.append(err) changes.append(err)
# The `StopIteration` or `_DefGen_Return` contains the return value from the # The `StopIteration` contains the return value from the
# generator. # generator.
return cast(T, e.value) return cast(T, e.value)