Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make warnings for DeprecationWarning consistent #2332

Merged
merged 3 commits into from Dec 8, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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