Spaces:
Sleeping
Sleeping
File size: 1,207 Bytes
3bbf2c7 36f5e2d 3bbf2c7 b296e31 3bbf2c7 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
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", flag="n", protocol=2) 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", flag="n", protocol=2) 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 = "."
|