config.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. from pathlib import Path
  2. import yaml
  3. class Settings:
  4. meeting_agent_base_url: str = ''
  5. meeting_file_base_url: str = ''
  6. minio_api_url: str = ''
  7. minio_access_key: str = ''
  8. minio_secret_key: str = ''
  9. minio_bucket_name: str = ''
  10. def __init__(self, **kwargs):
  11. for field in self.__annotations__.keys():
  12. if field not in kwargs:
  13. raise ValueError(f"Missing setting: {field}")
  14. setattr(self, field, kwargs[field])
  15. def to_dict(self):
  16. """Return the settings as a dictionary."""
  17. return {k: getattr(self, k) for k in self.__annotations__.keys()}
  18. def __repr__(self):
  19. """Return a string representation of the settings."""
  20. return f"Settings({self.to_dict()})"
  21. def load_yaml(file_path: Path) -> dict:
  22. with file_path.open('r', encoding="utf-8") as fr:
  23. try:
  24. data = yaml.safe_load(fr)
  25. return data
  26. except yaml.YAMLError as e:
  27. print(f"Error loading YAML file {file_path}: {e}")
  28. return {}
  29. # Use pathlib to handle file paths
  30. # config_yaml_path = os.path.join(os.path.join(Path(__file__).parent, "env_conf"), "config.yaml")
  31. config_yaml_path = Path(__file__).parent.joinpath("env_conf") / 'config.yaml'
  32. settings_data = load_yaml(config_yaml_path)
  33. # Initialize settings object
  34. settings = Settings(**settings_data)
  35. # Print the loaded settings
  36. print(f"Loaded settings: {settings}")