From e36b0368d449ff636c16693de647a0e8c4c6be82 Mon Sep 17 00:00:00 2001 From: CarolinePascal Date: Fri, 3 Jul 2026 13:49:38 +0200 Subject: [PATCH] tests(update): updating tests --- src/lerobot/datasets/feature_utils.py | 2 +- tests/datasets/test_compute_stats.py | 6 +++--- tests/datasets/test_datasets.py | 8 ++++++++ tests/datasets/test_feature_utils.py | 29 --------------------------- 4 files changed, 12 insertions(+), 33 deletions(-) delete mode 100644 tests/datasets/test_feature_utils.py diff --git a/src/lerobot/datasets/feature_utils.py b/src/lerobot/datasets/feature_utils.py index 93d2aca97..218853ef9 100644 --- a/src/lerobot/datasets/feature_utils.py +++ b/src/lerobot/datasets/feature_utils.py @@ -67,7 +67,7 @@ def get_hf_features_from_features(features: dict) -> datasets.Features: elif ft["shape"] == (1,): hf_features[key] = datasets.Value(dtype=ft["dtype"]) elif len(ft["shape"]) == 1: - # pyarrow rejects fixed_size_list[0], so use a variable length list instead + # pyarrow rejects fixed-size lists of length 0, so use a variable length list instead length = ft["shape"][0] if ft["shape"][0] > 0 else -1 hf_features[key] = datasets.Sequence(length=length, feature=datasets.Value(dtype=ft["dtype"])) elif len(ft["shape"]) == 2: diff --git a/tests/datasets/test_compute_stats.py b/tests/datasets/test_compute_stats.py index aca5c89e5..b28ebbe2c 100644 --- a/tests/datasets/test_compute_stats.py +++ b/tests/datasets/test_compute_stats.py @@ -689,7 +689,7 @@ def test_compute_episode_stats_string_features_skipped(): def test_compute_episode_stats_zero_width_features_skipped(caplog): - """Test that features with a zero-width dim (e.g. shape=(0,)) are skipped with a warning.""" + """Test that features with a zero-width dim (e.g. shape=(0,)) are skipped with a debug log.""" episode_data = { "empty": np.zeros((100, 0), dtype=np.float32), # Zero-width feature "action": np.random.normal(0, 1, (100, 5)), @@ -699,10 +699,10 @@ def test_compute_episode_stats_zero_width_features_skipped(caplog): "action": {"dtype": "float32", "shape": (5,)}, } - with caplog.at_level(logging.WARNING): + with caplog.at_level(logging.DEBUG): stats = compute_episode_stats(episode_data, features) - # Zero-width features should be skipped with a warning, others computed as usual + # Zero-width features should be skipped with a debug log, others computed as usual assert "empty" not in stats assert "empty" in caplog.text assert "action" in stats diff --git a/tests/datasets/test_datasets.py b/tests/datasets/test_datasets.py index 97f799d9f..7d88e36eb 100644 --- a/tests/datasets/test_datasets.py +++ b/tests/datasets/test_datasets.py @@ -1804,3 +1804,11 @@ def test_episode_filter_unknown_key_raises(tmp_path, lerobot_dataset_factory): root=dataset.root, episode_filter=lambda ep: ep["not_a_real_field"] > 0, ) + + +def test_get_hf_features_zero_width_feature_does_not_raise_on_from_dict(): + import datasets + + features = {"empty": {"dtype": "float32", "shape": (0,), "names": ["empty"]}} + hf_features = get_hf_features_from_features(features) + datasets.Dataset.from_dict({"empty": [[], []]}, features=hf_features) diff --git a/tests/datasets/test_feature_utils.py b/tests/datasets/test_feature_utils.py deleted file mode 100644 index b43271de3..000000000 --- a/tests/datasets/test_feature_utils.py +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env python - -# Copyright 2026 The HuggingFace Inc. team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import pytest - -pytest.importorskip("datasets", reason="datasets is required (install lerobot[dataset])") - -import datasets - -from lerobot.datasets.feature_utils import get_hf_features_from_features - - -def test_get_hf_features_zero_width_feature_does_not_raise_on_from_dict(): - features = {"empty": {"dtype": "float32", "shape": (0,), "names": ["empty"]}} - hf_features = get_hf_features_from_features(features) - datasets.Dataset.from_dict({"empty": [[], []]}, features=hf_features)