From 313be6c9a00ef602b7c9c4807a13dc0eebd08342 Mon Sep 17 00:00:00 2001 From: Muhamed Fazal PS Date: Wed, 15 Jul 2026 16:49:12 +0530 Subject: [PATCH] fix: add input validation for dataset path with helpful error message (#118) _validate_path now raises DatasetNotFoundError with a user-friendly message showing the missing path, current working directory, and a tip about using absolute paths. Early validation also added to _get_loader in factory.py for fail-fast behaviour. Closes #118 --- openagent_eval/datasets/base.py | 18 ++++++++++++++++-- openagent_eval/datasets/factory.py | 21 +++++++++++++++++++++ 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/openagent_eval/datasets/base.py b/openagent_eval/datasets/base.py index 6db0a69..015d9fd 100644 --- a/openagent_eval/datasets/base.py +++ b/openagent_eval/datasets/base.py @@ -179,12 +179,26 @@ def _validate_path(self, path: Path) -> None: path: Path to validate. Raises: - DatasetNotFoundError: If the path does not exist. + DatasetNotFoundError: If the path does not exist + with a helpful message showing the current working directory. """ + import os + if not path.exists(): from openagent_eval.exceptions import DatasetNotFoundError - raise DatasetNotFoundError(dataset_path=str(path)) + cwd = os.getcwd() + raise DatasetNotFoundError( + dataset_path=str(path), + details={ + "tip": ( + f"Dataset file not found at '{path}'. " + f"Checked in: {cwd}. " + f"Use an absolute path or verify the path " + f"exists relative to your current directory." + ), + }, + ) if not path.is_file(): from openagent_eval.exceptions import InvalidDatasetError diff --git a/openagent_eval/datasets/factory.py b/openagent_eval/datasets/factory.py index 50782d3..b646409 100644 --- a/openagent_eval/datasets/factory.py +++ b/openagent_eval/datasets/factory.py @@ -50,7 +50,28 @@ def _get_loader(config: DatasetConfig) -> BaseDatasetLoader: Raises: InvalidDatasetError: If format cannot be determined or is unsupported. + DatasetNotFoundError: If the dataset path does not exist. """ + # Early path validation — fail fast with a helpful message. + path = Path(config.path) + if not path.exists(): + from openagent_eval.exceptions import DatasetNotFoundError + + import os + + cwd = os.getcwd() + raise DatasetNotFoundError( + dataset_path=config.path, + details={ + "tip": ( + f"Dataset file not found at '{config.path}'. " + f"Checked in: {cwd}. " + f"Use an absolute path or verify the path " + f"exists relative to your current directory." + ), + }, + ) + # Try explicit format first if config.format is not None: format_key = config.format.lower().strip()