From 776690fbe9c1b29197162c8d01f53cd6931a935b Mon Sep 17 00:00:00 2001 From: David Miguel Susano Pinto Date: Wed, 25 Jun 2025 13:03:07 +0100 Subject: [PATCH] StreamMetadata: always display Fractions in num/den form --- src/torchcodec/_core/_metadata.py | 9 ++++++++- test/test_metadata.py | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/torchcodec/_core/_metadata.py b/src/torchcodec/_core/_metadata.py index 1f011f516..bdcc1a3f2 100644 --- a/src/torchcodec/_core/_metadata.py +++ b/src/torchcodec/_core/_metadata.py @@ -41,7 +41,14 @@ class StreamMetadata: def __repr__(self): s = self.__class__.__name__ + ":\n" for field in dataclasses.fields(self): - s += f"{SPACES}{field.name}: {getattr(self, field.name)}\n" + attr = getattr(self, field.name) + if isinstance(attr, Fraction): + # Fractions are displayed as integers when possible, + # but we want to always display num/den. Once we + # require Python >=3.13 we can use format(.., "#"). + s += f"{SPACES}{field.name}: {attr.numerator}/{attr.denominator}\n" + else: + s += f"{SPACES}{field.name}: {attr}\n" return s diff --git a/test/test_metadata.py b/test/test_metadata.py index 3de7d3777..050661f17 100644 --- a/test/test_metadata.py +++ b/test/test_metadata.py @@ -254,7 +254,7 @@ def test_repr(): num_frames_from_header: 390 num_frames_from_content: 390 average_fps_from_header: 29.97003 - pixel_aspect_ratio: 1 + pixel_aspect_ratio: 1/1 duration_seconds: 13.013 begin_stream_seconds: 0.0 end_stream_seconds: 13.013