Source code for vbeam.core.kernel_data
from typing import Sequence, TypeVar, Union
TSelf = TypeVar("TSelf", bound="KernelData")
[docs]
class KernelData:
"""KernelData is the base class for containers of data that is needed by a kernel.
KernelData provides methods that lets us treat it like a mapping, meaning that we
can easily pass the whole kernel data object as kwargs to a kernel function,
e.g.: signal_for_point(**kernel_data)."""
# Defining keys and __getitem__ means this can be used as a mapping
def keys(self) -> Sequence[str]:
raise NotImplementedError
def __getitem__(self, key: Union[str, int]):
if isinstance(key, int):
key = list(self.keys())[key]
return getattr(self, key)
def copy(self: TSelf) -> TSelf:
raise NotImplementedError