From 8888360c590ba273c27ec9741b42a86687fbc712 Mon Sep 17 00:00:00 2001 From: Jiajun Li Date: Fri, 10 Apr 2026 04:08:43 +0000 Subject: [PATCH] fix: ignore non-numeric weight_versions in oldest_weight_version --- miles/utils/types.py | 14 ++++++++++++-- tests/fast/utils/test_types.py | 10 ++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/miles/utils/types.py b/miles/utils/types.py index 540648e1fd9..4f152ffef84 100644 --- a/miles/utils/types.py +++ b/miles/utils/types.py @@ -213,10 +213,20 @@ def reset_for_retry(self) -> None: @property def oldest_weight_version(self) -> int | None: - """Minimum weight version across all turns (generation calls) for this trajectory.""" + """Minimum weight version across turns. + + Non-numeric versions are ignored. + """ if not self.weight_versions: return None - return min(int(v) for v in self.weight_versions) + + versions = [] + for version in self.weight_versions: + try: + versions.append(int(version)) + except (TypeError, ValueError): + continue + return min(versions) if versions else None def update_from_meta_info(self, args, meta_info: dict): """ diff --git a/tests/fast/utils/test_types.py b/tests/fast/utils/test_types.py index e6c12b416e8..a9d23f3ac4f 100644 --- a/tests/fast/utils/test_types.py +++ b/tests/fast/utils/test_types.py @@ -95,3 +95,13 @@ def test_strip_negative_is_noop(self, tokenizer): original_tokens = list(s.tokens) s.strip_last_output_tokens(-1, tokenizer) assert s.tokens == original_tokens + + +class TestOldestWeightVersion: + def test_ignores_non_numeric_versions(self): + s = Sample(weight_versions=["default", "3", "x", "10"]) + assert s.oldest_weight_version == 3 + + def test_all_non_numeric_versions_return_none(self): + s = Sample(weight_versions=["default", "latest"]) + assert s.oldest_weight_version is None