Source code for leads.event
from typing import Any as _Any, override as _override, overload as _overload
from leads.callback import CallbackChain
from leads.context import Context
from leads.data import DataContainer
[docs]
class Event(object):
@_overload
def __init__(self, *args, **kwargs) -> None: # real signature unknown
raise NotImplementedError
def __init__(self, t: str, context: Context) -> None:
self.t: str = t
self.context: Context = context
[docs]
@_override
def __str__(self) -> str:
return f"[{self.t}] {self.context.data()}"
[docs]
class DataPushedEvent(Event):
def __init__(self, context: Context, data: DataContainer) -> None:
super().__init__("DATA PUSHED", context)
self.data: DataContainer = data
[docs]
class UpdateEvent(Event):
def __init__(self, context: Context) -> None:
super().__init__("UPDATE", context)
[docs]
class SystemEvent(Event):
def __init__(self, t: str, context: Context, system: str) -> None:
super().__init__(t, context)
self.system: str = system
[docs]
class InterventionEvent(SystemEvent):
def __init__(self, context: Context, system: str, *data: _Any) -> None:
super().__init__("INTERVENTION", context, system)
self.data: tuple[_Any, ...] = data
[docs]
class InterventionExitEvent(InterventionEvent):
pass
[docs]
class SuspensionEvent(SystemEvent):
def __init__(self, context: Context, system: str, cause: str, fatal: bool = False) -> None:
super().__init__("SUSPENSION", context, system)
self.cause: str = cause
self.fatal: bool = fatal
[docs]
class SuspensionExitEvent(SuspensionEvent):
pass
[docs]
class EventListener(CallbackChain):
[docs]
@_override
def super(self, e: Event) -> None:
super().super(e)
[docs]
def pre_push(self, event: DataPushedEvent) -> None: ...
[docs]
def post_push(self, event: DataPushedEvent) -> None: ...
[docs]
def on_update(self, event: UpdateEvent) -> None: ...
[docs]
def pre_intervene(self, event: InterventionEvent) -> None: ...
[docs]
def post_intervene(self, event: InterventionExitEvent) -> None: ...
[docs]
def pre_suspend(self, event: SuspensionEvent) -> None: ...
[docs]
def post_suspend(self, event: SuspensionExitEvent) -> None: ...
[docs]
def brake_indicator(self, event: Event, state: bool) -> None: ...
[docs]
def left_indicator(self, event: Event, state: bool) -> None: ...
[docs]
def right_indicator(self, event: Event, state: bool) -> None: ...
[docs]
def hazard(self, event: Event, state: bool) -> None: ...