77from pathlib import Path
88from typing import Annotated , Any
99
10- from pydantic import AliasChoices , BaseModel , BeforeValidator , Field , model_validator
11- from typing_extensions import Self , deprecated
10+ from pydantic import AliasChoices , BeforeValidator , Field , model_validator
11+ from typing_extensions import Self , TypedDict , deprecated
1212
1313from crawlee import service_locator
1414from crawlee ._utils .models import timedelta_ms
@@ -34,26 +34,26 @@ def _transform_to_list(value: Any) -> list[str] | None:
3434 return value if isinstance (value , list ) else str (value ).split (',' )
3535
3636
37- class ActorStorages (BaseModel ):
38- """Storage IDs for different storage types used by an Actor."""
39-
37+ class ActorStorages (TypedDict ):
4038 key_value_stores : dict [str , str ]
4139 datasets : dict [str , str ]
4240 request_queues : dict [str , str ]
4341
4442
45- def _load_storage_keys (data : None | str | dict | ActorStorages ) -> ActorStorages | None :
43+ def _load_storage_keys (
44+ data : None | str | ActorStorages ,
45+ ) -> ActorStorages | None :
4646 """Load storage keys from environment."""
4747 if data is None :
4848 return None
49- if isinstance (data , ActorStorages ):
50- return data
51- storage_mapping = data if isinstance ( data , dict ) else json . loads ( data )
52- return ActorStorages (
53- key_value_stores = storage_mapping .get ('keyValueStores ' , {}),
54- datasets = storage_mapping .get ('datasets ' , {}),
55- request_queues = storage_mapping . get ( 'requestQueues' , {}),
56- )
49+ if isinstance (data , str ):
50+ storage_mapping = json . loads ( data )
51+ return {
52+ 'key_value_stores' : storage_mapping . get ( 'keyValueStores' , {}),
53+ 'datasets' : storage_mapping .get ('datasets ' , {}),
54+ 'request_queues' : storage_mapping .get ('requestQueues ' , {}),
55+ }
56+ return data
5757
5858
5959@docs_group ('Configuration' )
0 commit comments