Skip to content

Bugfix: Fix EventBus.dispatch(event: T) -> T return type to be inferred same as passed event arg type #9

Description

@pirate

Currently you have to do this:

class BrowserStateSummary(BaseModel):
    tab_urls: list[str]
	...

class BrowserStateRequestEvent(BaseEvent[BrowserStateSummary]):
    pass

event: BrowserStateRequestEvent = cast(BrowserStateRequestEvent, self.event_bus.dispatch(
	BrowserStateRequestEvent(
		include_dom=True,
		include_screenshot=include_screenshot,
		cache_clickable_elements_hashes=cache_clickable_elements_hashes,
	)
))

result: BrowserStateSummary | None = await event.event_result(raise_if_none=True, raise_if_any=True)

But it would be great if EventBus.dispatch(event)'s return type was automatically the same as the input type, instead of returning a BaseEvent[Any].

class BrowserStateSummary(BaseModel):
    tab_urls: list[str]
	...

class BrowserStateRequestEvent(BaseEvent[BrowserStateSummary]):
    pass

- event: BrowserStateRequestEvent = cast(BrowserStateRequestEvent, self.event_bus.dispatch(
+ event: BrowserStateRequestEvent = self.event_bus.dispatch(
	BrowserStateRequestEvent(
		include_dom=True,
		include_screenshot=include_screenshot,
		cache_clickable_elements_hashes=cache_clickable_elements_hashes,
	)
- ))
+ )

result: BrowserStateSummary | None = await event.event_result(raise_if_none=True, raise_if_any=True)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions