Skip to content

Commit

Permalink
Make warnings for DeprecationWarning consistent (#2332)
Browse files Browse the repository at this point in the history
  • Loading branch information
ahopkins committed Dec 8, 2021
1 parent 426742b commit b2a1bc6
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 33 deletions.
3 changes: 3 additions & 0 deletions sanic/app.py
Expand Up @@ -42,6 +42,7 @@
Union,
)
from urllib.parse import urlencode, urlunparse
from warnings import filterwarnings

from sanic_routing.exceptions import ( # type: ignore
FinalizationError,
Expand Down Expand Up @@ -95,6 +96,8 @@
if OS_IS_WINDOWS:
enable_windows_color_support()

filterwarnings("once", category=DeprecationWarning)


class Sanic(BaseSanic, metaclass=TouchUpMeta):
"""
Expand Down
20 changes: 10 additions & 10 deletions sanic/handlers.py
@@ -1,5 +1,6 @@
from inspect import signature
from typing import Dict, List, Optional, Tuple, Type
from warnings import warn

from sanic.errorpages import BaseRenderer, HTMLRenderer, exception_response
from sanic.exceptions import (
Expand Down Expand Up @@ -53,16 +54,15 @@ def finalize(cls, error_handler, fallback: Optional[str] = None):

sig = signature(error_handler.lookup)
if len(sig.parameters) == 1:
error_logger.warning(
DeprecationWarning(
"You are using a deprecated error handler. The lookup "
"method should accept two positional parameters: "
"(exception, route_name: Optional[str]). "
"Until you upgrade your ErrorHandler.lookup, Blueprint "
"specific exceptions will not work properly. Beginning "
"in v22.3, the legacy style lookup method will not "
"work at all."
),
warn(
"You are using a deprecated error handler. The lookup "
"method should accept two positional parameters: "
"(exception, route_name: Optional[str]). "
"Until you upgrade your ErrorHandler.lookup, Blueprint "
"specific exceptions will not work properly. Beginning "
"in v22.3, the legacy style lookup method will not "
"work at all.",
DeprecationWarning,
)
error_handler._lookup = error_handler._legacy_lookup

Expand Down
28 changes: 13 additions & 15 deletions sanic/server/protocols/websocket_protocol.py
@@ -1,4 +1,5 @@
from typing import TYPE_CHECKING, Optional, Sequence, cast
from warnings import warn

from websockets.connection import CLOSED, CLOSING, OPEN
from websockets.server import ServerConnection
Expand Down Expand Up @@ -34,27 +35,24 @@ def __init__(
self.websocket_max_size = websocket_max_size
if websocket_max_queue is not None and websocket_max_queue > 0:
# TODO: Reminder remove this warning in v22.3
error_logger.warning(
DeprecationWarning(
"Websocket no longer uses queueing, so websocket_max_queue"
" is no longer required."
)
warn(
"Websocket no longer uses queueing, so websocket_max_queue"
" is no longer required.",
DeprecationWarning,
)
if websocket_read_limit is not None and websocket_read_limit > 0:
# TODO: Reminder remove this warning in v22.3
error_logger.warning(
DeprecationWarning(
"Websocket no longer uses read buffers, so "
"websocket_read_limit is not required."
)
warn(
"Websocket no longer uses read buffers, so "
"websocket_read_limit is not required.",
DeprecationWarning,
)
if websocket_write_limit is not None and websocket_write_limit > 0:
# TODO: Reminder remove this warning in v22.3
error_logger.warning(
DeprecationWarning(
"Websocket no longer uses write buffers, so "
"websocket_write_limit is not required."
)
warn(
"Websocket no longer uses write buffers, so "
"websocket_write_limit is not required.",
DeprecationWarning,
)
self.websocket_ping_interval = websocket_ping_interval
self.websocket_ping_timeout = websocket_ping_timeout
Expand Down
14 changes: 6 additions & 8 deletions tests/test_exceptions_handler.py
Expand Up @@ -218,20 +218,18 @@ def lookup(self, exception):

exception_handler_app.error_handler = CustomErrorHandler()

with caplog.at_level(logging.WARNING):
_, response = exception_handler_app.test_client.get("/1")

for record in caplog.records:
if record.message.startswith("You are"):
break

assert record.message == (
message = (
"You are using a deprecated error handler. The lookup method should "
"accept two positional parameters: (exception, route_name: "
"Optional[str]). Until you upgrade your ErrorHandler.lookup, "
"Blueprint specific exceptions will not work properly. Beginning in "
"v22.3, the legacy style lookup method will not work at all."
)
with pytest.warns(DeprecationWarning) as record:
_, response = exception_handler_app.test_client.get("/1")

assert len(record) == 1
assert record[0].message.args[0] == message
assert response.status == 400


Expand Down

0 comments on commit b2a1bc6

Please sign in to comment.