Source code for eradiate.scenes.illumination._core
from __future__ import annotations
from abc import ABC
import attrs
from ..core import NodeSceneElement
from ..._factory import Factory
from ...attrs import documented, get_doc, parse_docs
illumination_factory = Factory()
illumination_factory.register_lazy_batch(
[
("_astro_object.AstroObjectIllumination", "astro_object", {}),
("_constant.ConstantIllumination", "constant", {}),
("_directional.DirectionalIllumination", "directional", {}),
("_spot.SpotIllumination", "spot", {}),
],
cls_prefix="eradiate.scenes.illumination",
)
[docs]
@parse_docs
@attrs.define(eq=False, slots=False)
class Illumination(NodeSceneElement, ABC):
"""
Abstract base class for all illumination scene elements.
Notes
-----
* This class is to be used as a mixin.
"""
id: str | None = documented(
attrs.field(
default="illumination",
validator=attrs.validators.optional(attrs.validators.instance_of(str)),
),
doc=get_doc(NodeSceneElement, "id", "doc"),
type=get_doc(NodeSceneElement, "id", "type"),
init_type=get_doc(NodeSceneElement, "id", "init_type"),
default='"illumination"',
)