From b0c1d394f2eb296bc07acfef0aeb92603d945c47 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Thu, 5 Feb 2026 10:23:43 +0100 Subject: [PATCH 1/6] debug log response data on fail --- ayon_api/utils.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/ayon_api/utils.py b/ayon_api/utils.py index 1e6837e90..383d5932b 100644 --- a/ayon_api/utils.py +++ b/ayon_api/utils.py @@ -4,6 +4,8 @@ import re import datetime import copy +import logging +import json import uuid import string import platform @@ -101,8 +103,9 @@ def _get_description(response): return HTTPStatus(response.status).description -class RestApiResponse(object): +class RestApiResponse: """API Response.""" + log = logging.getLogger("RestApiResponse") def __init__(self, response, data=None): if response is None: @@ -179,15 +182,20 @@ def raise_for_status(self, message=None): if message is None: message = str(exc) - # Get 'detail' from response.json() if possible because it'll be - # more descriptive than default http error message + data = {} try: - detail = exc.response.json()["detail"] - if detail: - message = f"{message} ({detail})" + data = self.data or data except (AttributeError, KeyError, RequestsJSONDecodeError): pass + detail = data.get("detail") + if detail: + message = f"{message} ({detail})" + self.log.debug( + "HTTP request error: %s\n%s", + message, + json.dumps(data, indent=4), + ) raise HTTPRequestError(message, exc.response) def __enter__(self, *args, **kwargs): From da01ec223f0af626545e45064abd18619c323bc3 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Thu, 5 Feb 2026 10:24:58 +0100 Subject: [PATCH 2/6] change level to warning --- ayon_api/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ayon_api/utils.py b/ayon_api/utils.py index 383d5932b..1c6c1c5cb 100644 --- a/ayon_api/utils.py +++ b/ayon_api/utils.py @@ -191,7 +191,7 @@ def raise_for_status(self, message=None): detail = data.get("detail") if detail: message = f"{message} ({detail})" - self.log.debug( + self.log.warning( "HTTP request error: %s\n%s", message, json.dumps(data, indent=4), From 8366508a11e052c84223a123209bb9eafc344c0e Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Thu, 5 Feb 2026 15:04:46 +0100 Subject: [PATCH 3/6] don't log data if are not available --- ayon_api/utils.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/ayon_api/utils.py b/ayon_api/utils.py index 1c6c1c5cb..2649ab2a3 100644 --- a/ayon_api/utils.py +++ b/ayon_api/utils.py @@ -188,14 +188,20 @@ def raise_for_status(self, message=None): except (AttributeError, KeyError, RequestsJSONDecodeError): pass - detail = data.get("detail") - if detail: - message = f"{message} ({detail})" + submsg = "" + if data: + submsg = json.dumps(data, indent=4) + self.log.warning( - "HTTP request error: %s\n%s", + "HTTP request error: %s%s%s", message, - json.dumps(data, indent=4), + "\n" if submsg else "", + submsg, ) + + detail = data.get("detail") + if detail: + message = f"{message} ({detail})" raise HTTPRequestError(message, exc.response) def __enter__(self, *args, **kwargs): From b6d3d3f2f88a9ffbef5ea52aae14ce38dd80b863 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Fri, 6 Feb 2026 09:49:36 +0100 Subject: [PATCH 4/6] remove try block --- ayon_api/utils.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/ayon_api/utils.py b/ayon_api/utils.py index 2649ab2a3..c7d87d2d7 100644 --- a/ayon_api/utils.py +++ b/ayon_api/utils.py @@ -182,14 +182,8 @@ def raise_for_status(self, message=None): if message is None: message = str(exc) - data = {} - try: - data = self.data or data - except (AttributeError, KeyError, RequestsJSONDecodeError): - pass - submsg = "" - if data: + if self.data: submsg = json.dumps(data, indent=4) self.log.warning( @@ -199,7 +193,7 @@ def raise_for_status(self, message=None): submsg, ) - detail = data.get("detail") + detail = self.data.get("detail") if detail: message = f"{message} ({detail})" raise HTTPRequestError(message, exc.response) From aaae9a3cab8f4468d8eb1a2d32bc232163aaaa21 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Fri, 6 Feb 2026 10:08:20 +0100 Subject: [PATCH 5/6] fix variable usage --- ayon_api/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ayon_api/utils.py b/ayon_api/utils.py index c7d87d2d7..240fc72ac 100644 --- a/ayon_api/utils.py +++ b/ayon_api/utils.py @@ -184,7 +184,7 @@ def raise_for_status(self, message=None): submsg = "" if self.data: - submsg = json.dumps(data, indent=4) + submsg = json.dumps(self.data, indent=4) self.log.warning( "HTTP request error: %s%s%s", From c9378f5404cdac97335f4f9520ecd098bc7be362 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Fri, 6 Feb 2026 10:09:16 +0100 Subject: [PATCH 6/6] move AttributeError to 'data' property --- ayon_api/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ayon_api/utils.py b/ayon_api/utils.py index 240fc72ac..7554c60fa 100644 --- a/ayon_api/utils.py +++ b/ayon_api/utils.py @@ -137,7 +137,7 @@ def data(self): if self._data is None: try: self._data = self.orig_response.json() - except RequestsJSONDecodeError: + except (AttributeError, RequestsJSONDecodeError): self._data = {} return self._data