chore: import upstream snapshot with attribution
Build documentation / build (push) Failing after 0s
CI / check_code_quality (push) Has been cancelled
CI / test (deps-latest, ubuntu-latest, integration) (push) Has been cancelled
CI / test (deps-latest, ubuntu-latest, unit) (push) Has been cancelled
CI / test (deps-latest, windows-latest, integration) (push) Has been cancelled
CI / test (deps-latest, windows-latest, unit) (push) Has been cancelled
CI / test (deps-minimum, ubuntu-latest, integration) (push) Has been cancelled
CI / test (deps-minimum, ubuntu-latest, unit) (push) Has been cancelled
CI / test (deps-minimum, windows-latest, integration) (push) Has been cancelled
CI / test (deps-minimum, windows-latest, unit) (push) Has been cancelled
CI / test_py314 (deps-latest, ubuntu-latest, unit) (push) Has been cancelled
CI / test_py314 (deps-latest, windows-latest, unit) (push) Has been cancelled
CI / test_py314_future (deps-latest, ubuntu-latest, unit) (push) Has been cancelled
CI / test_py314_future (deps-latest, windows-latest, unit) (push) Has been cancelled
Secret Leaks / trufflehog (push) Has been cancelled
Build documentation / build (push) Failing after 0s
CI / check_code_quality (push) Has been cancelled
CI / test (deps-latest, ubuntu-latest, integration) (push) Has been cancelled
CI / test (deps-latest, ubuntu-latest, unit) (push) Has been cancelled
CI / test (deps-latest, windows-latest, integration) (push) Has been cancelled
CI / test (deps-latest, windows-latest, unit) (push) Has been cancelled
CI / test (deps-minimum, ubuntu-latest, integration) (push) Has been cancelled
CI / test (deps-minimum, ubuntu-latest, unit) (push) Has been cancelled
CI / test (deps-minimum, windows-latest, integration) (push) Has been cancelled
CI / test (deps-minimum, windows-latest, unit) (push) Has been cancelled
CI / test_py314 (deps-latest, ubuntu-latest, unit) (push) Has been cancelled
CI / test_py314 (deps-latest, windows-latest, unit) (push) Has been cancelled
CI / test_py314_future (deps-latest, ubuntu-latest, unit) (push) Has been cancelled
CI / test_py314_future (deps-latest, windows-latest, unit) (push) Has been cancelled
Secret Leaks / trufflehog (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
import shutil
|
||||
import textwrap
|
||||
|
||||
import pytest
|
||||
|
||||
from datasets import ClassLabel, Features, Mesh
|
||||
from datasets.builder import InvalidConfigName
|
||||
from datasets.data_files import DataFilesDict, get_data_patterns
|
||||
from datasets.packaged_modules.meshfolder.meshfolder import MeshFolder, MeshFolderConfig
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def cache_dir(tmp_path):
|
||||
return str(tmp_path / "meshfolder_cache_dir")
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def data_files_with_labels_no_metadata(tmp_path, mesh_file):
|
||||
data_dir = tmp_path / "data_files_with_labels_no_metadata"
|
||||
data_dir.mkdir(parents=True, exist_ok=True)
|
||||
subdir_class_0 = data_dir / "chair"
|
||||
subdir_class_0.mkdir(parents=True, exist_ok=True)
|
||||
subdir_class_1 = data_dir / "table"
|
||||
subdir_class_1.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
mesh_filename = subdir_class_0 / "mesh_chair.glb"
|
||||
shutil.copyfile(mesh_file, mesh_filename)
|
||||
mesh_filename2 = subdir_class_1 / "mesh_table.glb"
|
||||
shutil.copyfile(mesh_file, mesh_filename2)
|
||||
|
||||
data_files_with_labels_no_metadata = DataFilesDict.from_patterns(
|
||||
get_data_patterns(str(data_dir)), data_dir.as_posix()
|
||||
)
|
||||
|
||||
return data_files_with_labels_no_metadata
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mesh_file_with_metadata(tmp_path, mesh_file):
|
||||
mesh_filename = tmp_path / "mesh_file.glb"
|
||||
shutil.copyfile(mesh_file, mesh_filename)
|
||||
mesh_metadata_filename = tmp_path / "metadata.jsonl"
|
||||
mesh_metadata = textwrap.dedent(
|
||||
"""\
|
||||
{"file_name": "mesh_file.glb", "text": "Mesh description"}
|
||||
"""
|
||||
)
|
||||
with open(mesh_metadata_filename, "w", encoding="utf-8") as f:
|
||||
f.write(mesh_metadata)
|
||||
return str(mesh_filename), str(mesh_metadata_filename)
|
||||
|
||||
|
||||
def test_meshfolder_config_and_extensions():
|
||||
# Verify extensions
|
||||
assert MeshFolder.EXTENSIONS == [".glb", ".ply", ".stl"]
|
||||
assert MeshFolder.BASE_FEATURE == Mesh
|
||||
assert MeshFolder.BASE_COLUMN_NAME == "mesh"
|
||||
|
||||
|
||||
def test_config_raises_when_invalid_name() -> None:
|
||||
with pytest.raises(InvalidConfigName, match="Bad characters"):
|
||||
_ = MeshFolderConfig(name="name-with-*-invalid-character")
|
||||
|
||||
|
||||
def test_generate_examples_with_labels(data_files_with_labels_no_metadata, cache_dir):
|
||||
# there are no metadata.jsonl files in this test case
|
||||
meshfolder = MeshFolder(data_files=data_files_with_labels_no_metadata, cache_dir=cache_dir, drop_labels=False)
|
||||
meshfolder.download_and_prepare()
|
||||
assert meshfolder.info.features == Features({"mesh": Mesh(), "label": ClassLabel(names=["chair", "table"])})
|
||||
dataset = list(meshfolder.as_dataset()["train"])
|
||||
label_feature = meshfolder.info.features["label"]
|
||||
|
||||
assert dataset[0]["label"] == label_feature._str2int["chair"]
|
||||
assert dataset[1]["label"] == label_feature._str2int["table"]
|
||||
|
||||
|
||||
@pytest.mark.parametrize("streaming", [False, True])
|
||||
def test_data_files_with_metadata_and_single_split(streaming, cache_dir, mesh_file_with_metadata):
|
||||
mesh_file, mesh_metadata_file = mesh_file_with_metadata
|
||||
meshfolder = MeshFolder(data_files={"train": [mesh_file, mesh_metadata_file]}, cache_dir=cache_dir)
|
||||
meshfolder.download_and_prepare()
|
||||
dataset = meshfolder.as_streaming_dataset()["train"] if streaming else meshfolder.as_dataset()["train"]
|
||||
|
||||
item = next(iter(dataset)) if streaming else dataset[0]
|
||||
assert "mesh" in item
|
||||
assert item["text"] == "Mesh description"
|
||||
Reference in New Issue
Block a user