From 9128f2a76beecca84297d58344184924453a85cc Mon Sep 17 00:00:00 2001 From: bmartel Date: Tue, 26 Mar 2024 11:03:32 -0500 Subject: [PATCH] fix: OPTIC-574: Inconsistent behavior on Create Annotations From Predictions (#5631) * fix: OPTIC-574: Inconsistent behavior on Create Annotations From Predictions * adding test * linting --- .../actions/predictions_to_annotations.py | 3 +- label_studio/projects/models.py | 2 +- .../test_predictions_to_annotations.py | 34 +++++++++++++++++++ 3 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 label_studio/tests/data_manager/actions/test_predictions_to_annotations.py diff --git a/label_studio/data_manager/actions/predictions_to_annotations.py b/label_studio/data_manager/actions/predictions_to_annotations.py index 058950321e3..cbacafe65ee 100644 --- a/label_studio/data_manager/actions/predictions_to_annotations.py +++ b/label_studio/data_manager/actions/predictions_to_annotations.py @@ -65,8 +65,9 @@ def predictions_to_annotations_form(user, project): versions = project.get_model_versions() # put the current model version on the top of the list + # if it exists first = project.model_version - if first is not None: + if first: try: versions.remove(first) except ValueError: diff --git a/label_studio/projects/models.py b/label_studio/projects/models.py index e39e98cede4..cca7c5d4422 100644 --- a/label_studio/projects/models.py +++ b/label_studio/projects/models.py @@ -931,7 +931,7 @@ def get_model_versions(self, with_counters=False, extended=False): output = {r['model_version']: r['count'] for r in model_versions} # Ensure that self.model_version exists in output - if self.model_version is not None and self.model_version not in output: + if self.model_version and self.model_version not in output: output[self.model_version] = 0 # Return as per requirement diff --git a/label_studio/tests/data_manager/actions/test_predictions_to_annotations.py b/label_studio/tests/data_manager/actions/test_predictions_to_annotations.py new file mode 100644 index 00000000000..8fd08d7da7b --- /dev/null +++ b/label_studio/tests/data_manager/actions/test_predictions_to_annotations.py @@ -0,0 +1,34 @@ +import mock +from data_manager.actions.predictions_to_annotations import predictions_to_annotations_form +from projects.models import Project +from users.models import User + + +def test_predictions_to_annotations_form(): + project = Project() + user = User() + + with mock.patch('projects.models.Project.get_model_versions') as mock_get_model_versions: + project.model_version = '' + mock_get_model_versions.return_value = ['undefined'] + assert predictions_to_annotations_form(user, project)[0]['fields'][0]['options'] == ['undefined'] + + project.model_version = None + mock_get_model_versions.return_value = ['undefined'] + assert predictions_to_annotations_form(user, project)[0]['fields'][0]['options'] == ['undefined'] + + project.model_version = 'undefined' + mock_get_model_versions.return_value = ['undefined'] + assert predictions_to_annotations_form(user, project)[0]['fields'][0]['options'] == ['undefined'] + + project.model_version = '' + mock_get_model_versions.return_value = [] + assert predictions_to_annotations_form(user, project)[0]['fields'][0]['options'] == [] + + project.model_version = None + mock_get_model_versions.return_value = [] + assert predictions_to_annotations_form(user, project)[0]['fields'][0]['options'] == [] + + project.model_version = 'undefined' + mock_get_model_versions.return_value = [] + assert predictions_to_annotations_form(user, project)[0]['fields'][0]['options'] == ['undefined']