Brain.py 838B

1234567891011121314151617181920212223242526272829
  1. from intelligine.core.exceptions import BrainPartAlreadyExist
  2. from intelligine.cst import BRAIN_SCHEMA
  3. class Brain():
  4. _brain_part_class = {}
  5. def __init__(self, context, host):
  6. self._context = context
  7. self._host = host
  8. self._schema = {}
  9. self._parts = {}
  10. def _set_brain_part(self, name, brain_part, replace=False):
  11. if name in self._parts and not replace:
  12. raise BrainPartAlreadyExist()
  13. self._parts[name] = brain_part
  14. self._update_schema()
  15. def get_part(self, name):
  16. return self._parts[name]
  17. def _update_schema(self):
  18. self._schema = {}
  19. for part_name in self._parts:
  20. self._schema[part_name] = self._parts[part_name].__class__
  21. self._context.metas.value.set(BRAIN_SCHEMA, self._host.get_id(), self._schema)