import os from loguru import logger from pydantic_settings import BaseSettings class Settings(BaseSettings): BASE_DIR: str = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) VERSION: str | None = None redis_dsn: str = 'redis://:@localhost:6379/0' kv_redis_dsn: str = 'redis://:password@localhost:6379/1' mysql_dsn: str = 'mysql+pymysql://username:password@localhost:3306/data?charset=utf8mb4' @property def version(self): if self.VERSION: return self.VERSION if not os.path.exists(os.path.join(self.BASE_DIR, ".version")): self.VERSION = "0.0.0" return self.VERSION with open(os.path.join(self.BASE_DIR, ".version"), "r") as f: self.VERSION = f.read().strip() return self.VERSION PROJECT_NAME: str = 'project_name' class Config: case_sensitive = True settings = Settings() if __name__ == '__main__': logger.debug(settings.BASE_DIR)