storage.py
1 from abc import ABC 2 from typing import Callable 3 from typing import ClassVar 4 from typing import Optional 5 6 from evidently.legacy.ui.base import BlobStorage 7 from evidently.legacy.ui.base import DataStorage 8 from evidently.legacy.ui.base import ProjectMetadataStorage 9 from evidently.legacy.ui.components.base import FactoryComponent 10 from evidently.legacy.ui.managers.projects import ProjectManager 11 from evidently.legacy.ui.storage.common import NoopAuthManager 12 from evidently.legacy.ui.storage.local import create_local_project_manager 13 from evidently.pydantic_utils import register_type_alias 14 15 16 class StorageComponent(FactoryComponent[ProjectManager], ABC): 17 class Config: 18 is_base_type = True 19 20 dependency_name: ClassVar = "project_manager" 21 use_cache: ClassVar[bool] = True 22 sync_to_thread: ClassVar[bool] = False 23 24 25 class LocalStorageComponent(StorageComponent): 26 path: str = "workspace" 27 autorefresh: bool = True 28 29 def dependency_factory(self) -> Callable[..., ProjectManager]: 30 return lambda: create_local_project_manager(self.path, autorefresh=self.autorefresh, auth=NoopAuthManager()) 31 32 33 class MetadataStorageComponent(FactoryComponent[ProjectMetadataStorage], ABC): 34 class Config: 35 is_base_type = True 36 37 __section__: ClassVar = "metadata" 38 dependency_name: ClassVar = "project_metadata" 39 use_cache: ClassVar[bool] = True 40 sync_to_thread: ClassVar[Optional[bool]] = None 41 42 43 class DataStorageComponent(FactoryComponent[DataStorage], ABC): 44 class Config: 45 is_base_type = True 46 47 __section__: ClassVar = "data" 48 49 dependency_name: ClassVar = "data_storage" 50 use_cache: ClassVar[bool] = True 51 sync_to_thread: ClassVar[bool] = False 52 53 54 class BlobStorageComponent(FactoryComponent[BlobStorage], ABC): 55 class Config: 56 is_base_type = True 57 58 __section__: ClassVar = "blob" 59 60 dependency_name: ClassVar = "blob_storage" 61 use_cache: ClassVar[bool] = True 62 sync_to_thread: ClassVar[bool] = False 63 64 65 register_type_alias(BlobStorageComponent, "evidently.legacy.ui.components.local_storage.FSSpecBlobComponent", "fsspec") 66 register_type_alias( 67 MetadataStorageComponent, "evidently.legacy.ui.components.local_storage.JsonMetadataComponent", "json_file" 68 ) 69 register_type_alias( 70 DataStorageComponent, "evidently.legacy.ui.components.local_storage.InmemoryDataComponent", "inmemory" 71 )