From 2351714005bd94b6bb806a3c2e763dada5d87211 Mon Sep 17 00:00:00 2001 From: aswanth-07 Date: Sun, 23 Aug 2026 13:02:24 +0530 Subject: [PATCH] Validate negative sampling range starts --- src/torchcodec/samplers/_index_based.py | 6 ++++++ test/test_samplers.py | 14 ++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/torchcodec/samplers/_index_based.py b/src/torchcodec/samplers/_index_based.py index d768e30dd..7ce3b518d 100644 --- a/src/torchcodec/samplers/_index_based.py +++ b/src/torchcodec/samplers/_index_based.py @@ -31,6 +31,12 @@ def _validate_sampling_range_index_based( sampling_range_end, num_frames_in_video, ): + if sampling_range_start < -num_frames_in_video: + raise ValueError( + f"sampling_range_start ({sampling_range_start}) must be greater than " + f"or equal to {-num_frames_in_video}." + ) + if sampling_range_start < 0: sampling_range_start = num_frames_in_video + sampling_range_start diff --git a/test/test_samplers.py b/test/test_samplers.py index a8d281252..3089e94cf 100644 --- a/test/test_samplers.py +++ b/test/test_samplers.py @@ -536,6 +536,20 @@ def test_index_based_samplers_errors(sampler): ): sampler(decoder, sampling_range_start=-100, sampling_range_end=-100) + sampling_range_start = -len(decoder) - 1 + with pytest.raises( + ValueError, + match=re.escape( + f"sampling_range_start ({sampling_range_start}) must be greater than " + f"or equal to {-len(decoder)}" + ), + ): + sampler( + decoder, + sampling_range_start=sampling_range_start, + sampling_range_end=-len(decoder), + ) + with pytest.raises( ValueError, match="We determined that sampling_range_end should" ):