mirror of
https://github.com/huggingface/lerobot.git
synced 2026-07-24 18:26:11 +00:00
tests(update): updating tests
This commit is contained in:
@@ -67,7 +67,7 @@ def get_hf_features_from_features(features: dict) -> datasets.Features:
|
|||||||
elif ft["shape"] == (1,):
|
elif ft["shape"] == (1,):
|
||||||
hf_features[key] = datasets.Value(dtype=ft["dtype"])
|
hf_features[key] = datasets.Value(dtype=ft["dtype"])
|
||||||
elif len(ft["shape"]) == 1:
|
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
|
length = ft["shape"][0] if ft["shape"][0] > 0 else -1
|
||||||
hf_features[key] = datasets.Sequence(length=length, feature=datasets.Value(dtype=ft["dtype"]))
|
hf_features[key] = datasets.Sequence(length=length, feature=datasets.Value(dtype=ft["dtype"]))
|
||||||
elif len(ft["shape"]) == 2:
|
elif len(ft["shape"]) == 2:
|
||||||
|
|||||||
@@ -689,7 +689,7 @@ def test_compute_episode_stats_string_features_skipped():
|
|||||||
|
|
||||||
|
|
||||||
def test_compute_episode_stats_zero_width_features_skipped(caplog):
|
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 = {
|
episode_data = {
|
||||||
"empty": np.zeros((100, 0), dtype=np.float32), # Zero-width feature
|
"empty": np.zeros((100, 0), dtype=np.float32), # Zero-width feature
|
||||||
"action": np.random.normal(0, 1, (100, 5)),
|
"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,)},
|
"action": {"dtype": "float32", "shape": (5,)},
|
||||||
}
|
}
|
||||||
|
|
||||||
with caplog.at_level(logging.WARNING):
|
with caplog.at_level(logging.DEBUG):
|
||||||
stats = compute_episode_stats(episode_data, features)
|
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" not in stats
|
||||||
assert "empty" in caplog.text
|
assert "empty" in caplog.text
|
||||||
assert "action" in stats
|
assert "action" in stats
|
||||||
|
|||||||
@@ -1804,3 +1804,11 @@ def test_episode_filter_unknown_key_raises(tmp_path, lerobot_dataset_factory):
|
|||||||
root=dataset.root,
|
root=dataset.root,
|
||||||
episode_filter=lambda ep: ep["not_a_real_field"] > 0,
|
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)
|
||||||
|
|||||||
@@ -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)
|
|
||||||
Reference in New Issue
Block a user