From 3d6c42fa17be91490ed7f5085d9c916b15bc9821 Mon Sep 17 00:00:00 2001 From: Maciej Kozik Date: Tue, 1 Nov 2022 17:28:39 +0100 Subject: [PATCH 1/2] Add deprecation warnings for creating Dataset projects & using LPOs --- CHANGELOG.md | 5 +++++ labelbox/client.py | 25 +++++++++++++++++++------ labelbox/schema/project.py | 4 ++++ 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ad670467f..1ee35f56b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog # In progress + +## Added +* Add deprecation warning for queue_mode == QueueMode.Dataset when creating a new project. +* Add deprecation warning for LPOs. + ## Changed * Default behavior for metrics to not include subclasses in the calculation. * Updated `create_batch` method to accept consensus settings. diff --git a/labelbox/client.py b/labelbox/client.py index 3c5c02b0a..796573bfc 100644 --- a/labelbox/client.py +++ b/labelbox/client.py @@ -34,6 +34,7 @@ from labelbox.schema.project import Project from labelbox.schema.role import Role from labelbox.schema.slice import CatalogSlice +from labelbox.schema.queue_mode import QueueMode from labelbox.schema.media_type import MediaType @@ -615,11 +616,17 @@ def create_project(self, **kwargs) -> Project: >>> project = client.create_project( name="", description="", - media_type=MediaType.Image + media_type=MediaType.Image, + queue_mode=QueueMode.Batch ) Args: - **kwargs: Keyword arguments with Project attribute values. + name (str): A name for the project + description (str): A short summary for the project + media_type (MediaType): The type of assets that this project will accept + queue_mode (Optional[QueueMode]): The queue mode to use + auto_audit_percentage (Optional[float]): The percentage of data rows that will require more than 1 label + auto_audit_number_of_labels (Optional[float]): Number of labels required for data rows selected for multiple labeling (auto_audit_percentage) Returns: A new Project object. Raises: @@ -630,7 +637,7 @@ def create_project(self, **kwargs) -> Project: queue_mode = kwargs.get("queue_mode") if media_type: if MediaType.is_supported(media_type): - kwargs["media_type"] = media_type.value + media_type = media_type.value else: raise TypeError(f"{media_type} is not a valid media type. Use" f" any of {MediaType.get_supported_members()}" @@ -642,11 +649,17 @@ def create_project(self, **kwargs) -> Project: if not queue_mode: logger.warning( - "Default createProject behavior will soon be adjusted to prefer" - "batch projects. Pass in `queue_mode` parameter explicitly to opt-out for the" + "Default createProject behavior will soon be adjusted to prefer " + "batch projects. Pass in `queue_mode` parameter explicitly to opt-out for the " "time being.") + elif queue_mode == QueueMode.Dataset: + logger.warning( + "QueueMode.Dataset will eventually be deprecated, and is no longer " + "recommended for new projects. Prefer QueueMode.Batch instead.") - return self._create(Entity.Project, kwargs) + return self._create(Entity.Project, { + **kwargs, 'media_type': media_type + }) def get_roles(self) -> List[Role]: """ diff --git a/labelbox/schema/project.py b/labelbox/schema/project.py index cbfba9500..ab4ad19f6 100644 --- a/labelbox/schema/project.py +++ b/labelbox/schema/project.py @@ -768,6 +768,10 @@ def set_labeling_parameter_overrides(self, data) -> bool: Returns: bool, indicates if the operation was a success. """ + logger.warning( + "LabelingParameterOverrides are deprecated for new projects, and will eventually be removed " + "completely. Prefer to use batch based queuing with priority & consensus number of labels instead." + ) self.validate_labeling_parameter_overrides(data) data_str = ",\n".join( "{dataRow: {id: \"%s\"}, priority: %d, numLabels: %d }" % From 7a9a488c30097674560f33dd2d82909abd8d4cde Mon Sep 17 00:00:00 2001 From: Maciej Kozik Date: Tue, 1 Nov 2022 17:44:45 +0100 Subject: [PATCH 2/2] Fix null media_type --- labelbox/client.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/labelbox/client.py b/labelbox/client.py index 796573bfc..54dd056a2 100644 --- a/labelbox/client.py +++ b/labelbox/client.py @@ -658,7 +658,10 @@ def create_project(self, **kwargs) -> Project: "recommended for new projects. Prefer QueueMode.Batch instead.") return self._create(Entity.Project, { - **kwargs, 'media_type': media_type + **kwargs, + **({ + 'media_type': media_type + } if media_type else {}) }) def get_roles(self) -> List[Role]: