message_template.py 984 B

123456789101112131415161718192021222324252627282930313233
  1. from .message import message
  2. from .template import template
  3. class message_template(message):
  4. def __init__(self, target: message) -> None:
  5. super().__init__(clone_it = target)
  6. def _import_template(self, target: template) -> None:
  7. default_keys = target.default_keys
  8. for key in default_keys:
  9. name = "get_" + key
  10. setattr(self, name, self._create_getter(key))
  11. for section in target.sections_names:
  12. for key in target.get_section_keys(section):
  13. name = "get_" + key
  14. if name in default_keys:
  15. name = "get_" + key + "_" + section
  16. setattr(self, name, self._create_getter(key, section))
  17. def _create_getter(self, key: str, section: str | None = None) -> object:
  18. if not self.key_exists(key, section):
  19. raise RuntimeError("Message not have required key " + key + ".")
  20. return lambda: self.get_key(key, section)