|
4 | 4 | import os
|
5 | 5 | import sys
|
6 | 6 | from datetime import timedelta
|
7 |
| -from typing import TYPE_CHECKING, Any, Callable, TypeVar, cast |
| 7 | +from typing import TYPE_CHECKING, Any, Callable, Literal, TypeVar, cast, overload |
8 | 8 |
|
9 | 9 | from lazy_object_proxy import Proxy
|
10 | 10 | from more_itertools import flatten
|
|
14 | 14 | from apify_shared.consts import ActorEnvVars, ActorExitCodes, ApifyEnvVars
|
15 | 15 | from apify_shared.utils import ignore_docs, maybe_extract_enum_member_value
|
16 | 16 | from crawlee import service_locator
|
17 |
| -from crawlee.events._types import Event, EventMigratingData, EventPersistStateData |
| 17 | +from crawlee.events import ( |
| 18 | + Event, |
| 19 | + EventAbortingData, |
| 20 | + EventExitData, |
| 21 | + EventListener, |
| 22 | + EventMigratingData, |
| 23 | + EventPersistStateData, |
| 24 | + EventSystemInfoData, |
| 25 | +) |
18 | 26 |
|
19 | 27 | from apify._configuration import Configuration
|
20 | 28 | from apify._consts import EVENT_LISTENERS_TIMEOUT
|
@@ -498,7 +506,30 @@ async def set_value(
|
498 | 506 | key_value_store = await self.open_key_value_store()
|
499 | 507 | return await key_value_store.set_value(key, value, content_type=content_type)
|
500 | 508 |
|
501 |
| - def on(self, event_name: Event, listener: Callable) -> Callable: |
| 509 | + @overload |
| 510 | + def on( |
| 511 | + self, event_name: Literal[Event.PERSIST_STATE], listener: EventListener[EventPersistStateData] |
| 512 | + ) -> EventListener[EventPersistStateData]: ... |
| 513 | + @overload |
| 514 | + def on( |
| 515 | + self, event_name: Literal[Event.SYSTEM_INFO], listener: EventListener[EventSystemInfoData] |
| 516 | + ) -> EventListener[EventSystemInfoData]: ... |
| 517 | + @overload |
| 518 | + def on( |
| 519 | + self, event_name: Literal[Event.MIGRATING], listener: EventListener[EventMigratingData] |
| 520 | + ) -> EventListener[EventMigratingData]: ... |
| 521 | + @overload |
| 522 | + def on( |
| 523 | + self, event_name: Literal[Event.ABORTING], listener: EventListener[EventAbortingData] |
| 524 | + ) -> EventListener[EventAbortingData]: ... |
| 525 | + @overload |
| 526 | + def on( |
| 527 | + self, event_name: Literal[Event.EXIT], listener: EventListener[EventExitData] |
| 528 | + ) -> EventListener[EventExitData]: ... |
| 529 | + @overload |
| 530 | + def on(self, event_name: Event, listener: EventListener[None]) -> EventListener[Any]: ... |
| 531 | + |
| 532 | + def on(self, event_name: Event, listener: EventListener[Any]) -> EventListener[Any]: |
502 | 533 | """Add an event listener to the Actor's event manager.
|
503 | 534 |
|
504 | 535 | The following events can be emitted:
|
@@ -527,6 +558,19 @@ def on(self, event_name: Event, listener: Callable) -> Callable:
|
527 | 558 | self._event_manager.on(event=event_name, listener=listener)
|
528 | 559 | return listener
|
529 | 560 |
|
| 561 | + @overload |
| 562 | + def off(self, event_name: Literal[Event.PERSIST_STATE], listener: EventListener[EventPersistStateData]) -> None: ... |
| 563 | + @overload |
| 564 | + def off(self, event_name: Literal[Event.SYSTEM_INFO], listener: EventListener[EventSystemInfoData]) -> None: ... |
| 565 | + @overload |
| 566 | + def off(self, event_name: Literal[Event.MIGRATING], listener: EventListener[EventMigratingData]) -> None: ... |
| 567 | + @overload |
| 568 | + def off(self, event_name: Literal[Event.ABORTING], listener: EventListener[EventAbortingData]) -> None: ... |
| 569 | + @overload |
| 570 | + def off(self, event_name: Literal[Event.EXIT], listener: EventListener[EventExitData]) -> None: ... |
| 571 | + @overload |
| 572 | + def off(self, event_name: Event, listener: EventListener[None]) -> None: ... |
| 573 | + |
530 | 574 | def off(self, event_name: Event, listener: Callable | None = None) -> None:
|
531 | 575 | """Remove a listener, or all listeners, from an Actor event.
|
532 | 576 |
|
|
0 commit comments