|
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