slot.py 611 B

12345678910111213141516171819202122232425
  1. from typing import TYPE_CHECKING, List, Optional
  2. from typing_extensions import Self
  3. from . import globals
  4. if TYPE_CHECKING:
  5. from .element import Element
  6. class Slot:
  7. def __init__(self, parent: 'Element', name: str, template: Optional[str] = None) -> None:
  8. self.name = name
  9. self.parent = parent
  10. self.template = template
  11. self.children: List['Element'] = []
  12. def __enter__(self) -> Self:
  13. globals.get_slot_stack().append(self)
  14. return self
  15. def __exit__(self, *_) -> None:
  16. globals.get_slot_stack().pop()
  17. globals.prune_slot_stack()