Spaces:
Running
Running
import shelve | |
from pathlib import Path | |
from typing import Any | |
from pydantic import BaseModel | |
class PersistentSettings(BaseModel): | |
""" | |
This pydantic model will try to initialize itself from | |
the database upon every instantiation | |
It further supplies an update function, that allows to write | |
back any changes into the database, under its key. | |
""" | |
def __init__(self, **data: Any): | |
with shelve.open("config.db") as db: | |
super().__init__(**db.get("settings", default={}), **data) | |
def update(self, **data: Any) -> None: | |
""" | |
Persist the pydantic-dict that represents the model | |
""" | |
with shelve.open("config.db") as db: | |
db["settings"] = {**self.dict(), **data} | |
class TortoiseConfig(PersistentSettings): | |
EXTRA_VOICES_DIR: str = "" | |
AR_CHECKPOINT: str = "." | |
DIFF_CHECKPOINT: str = "." | |
LOW_VRAM: bool = True | |
def __init__(self, **data: Any): | |
super().__init__(**data) | |
if not Path(self.AR_CHECKPOINT).is_file(): | |
self.AR_CHECKPOINT = "." | |
if not Path(self.DIFF_CHECKPOINT).is_file(): | |
self.DIFF_CHECKPOINT = "." | |