Allow for simple signals

This commit is contained in:
Adam Hopkins 2023-08-30 12:48:04 +03:00
parent 38ff9069f3
commit dcea7da2e1
No known key found for this signature in database
GPG Key ID: 9F85EE6C807303FB

View File

@ -39,6 +39,7 @@ class Event(Enum):
RESERVED_NAMESPACES = {
"sanic": ("sanic.__signal__.__init__",),
"server": (
Event.SERVER_EXCEPTION_REPORT.value,
Event.SERVER_INIT_AFTER.value,
@ -65,6 +66,8 @@ RESERVED_NAMESPACES = {
),
}
GENERIC_SIGNAL_FORMAT = "__generic__.__signal__.%s"
def _blank():
...
@ -89,11 +92,26 @@ class SignalRouter(BaseRouter):
self.allow_fail_builtin = True
self.ctx.loop = None
@staticmethod
def format_event(event: str) -> str:
"""Ensure event strings in proper format
Args:
event (str): event string
Returns:
str: formatted event string
"""
if "." not in event:
event = GENERIC_SIGNAL_FORMAT % event
return event
def get( # type: ignore
self,
event: str,
condition: Optional[Dict[str, str]] = None,
):
event = self.format_event(event)
extra = condition or {}
try:
group, param_basket = self.find_route(
@ -133,6 +151,7 @@ class SignalRouter(BaseRouter):
fail_not_found: bool = True,
reverse: bool = False,
) -> Any:
event = self.format_event(event)
try:
group, handlers, params = self.get(event, condition=condition)
except NotFound as e:
@ -195,6 +214,7 @@ class SignalRouter(BaseRouter):
inline: bool = False,
reverse: bool = False,
) -> Union[asyncio.Task, Any]:
event = self.format_event(event)
dispatch = self._dispatch(
event,
context=context,
@ -218,6 +238,7 @@ class SignalRouter(BaseRouter):
condition: Optional[Dict[str, Any]] = None,
exclusive: bool = True,
) -> Signal:
event = self.format_event(event)
event_definition = event
parts = self._build_event_parts(event)
if parts[2].startswith("<"):