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"]
|
__all__ = ["RenderedElementCache"]
|
||||||
|
|
||||||
class RenderedElementCache:
|
E = TypeVar("E", bound=RenderedElement)
|
||||||
pass # TODO
|
|
||||||
|
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