"""Asset β mixin marking physical energy equipment.
``Asset`` is the umbrella for anything the energy domain treats as a physical,
commissioned piece of equipment: wind turbines, batteries, heat pumps, sensors,
meters, power lines, transformers, pipes. It is a pure mixin β never
instantiated directly and never used as a leaf type. Concrete equipment
classes inherit from ``Asset`` together with either :class:`Node` or
:class:`Edge` via the :class:`NodeAsset` / :class:`EdgeAsset` intermediates in
:mod:`energydatamodel.bases` and :mod:`energydatamodel.grid`.
``isinstance(x, Asset)`` answers "is this a piece of physical equipment?"
uniformly across node- and edge-shaped classes.
"""
from dataclasses import dataclass
from datetime import date
from energydatamodel.element import Element, infra
[docs]
@dataclass(repr=False, kw_only=True)
class Asset(Element):
"""Marker mixin for physical energy equipment.
Carries fields genuinely shared across every piece of equipment β
independent of whether the equipment is shaped like a graph vertex
(``WindTurbine``) or a graph edge (``Line``).
"""
commissioning_date: date | None = infra(default=None)