out / lm-evaluation-harness /tests /test_task_manager.py
BayesTensor's picture
Upload folder using huggingface_hub
9d5b280 verified
import tempfile
from pathlib import Path
import pytest
from lm_eval.tasks import TaskManager
@pytest.fixture(scope="module")
def custom_task_name():
return "zzz_my_python_task"
@pytest.fixture(scope="module")
def custom_task_tag():
return "zzz-tag"
@pytest.fixture(scope="module")
def task_yaml(pytestconfig, custom_task_name, custom_task_tag):
yield f"""include: {pytestconfig.rootpath}/lm_eval/tasks/hellaswag/hellaswag.yaml
task: {custom_task_name}
class: !function {custom_task_name}.MockPythonTask
tag:
- {custom_task_tag}
"""
@pytest.fixture(scope="module")
def task_code():
return """
from lm_eval.tasks import ConfigurableTask
class MockPythonTask(ConfigurableTask):
def __init__(
self,
data_dir=None,
cache_dir=None,
download_mode=None,
config=None,
) -> None:
config.pop("class")
super().__init__(data_dir, cache_dir, download_mode, config)
"""
@pytest.fixture(scope="module")
def custom_task_files_dir(task_yaml, task_code, custom_task_name):
with tempfile.TemporaryDirectory() as temp_dir:
yaml_path = Path(temp_dir) / f"{custom_task_name}.yaml"
with open(yaml_path, "w") as f:
f.write(task_yaml)
pysource_path = Path(temp_dir) / f"{custom_task_name}.py"
with open(pysource_path, "w") as f:
f.write(task_code)
yield temp_dir
def test_python_task_inclusion(
custom_task_files_dir: Path, custom_task_name: str, custom_task_tag: str
):
task_manager = TaskManager(
verbosity="INFO", include_path=str(custom_task_files_dir)
)
# check if python tasks enters the global task_index
assert custom_task_name in task_manager.task_index
# check if subtask is present
assert custom_task_name in task_manager.all_subtasks
# check if tag is present
assert custom_task_tag in task_manager.all_tags
# check if it can be loaded by tag (custom_task_tag)
assert custom_task_name in task_manager.load_task_or_group(custom_task_tag)