Compare commits
1 Commits
motd-fixes
...
reloader-e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f3035abfae |
@@ -73,14 +73,6 @@ class MOTDTTY(MOTD):
|
|||||||
self.value_width = min(
|
self.value_width = min(
|
||||||
max(map(len, self.data.values())), self.max_value_width
|
max(map(len, self.data.values())), self.max_value_width
|
||||||
)
|
)
|
||||||
if self.extra:
|
|
||||||
self.key_width = max(
|
|
||||||
self.key_width, max(map(len, self.extra.keys()))
|
|
||||||
)
|
|
||||||
self.value_width = min(
|
|
||||||
max((*map(len, self.extra.values()), self.value_width)),
|
|
||||||
self.max_value_width,
|
|
||||||
)
|
|
||||||
self.logo_lines = self.logo.split("\n") if self.logo else []
|
self.logo_lines = self.logo.split("\n") if self.logo else []
|
||||||
self.logo_line_length = 24
|
self.logo_line_length = 24
|
||||||
self.centering_length = (
|
self.centering_length = (
|
||||||
@@ -112,7 +104,7 @@ class MOTDTTY(MOTD):
|
|||||||
self._render_data(lines, self.data, 0)
|
self._render_data(lines, self.data, 0)
|
||||||
if self.extra:
|
if self.extra:
|
||||||
logo_part = self._get_logo_part(len(lines) - 4)
|
logo_part = self._get_logo_part(len(lines) - 4)
|
||||||
lines.append(f"│ {logo_part} ├{display_filler}┤")
|
lines.append(f"| {logo_part} ├{display_filler}┤")
|
||||||
self._render_data(lines, self.extra, len(lines) - 4)
|
self._render_data(lines, self.extra, len(lines) - 4)
|
||||||
|
|
||||||
self._render_fill(lines)
|
self._render_fill(lines)
|
||||||
|
|||||||
@@ -90,7 +90,6 @@ else: # no cov
|
|||||||
class StartupMixin(metaclass=SanicMeta):
|
class StartupMixin(metaclass=SanicMeta):
|
||||||
_app_registry: ClassVar[Dict[str, Sanic]]
|
_app_registry: ClassVar[Dict[str, Sanic]]
|
||||||
|
|
||||||
name: str
|
|
||||||
config: Config
|
config: Config
|
||||||
listeners: Dict[str, List[ListenerType[Any]]]
|
listeners: Dict[str, List[ListenerType[Any]]]
|
||||||
state: ApplicationState
|
state: ApplicationState
|
||||||
@@ -606,7 +605,6 @@ class StartupMixin(metaclass=SanicMeta):
|
|||||||
server = "ASGI" if self.asgi else "unknown" # type: ignore
|
server = "ASGI" if self.asgi else "unknown" # type: ignore
|
||||||
|
|
||||||
display = {
|
display = {
|
||||||
"app": self.name,
|
|
||||||
"mode": " ".join(mode),
|
"mode": " ".join(mode),
|
||||||
"server": server,
|
"server": server,
|
||||||
"python": platform.python_version(),
|
"python": platform.python_version(),
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ from __future__ import annotations
|
|||||||
from inspect import isawaitable
|
from inspect import isawaitable
|
||||||
from typing import TYPE_CHECKING, Any, Callable, Iterable, Optional
|
from typing import TYPE_CHECKING, Any, Callable, Iterable, Optional
|
||||||
|
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from sanic import Sanic
|
from sanic import Sanic
|
||||||
|
|
||||||
@@ -12,6 +11,7 @@ def trigger_events(
|
|||||||
events: Optional[Iterable[Callable[..., Any]]],
|
events: Optional[Iterable[Callable[..., Any]]],
|
||||||
loop,
|
loop,
|
||||||
app: Optional[Sanic] = None,
|
app: Optional[Sanic] = None,
|
||||||
|
**kwargs,
|
||||||
):
|
):
|
||||||
"""
|
"""
|
||||||
Trigger event callbacks (functions or async)
|
Trigger event callbacks (functions or async)
|
||||||
@@ -22,8 +22,12 @@ def trigger_events(
|
|||||||
if events:
|
if events:
|
||||||
for event in events:
|
for event in events:
|
||||||
try:
|
try:
|
||||||
result = event() if not app else event(app)
|
result = event(**kwargs) if not app else event(app, **kwargs)
|
||||||
except TypeError:
|
except TypeError:
|
||||||
result = event(loop) if not app else event(app, loop)
|
result = (
|
||||||
|
event(loop, **kwargs)
|
||||||
|
if not app
|
||||||
|
else event(app, loop, **kwargs)
|
||||||
|
)
|
||||||
if isawaitable(result):
|
if isawaitable(result):
|
||||||
loop.run_until_complete(result)
|
loop.run_until_complete(result)
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ from __future__ import annotations
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from asyncio import new_event_loop
|
from asyncio import new_event_loop
|
||||||
from itertools import chain
|
from itertools import chain
|
||||||
from multiprocessing.connection import Connection
|
from multiprocessing.connection import Connection
|
||||||
@@ -64,7 +63,7 @@ class Reloader:
|
|||||||
trigger_events(before_trigger, loop, app)
|
trigger_events(before_trigger, loop, app)
|
||||||
self.reload(",".join(changed) if changed else "unknown")
|
self.reload(",".join(changed) if changed else "unknown")
|
||||||
if after_trigger:
|
if after_trigger:
|
||||||
trigger_events(after_trigger, loop, app)
|
trigger_events(after_trigger, loop, app, changed=changed)
|
||||||
sleep(self.interval)
|
sleep(self.interval)
|
||||||
else:
|
else:
|
||||||
if reloader_stop:
|
if reloader_stop:
|
||||||
|
|||||||
@@ -31,11 +31,10 @@ def test_motd_with_expected_info(app, run_startup):
|
|||||||
logs = run_startup(app)
|
logs = run_startup(app)
|
||||||
|
|
||||||
assert logs[1][2] == f"Sanic v{__version__}"
|
assert logs[1][2] == f"Sanic v{__version__}"
|
||||||
assert logs[3][2] == "app: test_motd_with_expected_info"
|
assert logs[3][2] == "mode: debug, single worker"
|
||||||
assert logs[4][2] == "mode: debug, single worker"
|
assert logs[4][2] == "server: sanic, HTTP/1.1"
|
||||||
assert logs[5][2] == "server: sanic, HTTP/1.1"
|
assert logs[5][2] == f"python: {platform.python_version()}"
|
||||||
assert logs[6][2] == f"python: {platform.python_version()}"
|
assert logs[6][2] == f"platform: {platform.platform()}"
|
||||||
assert logs[7][2] == f"platform: {platform.platform()}"
|
|
||||||
|
|
||||||
|
|
||||||
def test_motd_init():
|
def test_motd_init():
|
||||||
@@ -62,7 +61,7 @@ def test_motd_display(caplog):
|
|||||||
│ │
|
│ │
|
||||||
├───────────────────────┬────────┤
|
├───────────────────────┬────────┤
|
||||||
│ foobar │ one: 1 │
|
│ foobar │ one: 1 │
|
||||||
│ ├────────┤
|
| ├────────┤
|
||||||
│ │ two: 2 │
|
│ │ two: 2 │
|
||||||
└───────────────────────┴────────┘
|
└───────────────────────┴────────┘
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -517,7 +517,7 @@ def test_stack_trace_on_not_found(app, static_file_directory, caplog):
|
|||||||
counter = Counter([(r[0], r[1]) for r in caplog.record_tuples])
|
counter = Counter([(r[0], r[1]) for r in caplog.record_tuples])
|
||||||
|
|
||||||
assert response.status == 404
|
assert response.status == 404
|
||||||
assert counter[("sanic.root", logging.INFO)] == 10
|
assert counter[("sanic.root", logging.INFO)] == 9
|
||||||
assert counter[("sanic.root", logging.ERROR)] == 0
|
assert counter[("sanic.root", logging.ERROR)] == 0
|
||||||
assert counter[("sanic.error", logging.ERROR)] == 0
|
assert counter[("sanic.error", logging.ERROR)] == 0
|
||||||
assert counter[("sanic.server", logging.INFO)] == 2
|
assert counter[("sanic.server", logging.INFO)] == 2
|
||||||
@@ -536,7 +536,7 @@ def test_no_stack_trace_on_not_found(app, static_file_directory, caplog):
|
|||||||
counter = Counter([(r[0], r[1]) for r in caplog.record_tuples])
|
counter = Counter([(r[0], r[1]) for r in caplog.record_tuples])
|
||||||
|
|
||||||
assert response.status == 404
|
assert response.status == 404
|
||||||
assert counter[("sanic.root", logging.INFO)] == 10
|
assert counter[("sanic.root", logging.INFO)] == 9
|
||||||
assert counter[("sanic.root", logging.ERROR)] == 0
|
assert counter[("sanic.root", logging.ERROR)] == 0
|
||||||
assert counter[("sanic.error", logging.ERROR)] == 0
|
assert counter[("sanic.error", logging.ERROR)] == 0
|
||||||
assert counter[("sanic.server", logging.INFO)] == 2
|
assert counter[("sanic.server", logging.INFO)] == 2
|
||||||
|
|||||||
Reference in New Issue
Block a user