| |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| import json |
| from types import SimpleNamespace |
|
|
| import pytest |
|
|
| |
| |
| |
| pytest.importorskip("datasets", reason="datasets is required (install lerobot[dataset])") |
|
|
|
|
| def test_push_to_hub_tags_uploaded_dataset_revision(tmp_path, monkeypatch): |
| from lerobot.scripts.lerobot_annotate import _push_to_hub |
|
|
| root = tmp_path / "dataset" |
| (root / "meta").mkdir(parents=True) |
| (root / "meta" / "info.json").write_text(json.dumps({"codebase_version": "v3.0"})) |
|
|
| calls = {} |
|
|
| class FakeHfApi: |
| def create_repo(self, **kwargs): |
| calls["create_repo"] = kwargs |
|
|
| def upload_folder(self, **kwargs): |
| calls["upload_folder"] = kwargs |
| return SimpleNamespace(oid="abc123") |
|
|
| def delete_tag(self, repo_id, **kwargs): |
| import requests |
| from huggingface_hub.errors import RevisionNotFoundError |
|
|
| calls["delete_tag"] = {"repo_id": repo_id, **kwargs} |
| |
| raise RevisionNotFoundError("no such tag", response=requests.Response()) |
|
|
| def create_tag(self, **kwargs): |
| calls["create_tag"] = kwargs |
|
|
| monkeypatch.setattr("huggingface_hub.HfApi", FakeHfApi) |
|
|
| cfg = SimpleNamespace( |
| repo_id="source/dataset", |
| new_repo_id="annotated/dataset", |
| push_private=True, |
| push_commit_message=None, |
| ) |
|
|
| _push_to_hub(root, cfg) |
|
|
| assert calls["create_repo"] == { |
| "repo_id": "annotated/dataset", |
| "repo_type": "dataset", |
| "private": True, |
| "exist_ok": True, |
| } |
| assert calls["upload_folder"]["repo_id"] == "annotated/dataset" |
| |
| |
| assert calls["delete_tag"] == { |
| "repo_id": "annotated/dataset", |
| "tag": "v3.0", |
| "repo_type": "dataset", |
| } |
| assert calls["create_tag"] == { |
| "repo_id": "annotated/dataset", |
| "tag": "v3.0", |
| "repo_type": "dataset", |
| "revision": "abc123", |
| } |
|
|