#!/usr/bin/env python # Copyright 2024 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. from pathlib import Path import pytest from lerobot.common.datasets.factory import make_dataset from lerobot.common.logger import Logger from lerobot.common.policies.factory import make_policy from lerobot.common.utils.utils import init_hydra_config from lerobot.scripts.visualize_dataset_html import visualize_dataset_html from tests.utils import DEFAULT_CONFIG_PATH @pytest.mark.parametrize( "repo_id", ["lerobot/pusht"], ) def test_visualize_dataset_html(tmpdir, repo_id): tmpdir = Path(tmpdir) visualize_dataset_html( repo_id, episodes=[0], output_dir=tmpdir, serve=False, ) assert (tmpdir / "static" / "episode_0.csv").exists() @pytest.mark.parametrize( "repo_id, policy_method", [ ("lerobot/pusht", "select_action"), ("lerobot/pusht", "forward"), ], ) def test_visualize_dataset_policy_ckpt_path(tmpdir, repo_id, policy_method): tmpdir = Path(tmpdir) # Create a policy cfg = init_hydra_config(DEFAULT_CONFIG_PATH, overrides=["device=cpu"]) dataset = make_dataset(cfg) policy = make_policy(cfg, dataset_stats=dataset.stats) # Save a checkpoint logger = Logger(cfg, tmpdir) logger.save_model(tmpdir, policy) visualize_dataset_html( repo_id, episodes=[0], output_dir=tmpdir, serve=False, pretrained_policy_name_or_path=tmpdir, policy_method=policy_method, ) assert (tmpdir / "static" / "episode_0.csv").exists() assert (tmpdir / "episode_0.safetensors").exists()