config.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import os
  2. import yaml
  3. from pathlib import Path
  4. from pydantic import BaseModel, Field
  5. from typing import List, Dict, Union,Optional,Any
  6. from utils.pydantic_auto_field import AutoLoadModel
  7. from config.settings import CONFIG_DIR
  8. from dotenv import load_dotenv
  9. load_dotenv()
  10. CONFIG_PATH = CONFIG_DIR / "config.yaml"
  11. class Config(BaseModel):
  12. storage: str = "local"
  13. s3_access_key: Optional[str] = os.environ.get("S3_ACCESS_KEY", 'bh9LbfsPHRJgQ44wXIlv')
  14. s3_secret_key: Optional[str] = os.environ.get("S3_SECRET_KEY", 'N744RZ60T1b4zlcWG2MROCzjEE2mPTdNQCc7Pk3M')
  15. s3_endpoint: Optional[str] = os.environ.get("S3_ENDPOINT", 'http://vs1.lan:9002')
  16. def save(self):
  17. config_path = get_config_path()
  18. with open(config_path, "w", encoding="utf-8") as file:
  19. yaml.dump(self.model_dump(), file)
  20. return self
  21. def get_config_path():
  22. return CONFIG_PATH
  23. def read_config(config_path: Path):
  24. if not config_path.exists():
  25. config = Config()
  26. config.save()
  27. return config
  28. with open(config_path, "r", encoding="utf-8") as file:
  29. config_dict = yaml.safe_load(file)
  30. return Config(**config_dict)
  31. CFG = read_config(get_config_path())
  32. def main():
  33. print(CFG)
  34. CFG.save()
  35. if __name__ == "__main__":
  36. main()