|
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 pydantic import AliasChoices
|
|
13 | 13 | from apify_shared.consts import ActorEnvVars, ActorExitCodes, ApifyEnvVars
|
14 | 14 | from apify_shared.utils import ignore_docs, maybe_extract_enum_member_value
|
15 | 15 | from crawlee import service_container
|
16 |
| -from crawlee.events._types import Event, EventPersistStateData |
| 16 | +from crawlee.events import ( |
| 17 | + Event, |
| 18 | + EventAbortingData, |
| 19 | + EventExitData, |
| 20 | + EventListener, |
| 21 | + EventMigratingData, |
| 22 | + EventPersistStateData, |
| 23 | + EventSystemInfoData, |
| 24 | +) |
17 | 25 |
|
18 | 26 | from apify._configuration import Configuration
|
19 | 27 | from apify._consts import EVENT_LISTENERS_TIMEOUT
|
@@ -470,7 +478,30 @@ async def set_value(
|
470 | 478 | key_value_store = await self.open_key_value_store()
|
471 | 479 | return await key_value_store.set_value(key, value, content_type=content_type)
|
472 | 480 |
|
473 |
| - def on(self, event_name: Event, listener: Callable) -> Callable: |
| 481 | + @overload |
| 482 | + def on( |
| 483 | + self, event_name: Literal[Event.PERSIST_STATE], listener: EventListener[EventPersistStateData] |
| 484 | + ) -> EventListener[EventPersistStateData]: ... |
| 485 | + @overload |
| 486 | + def on( |
| 487 | + self, event_name: Literal[Event.SYSTEM_INFO], listener: EventListener[EventSystemInfoData] |
| 488 | + ) -> EventListener[EventSystemInfoData]: ... |
| 489 | + @overload |
| 490 | + def on( |
| 491 | + self, event_name: Literal[Event.MIGRATING], listener: EventListener[EventMigratingData] |
| 492 | + ) -> EventListener[EventMigratingData]: ... |
| 493 | + @overload |
| 494 | + def on( |
| 495 | + self, event_name: Literal[Event.ABORTING], listener: EventListener[EventAbortingData] |
| 496 | + ) -> EventListener[EventAbortingData]: ... |
| 497 | + @overload |
| 498 | + def on( |
| 499 | + self, event_name: Literal[Event.EXIT], listener: EventListener[EventExitData] |
| 500 | + ) -> EventListener[EventExitData]: ... |
| 501 | + @overload |
| 502 | + def on(self, event_name: Event, listener: EventListener[None]) -> EventListener[Any]: ... |
| 503 | + |
| 504 | + def on(self, event_name: Event, listener: EventListener[Any]) -> EventListener[Any]: |
474 | 505 | """Add an event listener to the Actor's event manager.
|
475 | 506 |
|
476 | 507 | The following events can be emitted:
|
@@ -499,6 +530,19 @@ def on(self, event_name: Event, listener: Callable) -> Callable:
|
499 | 530 | self._event_manager.on(event=event_name, listener=listener)
|
500 | 531 | return listener
|
501 | 532 |
|
| 533 | + @overload |
| 534 | + def off(self, event_name: Literal[Event.PERSIST_STATE], listener: EventListener[EventPersistStateData]) -> None: ... |
| 535 | + @overload |
| 536 | + def off(self, event_name: Literal[Event.SYSTEM_INFO], listener: EventListener[EventSystemInfoData]) -> None: ... |
| 537 | + @overload |
| 538 | + def off(self, event_name: Literal[Event.MIGRATING], listener: EventListener[EventMigratingData]) -> None: ... |
| 539 | + @overload |
| 540 | + def off(self, event_name: Literal[Event.ABORTING], listener: EventListener[EventAbortingData]) -> None: ... |
| 541 | + @overload |
| 542 | + def off(self, event_name: Literal[Event.EXIT], listener: EventListener[EventExitData]) -> None: ... |
| 543 | + @overload |
| 544 | + def off(self, event_name: Event, listener: EventListener[None]) -> None: ... |
| 545 | + |
502 | 546 | def off(self, event_name: Event, listener: Callable | None = None) -> None:
|
503 | 547 | """Remove a listener, or all listeners, from an Actor event.
|
504 | 548 |
|
|
0 commit comments