From ae05b138a6a90d2695f955ba8f9dc1bd44090bfb Mon Sep 17 00:00:00 2001 From: Krista Pratico Date: Mon, 2 May 2022 12:37:38 -0700 Subject: [PATCH 1/2] try fix for 429 --- .../azure/ai/textanalytics/_base_client.py | 1 + .../azure/ai/textanalytics/_policies.py | 22 +++++++++---------- .../textanalytics/aio/_base_client_async.py | 1 + 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_base_client.py b/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_base_client.py index ee6c6d3c0ffa..da878fc5928a 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_base_client.py +++ b/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_base_client.py @@ -70,6 +70,7 @@ def __init__( "$top", "$skip", "opinionMining", + "api-version" } ) try: diff --git a/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_policies.py b/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_policies.py index 1d3ee9d1f0b7..3c5a00d70fc2 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_policies.py +++ b/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_policies.py @@ -3,7 +3,7 @@ # Licensed under the MIT License. # ------------------------------------ -from azure.core.pipeline.policies import ContentDecodePolicy +import json from azure.core.pipeline.policies import SansIOHTTPPolicy from ._models import TextDocumentBatchStatistics from ._lro import _FINISHED @@ -25,21 +25,19 @@ def on_response(self, request, response): # determine LRO based off of initial response. If 202, we say it's an LRO self._is_lro = response.http_response.status_code == 202 if self._response_callback: - data = ContentDecodePolicy.deserialize_from_http_generics( - response.http_response - ) - if self._is_lro and (not data or data.get("status") not in _FINISHED): + data = json.loads(response.http_response.text()) + if self._is_lro and (not data or data.get("status", "").lower() not in _FINISHED): + return + if response.http_response.status_code == 429: return if data: inner = data.get("results", data) # language API compat statistics = inner.get("statistics", None) model_version = inner.get("modelVersion", None) - - if statistics or model_version: - batch_statistics = TextDocumentBatchStatistics._from_generated( # pylint: disable=protected-access - statistics - ) - response.statistics = batch_statistics - response.model_version = model_version + batch_statistics = TextDocumentBatchStatistics._from_generated( # pylint: disable=protected-access + statistics + ) + response.statistics = batch_statistics + response.model_version = model_version response.raw_response = data self._response_callback(response) diff --git a/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/aio/_base_client_async.py b/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/aio/_base_client_async.py index 9fb4ea73df88..de1d78136bda 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/aio/_base_client_async.py +++ b/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/aio/_base_client_async.py @@ -57,6 +57,7 @@ def __init__( "$top", "$skip", "opinionMining", + "api-version" } ) try: From 15f17ac04d9c8b28d89cbbdd01e061cbd6382358 Mon Sep 17 00:00:00 2001 From: Krista Pratico Date: Mon, 2 May 2022 13:13:07 -0700 Subject: [PATCH 2/2] revert --- .../azure/ai/textanalytics/_policies.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_policies.py b/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_policies.py index 3c5a00d70fc2..04e1c1efa9a6 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_policies.py +++ b/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_policies.py @@ -3,7 +3,7 @@ # Licensed under the MIT License. # ------------------------------------ -import json +from azure.core.pipeline.policies import ContentDecodePolicy from azure.core.pipeline.policies import SansIOHTTPPolicy from ._models import TextDocumentBatchStatistics from ._lro import _FINISHED @@ -25,7 +25,9 @@ def on_response(self, request, response): # determine LRO based off of initial response. If 202, we say it's an LRO self._is_lro = response.http_response.status_code == 202 if self._response_callback: - data = json.loads(response.http_response.text()) + data = ContentDecodePolicy.deserialize_from_http_generics( + response.http_response + ) if self._is_lro and (not data or data.get("status", "").lower() not in _FINISHED): return if response.http_response.status_code == 429: