Source code for eradiate.scenes.illumination._constant

from __future__ import annotations

import attrs

from ._core import Illumination
from ..core import NodeSceneElement
from ..spectra import Spectrum, spectrum_factory
from ...attrs import documented, parse_docs
from ...validators import has_quantity


[docs] @parse_docs @attrs.define(eq=False, slots=False) class ConstantIllumination(Illumination): """ Constant illumination scene element [``constant``]. """ radiance: Spectrum = documented( attrs.field( default=1.0, converter=spectrum_factory.converter("radiance"), validator=[ attrs.validators.instance_of(Spectrum), has_quantity("radiance"), ], ), doc="Emitted radiance spectrum. Must be a radiance spectrum " "(in W/m²/sr/nm or compatible units).", type=":class:`~eradiate.scenes.spectra.Spectrum`", init_type=":class:`~eradiate.scenes.spectra.Spectrum` or dict or float", default="1.0 ucc[radiance]", ) @property def template(self) -> dict: return {"type": "constant"} @property def objects(self) -> dict[str, NodeSceneElement]: return {"radiance": self.radiance}