moment/src/backend/pcn/globals_dict.py

48 lines
1.2 KiB
Python

from collections import UserDict
from typing import TYPE_CHECKING, Any, Dict, Iterator
if TYPE_CHECKING:
from .section import Section
from .. import color
PCN_GLOBALS: Dict[str, Any] = {
"color": color.Color,
"hsluv": color.hsluv,
"hsluva": color.hsluva,
"hsl": color.hsl,
"hsla": color.hsla,
"rgb": color.rgb,
"rgba": color.rgba,
}
class GlobalsDict(UserDict):
def __init__(self, section: "Section") -> None:
super().__init__()
self.section = section
@property
def full_dict(self) -> Dict[str, Any]:
return {
**PCN_GLOBALS,
**(self.section.root if self.section.root else {}),
**(self.section.root.globals if self.section.root else {}),
"self": self.section,
"parent": self.section.parent,
"root": self.section.parent,
**self.data,
}
def __getitem__(self, key: str) -> Any:
return self.full_dict[key]
def __iter__(self) -> Iterator[str]:
return iter(self.full_dict)
def __len__(self) -> int:
return len(self.full_dict)
def __repr__(self) -> str:
return repr(self.full_dict)