Skip to content

Commit 2ce22de

Browse files
chenghao-mouclaude
andcommitted
keep Packet Trailer names as deprecated aliases
Mirror livekit/client-sdk-js#1982: keep the old "Packet Trailer" SDK surface as backwards-compatible deprecated aliases that point at the new Frame Metadata names, so existing code keeps working. - rtc.PacketTrailerFeature -> alias of rtc.FrameMetadataFeature - TrackPublication.packet_trailer_features -> deprecated property that warns and returns frame_metadata_features Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 4ded6ef commit 2ce22de

3 files changed

Lines changed: 34 additions & 0 deletions

File tree

livekit-rtc/livekit/rtc/__init__.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,10 @@
134134
)
135135
from .frame_processor import FrameProcessor
136136

137+
# Deprecated alias: "Packet Trailer" was renamed to "Frame Metadata" upstream.
138+
# Prefer FrameMetadataFeature; this alias will be removed in a future release.
139+
PacketTrailerFeature = FrameMetadataFeature
140+
137141
__all__ = [
138142
"ConnectionQuality",
139143
"ConnectionState",
@@ -149,6 +153,7 @@
149153
"TrackKind",
150154
"TrackSource",
151155
"FrameMetadataFeature",
156+
"PacketTrailerFeature",
152157
"ParticipantTrackPermission",
153158
"VideoBufferType",
154159
"VideoRotation",

livekit-rtc/livekit/rtc/track_publication.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
from typing import List, Optional, cast
1616
import asyncio
17+
import warnings
1718

1819
from ._ffi_client import FfiHandle, FfiClient
1920
from ._proto import e2ee_pb2 as proto_e2ee
@@ -83,6 +84,16 @@ def audio_features(self) -> List[proto_track.AudioTrackFeature.ValueType]:
8384
def frame_metadata_features(self) -> List[proto_track.FrameMetadataFeature.ValueType]:
8485
return list(self._info.frame_metadata_features)
8586

87+
@property
88+
def packet_trailer_features(self) -> List[proto_track.FrameMetadataFeature.ValueType]:
89+
"""Deprecated: renamed to :attr:`frame_metadata_features`."""
90+
warnings.warn(
91+
"packet_trailer_features is deprecated, use frame_metadata_features instead",
92+
DeprecationWarning,
93+
stacklevel=2,
94+
)
95+
return self.frame_metadata_features
96+
8697

8798
class LocalTrackPublication(TrackPublication):
8899
def __init__(self, owned_info: proto_track.OwnedTrackPublication):

tests/rtc/test_frame_metadata.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,24 @@ async def test_track_publication_exposes_frame_metadata_features() -> None:
7878
]
7979

8080

81+
def test_packet_trailer_names_remain_as_deprecated_aliases() -> None:
82+
# The old "Packet Trailer" names are kept as backwards-compatible aliases.
83+
assert rtc.PacketTrailerFeature is rtc.FrameMetadataFeature
84+
85+
86+
@pytest.mark.asyncio
87+
async def test_packet_trailer_features_property_is_deprecated_alias() -> None:
88+
publication = rtc.LocalTrackPublication(
89+
_owned_publication(
90+
"TR_OLD",
91+
frame_metadata_features=[proto_track.FMF_USER_TIMESTAMP],
92+
)
93+
)
94+
95+
with pytest.deprecated_call():
96+
assert publication.packet_trailer_features == publication.frame_metadata_features
97+
98+
8199
def test_video_source_capture_frame_copies_metadata(monkeypatch: pytest.MonkeyPatch) -> None:
82100
captured_requests: list[proto_ffi.FfiRequest] = []
83101

0 commit comments

Comments
 (0)