Skip to content

Commit

Permalink
Add __str__ and __repr__ to Sanic and Bluepring (#2043)
Browse files Browse the repository at this point in the history
  • Loading branch information
ahopkins authored Mar 3, 2021
1 parent a733d32 commit 93a697f
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 1 deletion.
6 changes: 5 additions & 1 deletion sanic/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,8 @@ class BaseSanic(
ExceptionMixin,
metaclass=Base,
):
...
def __str__(self) -> str:
return f"<{self.__class__.__name__} {self.name}>"

def __repr__(self) -> str:
return f'{self.__class__.__name__}(name="{self.name}")'
17 changes: 17 additions & 0 deletions sanic/blueprints.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,23 @@ def __init__(
self.version = version
self.strict_slashes = strict_slashes

def __repr__(self) -> str:
args = ", ".join(
[
f'{attr}="{getattr(self, attr)}"'
if isinstance(getattr(self, attr), str)
else f"{attr}={getattr(self, attr)}"
for attr in (
"name",
"url_prefix",
"host",
"version",
"strict_slashes",
)
]
)
return f"Blueprint({args})"

def route(self, *args, **kwargs):
kwargs["apply"] = False
return super().route(*args, **kwargs)
Expand Down
43 changes: 43 additions & 0 deletions tests/test_base.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import pytest

from sanic import Blueprint, Sanic


@pytest.fixture
def app():
return Sanic("my_app")


@pytest.fixture
def bp(app):
return Blueprint("my_bp")


def test_app_str(app):
assert str(app) == "<Sanic my_app>"


def test_app_repr(app):
assert repr(app) == 'Sanic(name="my_app")'


def test_bp_str(bp):
assert str(bp) == "<Blueprint my_bp>"


def test_bp_repr(bp):
assert repr(bp) == (
'Blueprint(name="my_bp", url_prefix=None, host=None, '
"version=None, strict_slashes=None)"
)


def test_bp_repr_with_values(bp):
bp.host = "example.com"
bp.url_prefix = "/foo"
bp.version = 3
bp.strict_slashes = True
assert repr(bp) == (
'Blueprint(name="my_bp", url_prefix="/foo", host="example.com", '
"version=3, strict_slashes=True)"
)

0 comments on commit 93a697f

Please sign in to comment.