/ src / evidently / legacy / ui / components / storage.py
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  )