Source code for loom.streaming.kafka._record

"""Typed Kafka transport record."""

from __future__ import annotations

from typing import Generic, TypeVar

import msgspec

from loom.core.model import LoomFrozenStruct

PayloadT = TypeVar("PayloadT")


[docs] class KafkaRecord(LoomFrozenStruct, Generic[PayloadT], frozen=True): """Typed Kafka transport record. Attributes: topic: Kafka topic name. key: Transport key used for partitioning. value: Typed record value. headers: Kafka headers. partition: Partition number when known. offset: Offset when known. timestamp_ms: Broker or producer timestamp in epoch milliseconds. """ topic: str key: bytes | str | None value: PayloadT headers: dict[str, bytes] = msgspec.field(default_factory=dict) partition: int | None = None offset: int | None = None timestamp_ms: int | None = None