config.py 942 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import os
  2. import toml
  3. from dotenv import load_dotenv
  4. load_dotenv()
  5. config_str = ""
  6. if os.path.exists("config.toml"):
  7. with open("config.toml", "rb") as f:
  8. config_str = f.read().decode("utf-8")
  9. config = toml.loads(config_str)
  10. def _get(key: str, default):
  11. value = config.get(key, default)
  12. if not value:
  13. value = os.environ.get(key, default)
  14. return value
  15. def get_or_error(key: str):
  16. """
  17. Get a key from the config, or raise an error if it doesn't exist.
  18. """
  19. value = get_or_none(key)
  20. if not value:
  21. raise KeyError(f"Please set '{key}' in `config.toml` or `.env`.")
  22. return value
  23. def get_or_default(key: str, default):
  24. """
  25. Get a key from the config, or return a default value if it doesn't exist.
  26. """
  27. return _get(key, default)
  28. def get_or_none(key: str):
  29. """
  30. Get a key from the config, or return None if it doesn't exist.
  31. """
  32. return _get(key, None)