1
0
mirror of synced 2026-01-15 06:06:30 -05:00
Files
airbyte/airbyte-cdk/python/airbyte_cdk/utils/stream_status_utils.py

44 lines
1.1 KiB
Python

#
# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
#
from datetime import datetime
from typing import List, Optional, Union
from airbyte_cdk.models import (
AirbyteMessage,
AirbyteStream,
AirbyteStreamStatus,
AirbyteStreamStatusReason,
AirbyteStreamStatusTraceMessage,
AirbyteTraceMessage,
StreamDescriptor,
TraceType,
)
from airbyte_cdk.models import Type as MessageType
def as_airbyte_message(
stream: Union[AirbyteStream, StreamDescriptor],
current_status: AirbyteStreamStatus,
reasons: Optional[List[AirbyteStreamStatusReason]] = None,
) -> AirbyteMessage:
"""
Builds an AirbyteStreamStatusTraceMessage for the provided stream
"""
now_millis = datetime.now().timestamp() * 1000.0
trace_message = AirbyteTraceMessage(
type=TraceType.STREAM_STATUS,
emitted_at=now_millis,
stream_status=AirbyteStreamStatusTraceMessage(
stream_descriptor=StreamDescriptor(name=stream.name, namespace=stream.namespace),
status=current_status,
reasons=reasons,
),
)
return AirbyteMessage(type=MessageType.TRACE, trace=trace_message)