Implement cache for rendered elements
This commit is contained in:
parent
75a5ae5758
commit
2407377cf1
1 changed files with 25 additions and 2 deletions
|
|
@ -1,4 +1,27 @@
|
|||
from typing import Dict, Generic, Optional, TypeVar
|
||||
|
||||
from .element import Id, RenderedElement
|
||||
|
||||
__all__ = ["RenderedElementCache"]
|
||||
|
||||
class RenderedElementCache:
|
||||
pass # TODO
|
||||
E = TypeVar("E", bound=RenderedElement)
|
||||
|
||||
class RenderedElementCache(Generic[E]):
|
||||
|
||||
def __init__(self) -> None:
|
||||
self._elements: Dict[Id, E] = {}
|
||||
|
||||
def invalidate(self, elem_id: Id) -> None:
|
||||
try:
|
||||
self._elements.pop(elem_id)
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
def invalidate_all(self) -> None:
|
||||
self._elements = {}
|
||||
|
||||
def get(self, elem_id: Id) -> Optional[E]:
|
||||
return self._elements.get(elem_id)
|
||||
|
||||
def add(self, elem: E) -> None:
|
||||
self._elements[elem.id] = elem
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue