Source code for kelvin.message.primitives

from __future__ import annotations

from typing import ClassVar, Union

from pydantic import FiniteFloat, Strict, StrictBool, StrictInt, StrictStr
from typing_extensions import Annotated, TypeAlias

from kelvin.message.message import Message
from kelvin.message.msg_type import KMessageTypeData, KMessageTypeParameter

# NaN and infinity are serialized as JSON null, which the platform reads as a
# message with no payload. Strict keeps the coercion rules of StrictFloat.
FiniteNumber: TypeAlias = Union[Annotated[FiniteFloat, Strict()], StrictInt]


[docs] class Number(Message): TYPE_: ClassVar[KMessageTypeData] = KMessageTypeData("number") # pyright: ignore[reportIncompatibleVariableOverride] type: KMessageTypeData = KMessageTypeData("number") # pyright: ignore[reportIncompatibleVariableOverride] payload: FiniteNumber = 0.0
[docs] class String(Message): TYPE_: ClassVar[KMessageTypeData] = KMessageTypeData("string") # pyright: ignore[reportIncompatibleVariableOverride] type: KMessageTypeData = KMessageTypeData("string") # pyright: ignore[reportIncompatibleVariableOverride] payload: StrictStr = ""
[docs] class Boolean(Message): TYPE_: ClassVar[KMessageTypeData] = KMessageTypeData("boolean") # pyright: ignore[reportIncompatibleVariableOverride] type: KMessageTypeData = KMessageTypeData("boolean") # pyright: ignore[reportIncompatibleVariableOverride] payload: StrictBool = False
[docs] class NumberParameter(Message): TYPE_: ClassVar[KMessageTypeParameter] = KMessageTypeParameter("number") # pyright: ignore[reportIncompatibleVariableOverride] type: KMessageTypeParameter = KMessageTypeParameter("number") # pyright: ignore[reportIncompatibleVariableOverride] payload: FiniteNumber = 0.0
[docs] class StringParameter(Message): TYPE_: ClassVar[KMessageTypeParameter] = KMessageTypeParameter("string") # pyright: ignore[reportIncompatibleVariableOverride] type: KMessageTypeParameter = KMessageTypeParameter("string") # pyright: ignore[reportIncompatibleVariableOverride] payload: StrictStr = ""
[docs] class BooleanParameter(Message): TYPE_: ClassVar[KMessageTypeParameter] = KMessageTypeParameter("boolean") # pyright: ignore[reportIncompatibleVariableOverride] type: KMessageTypeParameter = KMessageTypeParameter("boolean") # pyright: ignore[reportIncompatibleVariableOverride] payload: StrictBool = False