Private
Public Access
852 B
852 B
Using hasattr() for entity-type dispatch is banned
17.4 Banned: hasattr() for entity type dispatch
# BANNED:
def handle_event(self, event: Metadata) -> None:
if hasattr(event, 'tool_calls'):
# tool call path
elif hasattr(event, 'source_tier'):
# mma path
elif hasattr(event, 'path'):
# file path
# CORRECT (typed Union dispatch):
def handle_event(self, event: CommsLogEntry | FileItem | HistoryMessage) -> None:
if isinstance(event, CommsLogEntry):
# mma path
elif isinstance(event, FileItem):
# file path
elif isinstance(event, HistoryMessage):
# tool call path
# CORRECT (preferred — refactor so no dispatch is needed):
def _handle_comms_entry(self, event: CommsLogEntry) -> None: ...
def _handle_file_item(self, event: FileItem) -> None: ...
def _handle_history(self, event: HistoryMessage) -> None: ...