Skip to content

Commit

Permalink
Normalize bytes objects to str
Browse files Browse the repository at this point in the history
  • Loading branch information
ekzhang committed May 6, 2024
1 parent a2c7c8d commit ad45554
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 4 deletions.
8 changes: 5 additions & 3 deletions sanic/exceptions.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,20 +74,22 @@ def __init__(
)
quiet = quiet or getattr(self.__class__, "quiet", None)
headers = headers or getattr(self.__class__, "headers", {})
if not isinstance(message, str):
# If a `bytes`-like object is provided, normalize it to a string.
message = message.decode("utf8")
if message is None:
cls_message = getattr(self.__class__, "message", None)
if cls_message:
message = cls_message
elif status_code:
msg: bytes = STATUS_CODES.get(status_code, b"")
message = msg.decode("utf8")
message = STATUS_CODES.get(status_code, b"").decode("utf8")

super().__init__(message)

self.status_code = status_code or self.status_code
self.quiet = quiet
self.headers = headers
self.message = message # type: ignore
self.message = message


class HTTPException(SanicException):
Expand Down
2 changes: 1 addition & 1 deletion tests/test_exceptions.py
Original file line number Diff line number Diff line change
Expand Up @@ -402,7 +402,7 @@ def test_exception_aliases():

def test_exception_message_attribute():
assert ServerError("it failed").message == "it failed"
assert ServerError(b"it failed").message == b"it failed"
assert ServerError(b"it failed").message == "it failed"
assert ServerError().message == str(ServerError()) == "Internal Server Error"

class CustomError(SanicException):
Expand Down

0 comments on commit ad45554

Please sign in to comment.