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