Spaces:
Build error
Build error
| from __future__ import annotations | |
| import json | |
| from dataclasses import dataclass | |
| from openhands.core.config.openhands_config import OpenHandsConfig | |
| from openhands.storage import get_file_store | |
| from openhands.storage.data_models.settings import Settings | |
| from openhands.storage.files import FileStore | |
| from openhands.storage.settings.settings_store import SettingsStore | |
| from openhands.utils.async_utils import call_sync_from_async | |
| class FileSettingsStore(SettingsStore): | |
| file_store: FileStore | |
| path: str = 'settings.json' | |
| async def load(self) -> Settings | None: | |
| try: | |
| json_str = await call_sync_from_async(self.file_store.read, self.path) | |
| kwargs = json.loads(json_str) | |
| settings = Settings(**kwargs) | |
| return settings | |
| except FileNotFoundError: | |
| return None | |
| async def store(self, settings: Settings) -> None: | |
| json_str = settings.model_dump_json(context={'expose_secrets': True}) | |
| await call_sync_from_async(self.file_store.write, self.path, json_str) | |
| async def get_instance( | |
| cls, config: OpenHandsConfig, user_id: str | None | |
| ) -> FileSettingsStore: | |
| file_store = file_store = get_file_store( | |
| config.file_store, | |
| config.file_store_path, | |
| config.file_store_web_hook_url, | |
| config.file_store_web_hook_headers | |
| ) | |
| return FileSettingsStore(file_store) | |