config.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. from pathlib import Path
  2. import yaml
  3. class Settings:
  4. secret_key: str = ''
  5. sgb_base_url: str = ''
  6. sgb_websocket_url: str = ''
  7. fwr_base_url: str = ''
  8. database_url: str = ''
  9. sgb_db_url: str = ''
  10. fwr_db_url: str = ''
  11. fetch_sgb_agent: str = ''
  12. fetch_fwr_agent: str = ''
  13. PUBLIC_KEY: str
  14. PRIVATE_KEY: str
  15. PASSWORD_KEY: str
  16. basic_base_url: str = ''
  17. basic_paper_url: str = ''
  18. dify_base_url: str = ''
  19. dify_api_token: str = ''
  20. postgresql_database_url: str = ''
  21. def __init__(self, **kwargs):
  22. # Check if all required fields are provided and set them
  23. for field in self.__annotations__.keys():
  24. if field not in kwargs:
  25. raise ValueError(f"Missing setting: {field}")
  26. setattr(self, field, kwargs[field])
  27. def to_dict(self):
  28. """Return the settings as a dictionary."""
  29. return {k: getattr(self, k) for k in self.__annotations__.keys()}
  30. def __repr__(self):
  31. """Return a string representation of the settings."""
  32. return f"Settings({self.to_dict()})"
  33. def load_yaml(file_path: Path) -> dict:
  34. with file_path.open('r', encoding="utf-8") as fr:
  35. try:
  36. data = yaml.safe_load(fr)
  37. return data
  38. except yaml.YAMLError as e:
  39. print(f"Error loading YAML file {file_path}: {e}")
  40. return {}
  41. # Use pathlib to handle file paths
  42. config_yaml_path = Path(__file__).parent / 'config.yaml'
  43. settings_data = load_yaml(config_yaml_path)
  44. # Initialize settings object
  45. settings = Settings(**settings_data)
  46. # Print the loaded settings
  47. print(f"Loaded settings: {settings}")