Skip to content

Commit ac5c949

Browse files
authored
Vb/revert labeling service error reporting (#1790)
1 parent b2824fe commit ac5c949

File tree

5 files changed

+18
-57
lines changed

5 files changed

+18
-57
lines changed

libs/labelbox/CHANGELOG.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55
* Client get_labeling_service_dashboards() aka project list (Miltiple PRs)
66
* Client get_task_by_id()([#1767](https://github.com/Labelbox/labelbox-python/pull/1767))
77
* Support for MMC tasks annotations([#1787](https://github.com/Labelbox/labelbox-python/pull/1787))
8-
## Updated
9-
* Labeling service improve error reporting([#1769](https://github.com/Labelbox/labelbox-python/pull/1769))
108
## Fixed
119
* Build a test-pypi sdk instance even if tests fail([#1774](https://github.com/Labelbox/labelbox-python/pull/1774))
1210

libs/labelbox/src/labelbox/client.py

Lines changed: 9 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -145,19 +145,15 @@ def _default_headers(self):
145145
@retry.Retry(predicate=retry.if_exception_type(
146146
labelbox.exceptions.InternalServerError,
147147
labelbox.exceptions.TimeoutError))
148-
def execute(
149-
self,
150-
query=None,
151-
params=None,
152-
data=None,
153-
files=None,
154-
timeout=60.0,
155-
experimental=False,
156-
error_log_key="message",
157-
raise_return_resource_not_found=False,
158-
error_handlers: Optional[Dict[str, Callable[[requests.models.Response],
159-
None]]] = None
160-
) -> Dict[str, Any]:
148+
def execute(self,
149+
query=None,
150+
params=None,
151+
data=None,
152+
files=None,
153+
timeout=60.0,
154+
experimental=False,
155+
error_log_key="message",
156+
raise_return_resource_not_found=False):
161157
""" Sends a request to the server for the execution of the
162158
given query.
163159
@@ -171,13 +167,6 @@ def execute(
171167
files (dict): file arguments for request
172168
timeout (float): Max allowed time for query execution,
173169
in seconds.
174-
raise_return_resource_not_found: By default the client relies on the caller to raise the correct exception when a resource is not found.
175-
If this is set to True, the client will raise a ResourceNotFoundError exception automatically.
176-
This simplifies processing.
177-
We recommend to use it only of api returns a clear and well-formed error when a resource not found for a given query.
178-
error_handlers (dict): A dictionary mapping graphql error code to handler functions.
179-
Allows a caller to handle specific errors reporting in a custom way or produce more user-friendly readable messages.
180-
181170
Returns:
182171
dict, parsed JSON response.
183172
Raises:
@@ -341,12 +330,7 @@ def get_error_status_code(error: dict) -> int:
341330
# TODO: fix this in the server API
342331
internal_server_error = check_errors(["INTERNAL_SERVER_ERROR"],
343332
"extensions", "code")
344-
error_code = "INTERNAL_SERVER_ERROR"
345-
346333
if internal_server_error is not None:
347-
if error_handlers and error_code in error_handlers:
348-
handler = error_handlers[error_code]
349-
handler(response)
350334
message = internal_server_error.get("message")
351335
error_status_code = get_error_status_code(internal_server_error)
352336
if error_status_code == 400:

libs/labelbox/src/labelbox/exceptions.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,7 @@ def __init__(self, message, cause=None):
1616
self.cause = cause
1717

1818
def __str__(self):
19-
exception_message = self.message
20-
if self.cause is not None:
21-
exception_message += " (caused by: %s)" % self.cause
22-
return exception_message
19+
return self.message + str(self.args)
2320

2421

2522
class AuthenticationError(LabelboxError):

libs/labelbox/src/labelbox/schema/labeling_service.py

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
from datetime import datetime
2-
import json
32
from typing import Any
43
from typing_extensions import Annotated
54

6-
from labelbox.exceptions import LabelboxError, ResourceNotFoundError
5+
from labelbox.exceptions import ResourceNotFoundError
76

87
from labelbox.pydantic_compat import BaseModel, Field
98
from labelbox.utils import _CamelCaseMixin
@@ -105,29 +104,12 @@ def request(self) -> 'LabelingService':
105104
}
106105
"""
107106
result = self.client.execute(query_str, {"projectId": self.project_id},
108-
raise_return_resource_not_found=True,
109-
error_handlers={
110-
"INTERNAL_SERVER_ERROR":
111-
self._raise_readable_errors
112-
})
107+
raise_return_resource_not_found=True)
113108
success = result["validateAndRequestProjectBoostWorkforce"]["success"]
114109
if not success:
115110
raise Exception("Failed to start labeling service")
116111
return LabelingService.get(self.client, self.project_id)
117112

118-
def _raise_readable_errors(self, response):
119-
errors = response.json().get('errors', [])
120-
if errors:
121-
message = errors[0].get(
122-
'message', json.dumps([{
123-
"errorMessage": "Unknown error"
124-
}]))
125-
errors = json.loads(message)
126-
error_messages = [error['errorMessage'] for error in errors]
127-
else:
128-
error_messages = ["Uknown error"]
129-
raise LabelboxError(". ".join(error_messages))
130-
131113
@classmethod
132114
def getOrCreate(cls, client, project_id: Cuid) -> 'LabelingService':
133115
"""

libs/labelbox/tests/integration/test_labeling_service.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,11 @@ def test_request_labeling_service_moe_project(
4242
project.upsert_instructions('tests/integration/media/sample_pdf.pdf')
4343

4444
labeling_service = project.get_labeling_service()
45-
with pytest.raises(LabelboxError,
46-
match='Project model config is not completed'):
45+
with pytest.raises(
46+
LabelboxError,
47+
match=
48+
'[{"errorType":"PROJECT_MODEL_CONFIG","errorMessage":"Project model config is not completed"}]'
49+
):
4750
labeling_service.request()
4851
project.add_model_config(model_config.uid)
4952
project.set_project_model_setup_complete()
@@ -61,8 +64,5 @@ def test_request_labeling_service_incomplete_requirements(ontology, project):
6164
): # No labeling service by default
6265
labeling_service.request()
6366
project.connect_ontology(ontology)
64-
with pytest.raises(
65-
LabelboxError,
66-
match=
67-
"['Data is missing', 'Ontology instructions are not completed']"):
67+
with pytest.raises(LabelboxError):
6868
labeling_service.request()

0 commit comments

Comments
 (0)