|
5 | 5 | import sys
|
6 | 6 | from contextlib import suppress
|
7 | 7 | from datetime import datetime, timedelta, timezone
|
| 8 | +from functools import cached_property |
8 | 9 | from typing import TYPE_CHECKING, Any, Literal, TypeVar, cast, overload
|
9 | 10 |
|
10 | 11 | from lazy_object_proxy import Proxy
|
@@ -340,7 +341,7 @@ async def init(self) -> None:
|
340 | 341 | await self.event_manager.__aenter__()
|
341 | 342 | self.log.debug('Event manager initialized')
|
342 | 343 |
|
343 |
| - await self._get_charging_manager_implementation().__aenter__() |
| 344 | + await self._get_charging_manager_implementation.__aenter__() |
344 | 345 | self.log.debug('Charging manager initialized')
|
345 | 346 |
|
346 | 347 | self._is_initialized = True
|
@@ -384,7 +385,7 @@ async def finalize() -> None:
|
384 | 385 | await self.event_manager.wait_for_all_listeners_to_complete(timeout=event_listeners_timeout)
|
385 | 386 |
|
386 | 387 | await self.event_manager.__aexit__(None, None, None)
|
387 |
| - await self._get_charging_manager_implementation().__aexit__(None, None, None) |
| 388 | + await self._get_charging_manager_implementation.__aexit__(None, None, None) |
388 | 389 |
|
389 | 390 | await asyncio.wait_for(finalize(), cleanup_timeout.total_seconds())
|
390 | 391 | self._is_initialized = False
|
@@ -579,9 +580,7 @@ async def push_data(self, data: dict | list[dict], charged_event_name: str | Non
|
579 | 580 | data = data if isinstance(data, list) else [data]
|
580 | 581 |
|
581 | 582 | max_charged_count = (
|
582 |
| - self._get_charging_manager_implementation().calculate_max_event_charge_count_within_limit( |
583 |
| - charged_event_name |
584 |
| - ) |
| 583 | + self.get_charging_manager().calculate_max_event_charge_count_within_limit(charged_event_name) |
585 | 584 | if charged_event_name is not None
|
586 | 585 | else None
|
587 | 586 | )
|
@@ -652,12 +651,11 @@ async def set_value(
|
652 | 651 | def get_charging_manager(self) -> ChargingManager:
|
653 | 652 | """Retrieve the charging manager to access granular pricing information."""
|
654 | 653 | self._raise_if_not_initialized()
|
655 |
| - return self._get_charging_manager_implementation() |
| 654 | + return self._get_charging_manager_implementation |
656 | 655 |
|
| 656 | + @cached_property |
657 | 657 | def _get_charging_manager_implementation(self) -> ChargingManagerImplementation:
|
658 |
| - if not self._charging_manager: |
659 |
| - self._charging_manager = ChargingManagerImplementation(self.config, self.apify_client) |
660 |
| - return self._charging_manager |
| 658 | + return ChargingManagerImplementation(self.config, self.apify_client) |
661 | 659 |
|
662 | 660 | async def charge(self, event_name: str, count: int = 1) -> ChargeResult:
|
663 | 661 | """Charge for a specified number of events - sub-operations of the Actor.
|
|
0 commit comments