| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| from unittest.mock import MagicMock |
|
|
| from lerobot.utils.hub import find_latest_hub_checkpoint |
|
|
|
|
| def _patch_list_files(monkeypatch, files): |
| api = MagicMock() |
| api.list_repo_files.return_value = files |
| |
| monkeypatch.setattr("lerobot.utils.hub.HfApi", lambda *a, **k: api) |
| return api |
|
|
|
|
| def test_find_latest_hub_checkpoint_picks_highest_step(monkeypatch): |
| _patch_list_files( |
| monkeypatch, |
| [ |
| "README.md", |
| "checkpoints/000500/pretrained_model/model.safetensors", |
| "checkpoints/000500/training_state/training_step.json", |
| "checkpoints/020000/pretrained_model/model.safetensors", |
| "checkpoints/001000/training_state/training_step.json", |
| ], |
| ) |
| |
| assert find_latest_hub_checkpoint("u/run") == "checkpoints/020000" |
|
|
|
|
| def test_find_latest_hub_checkpoint_ignores_non_step_entries(monkeypatch): |
| _patch_list_files( |
| monkeypatch, |
| ["checkpoints/last/pretrained_model/model.safetensors", "config.json"], |
| ) |
| |
| assert find_latest_hub_checkpoint("u/run") is None |
|
|
|
|
| def test_find_latest_hub_checkpoint_none_when_no_checkpoints(monkeypatch): |
| _patch_list_files(monkeypatch, ["config.json", "model.safetensors"]) |
| assert find_latest_hub_checkpoint("u/run") is None |
|
|