From 3c08b36a4d1b2a166fb4f8aa60fa1b5fd8fe1485 Mon Sep 17 00:00:00 2001 From: nupursharma-labellerr Date: Mon, 22 Dec 2025 22:17:18 +0530 Subject: [PATCH 1/7] [LABIMP-8413] Adding validation for invalid dataset id --- labellerr/core/datasets/base.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/labellerr/core/datasets/base.py b/labellerr/core/datasets/base.py index 2dda8a9..47aa550 100644 --- a/labellerr/core/datasets/base.py +++ b/labellerr/core/datasets/base.py @@ -29,6 +29,12 @@ def _register(cls, data_type, dataset_class): @staticmethod def get_dataset(client: "LabellerrClient", dataset_id: str): """Get dataset from Labellerr API""" + # Validate dataset_id format (should be a valid UUID) + try: + uuid.UUID(dataset_id) + except (ValueError, AttributeError): + raise InvalidDatasetError(f"Invalid dataset ID format: {dataset_id}") + unique_id = str(uuid.uuid4()) url = ( f"{constants.BASE_URL}/datasets/{dataset_id}?client_id={client.client_id}" From 8afa67620d84cac09bcba5d19f97edd7b485719c Mon Sep 17 00:00:00 2001 From: nupursharma-labellerr Date: Mon, 22 Dec 2025 22:18:25 +0530 Subject: [PATCH 2/7] [LABIMP-8413] Adding validation for invalid dataset id --- labellerr/core/datasets/base.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/labellerr/core/datasets/base.py b/labellerr/core/datasets/base.py index 47aa550..acade55 100644 --- a/labellerr/core/datasets/base.py +++ b/labellerr/core/datasets/base.py @@ -29,12 +29,12 @@ def _register(cls, data_type, dataset_class): @staticmethod def get_dataset(client: "LabellerrClient", dataset_id: str): """Get dataset from Labellerr API""" - # Validate dataset_id format (should be a valid UUID) + # Validate dataset_id format (should be a valid UUID) try: uuid.UUID(dataset_id) except (ValueError, AttributeError): raise InvalidDatasetError(f"Invalid dataset ID format: {dataset_id}") - + unique_id = str(uuid.uuid4()) url = ( f"{constants.BASE_URL}/datasets/{dataset_id}?client_id={client.client_id}" From 71c14e15387bbca29cf894e014af1683029ca438 Mon Sep 17 00:00:00 2001 From: nupursharma-labellerr Date: Mon, 22 Dec 2025 22:30:07 +0530 Subject: [PATCH 3/7] [LABIMP-8413] Updating code as per Claude code comments --- labellerr/core/datasets/base.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/labellerr/core/datasets/base.py b/labellerr/core/datasets/base.py index acade55..3c44793 100644 --- a/labellerr/core/datasets/base.py +++ b/labellerr/core/datasets/base.py @@ -12,6 +12,7 @@ from ..files import LabellerrFile from ..connectors import LabellerrConnection +from ..exceptions import InvalidDatasetError, InvalidDatasetIDError, LabellerrError if TYPE_CHECKING: from ..projects import LabellerrProject @@ -30,10 +31,12 @@ def _register(cls, data_type, dataset_class): def get_dataset(client: "LabellerrClient", dataset_id: str): """Get dataset from Labellerr API""" # Validate dataset_id format (should be a valid UUID) + if not dataset_id: + raise InvalidDatasetIDError("Dataset ID cannot be None or empty") try: uuid.UUID(dataset_id) - except (ValueError, AttributeError): - raise InvalidDatasetError(f"Invalid dataset ID format: {dataset_id}") + except (ValueError, TypeError): + raise InvalidDatasetIDError(f"Invalid dataset ID format: {dataset_id}") unique_id = str(uuid.uuid4()) url = ( From 86b14b6c8d593afc48d1812ea5ceba3ad8a232ed Mon Sep 17 00:00:00 2001 From: nupursharma-labellerr Date: Mon, 22 Dec 2025 22:40:53 +0530 Subject: [PATCH 4/7] [LABIMP-8413] Updating code as per Claude code comments --- labellerr/core/datasets/base.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/labellerr/core/datasets/base.py b/labellerr/core/datasets/base.py index 3c44793..764d665 100644 --- a/labellerr/core/datasets/base.py +++ b/labellerr/core/datasets/base.py @@ -7,12 +7,11 @@ from typing import Dict, Any, Generator, TYPE_CHECKING from .. import constants -from ..exceptions import InvalidDatasetError, LabellerrError +from ..exceptions import InvalidDatasetError, LabellerrError, InvalidDatasetIDError from ..client import LabellerrClient from ..files import LabellerrFile from ..connectors import LabellerrConnection -from ..exceptions import InvalidDatasetError, InvalidDatasetIDError, LabellerrError if TYPE_CHECKING: from ..projects import LabellerrProject From dbf0b1608ee36d3df4774c7e2e788e611a3044c7 Mon Sep 17 00:00:00 2001 From: nupursharma-labellerr Date: Fri, 9 Jan 2026 12:14:46 +0530 Subject: [PATCH 5/7] [LABIMP-8413]: PR review comments --- labellerr/core/datasets/base.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/labellerr/core/datasets/base.py b/labellerr/core/datasets/base.py index 764d665..02af209 100644 --- a/labellerr/core/datasets/base.py +++ b/labellerr/core/datasets/base.py @@ -29,13 +29,13 @@ def _register(cls, data_type, dataset_class): @staticmethod def get_dataset(client: "LabellerrClient", dataset_id: str): """Get dataset from Labellerr API""" - # Validate dataset_id format (should be a valid UUID) + # Validate dataset_id is not None or empty + if not dataset_id or not isinstance(dataset_id, str): + raise InvalidDatasetIDError("Dataset ID cannot be None or empty") + + dataset_id = dataset_id.strip() if not dataset_id: raise InvalidDatasetIDError("Dataset ID cannot be None or empty") - try: - uuid.UUID(dataset_id) - except (ValueError, TypeError): - raise InvalidDatasetIDError(f"Invalid dataset ID format: {dataset_id}") unique_id = str(uuid.uuid4()) url = ( @@ -63,7 +63,10 @@ def __call__(cls, client, dataset_id, **kwargs): return instance dataset_data = cls.get_dataset(client, dataset_id) if dataset_data is None: - raise InvalidDatasetError(f"Dataset not found: {dataset_id}") + raise InvalidDatasetError( + f"Dataset not found with ID: '{dataset_id}'. " + f"Please verify the dataset_id is correct and exists in your account." + ) data_type = dataset_data.get("data_type") dataset_class = cls._registry.get(data_type) From 671d9dc06c3b095e126e4621586b450537476b03 Mon Sep 17 00:00:00 2001 From: Ximi Hoque Date: Mon, 12 Jan 2026 16:38:18 +0530 Subject: [PATCH 6/7] PR fixes --- labellerr/core/datasets/base.py | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/labellerr/core/datasets/base.py b/labellerr/core/datasets/base.py index 02af209..c62dc6b 100644 --- a/labellerr/core/datasets/base.py +++ b/labellerr/core/datasets/base.py @@ -30,12 +30,8 @@ def _register(cls, data_type, dataset_class): def get_dataset(client: "LabellerrClient", dataset_id: str): """Get dataset from Labellerr API""" # Validate dataset_id is not None or empty - if not dataset_id or not isinstance(dataset_id, str): - raise InvalidDatasetIDError("Dataset ID cannot be None or empty") - - dataset_id = dataset_id.strip() - if not dataset_id: - raise InvalidDatasetIDError("Dataset ID cannot be None or empty") + if not isinstance(dataset_id, str) or not dataset_id.strip(): + raise InvalidDatasetIDError("Dataset ID cannot be None or empty and must be a non-empty string") unique_id = str(uuid.uuid4()) url = ( @@ -65,7 +61,7 @@ def __call__(cls, client, dataset_id, **kwargs): if dataset_data is None: raise InvalidDatasetError( f"Dataset not found with ID: '{dataset_id}'. " - f"Please verify the dataset_id is correct and exists in your account." + f"Please verify the dataset_id is correct and exists in your workspace." ) data_type = dataset_data.get("data_type") From fb886b569308df9ac0b842bc6d011e0f3a42379e Mon Sep 17 00:00:00 2001 From: Ximi Hoque Date: Mon, 12 Jan 2026 16:38:43 +0530 Subject: [PATCH 7/7] Linter --- labellerr/core/datasets/base.py | 4 +++- labellerr/core/exports/base.py | 1 - 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/labellerr/core/datasets/base.py b/labellerr/core/datasets/base.py index c62dc6b..92abb45 100644 --- a/labellerr/core/datasets/base.py +++ b/labellerr/core/datasets/base.py @@ -31,7 +31,9 @@ def get_dataset(client: "LabellerrClient", dataset_id: str): """Get dataset from Labellerr API""" # Validate dataset_id is not None or empty if not isinstance(dataset_id, str) or not dataset_id.strip(): - raise InvalidDatasetIDError("Dataset ID cannot be None or empty and must be a non-empty string") + raise InvalidDatasetIDError( + "Dataset ID cannot be None or empty and must be a non-empty string" + ) unique_id = str(uuid.uuid4()) url = ( diff --git a/labellerr/core/exports/base.py b/labellerr/core/exports/base.py index 0792117..ba2c372 100644 --- a/labellerr/core/exports/base.py +++ b/labellerr/core/exports/base.py @@ -4,7 +4,6 @@ from typing import TYPE_CHECKING, Dict, Any, Optional import logging -import json if TYPE_CHECKING: from ..projects.base import LabellerrProject