From 0ebd0d6eae39729fda4f21825a70dc4218525420 Mon Sep 17 00:00:00 2001 From: iscai-msft Date: Thu, 30 Apr 2020 14:38:59 -0400 Subject: [PATCH 01/11] throwing http response error if too many documents --- .../ai/textanalytics/_response_handlers.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_response_handlers.py b/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_response_handlers.py index f14e24ad6b58..f0542de2be4d 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_response_handlers.py +++ b/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_response_handlers.py @@ -10,6 +10,7 @@ ClientAuthenticationError, ODataV4Format ) +from azure.core.pipeline.transport import HttpResponse from ._models import ( RecognizeEntitiesResult, CategorizedEntity, @@ -59,8 +60,25 @@ def order_results(response, combined): def prepare_result(func): + def _deal_with_too_many_documents(response, obj): + # special case for now if there are too many documents in the request + # they may change id to empty string, but currently it is "All" + too_many_documents_errors = [ + error for error in obj.errors + if error.id == "All" and error.error.innererror.code == "InvalidDocumentBatch" + ] + if too_many_documents_errors: + too_many_documents_error = too_many_documents_errors[0] + response.status_code = 400 + response.reason = "Bad Request" + raise HttpResponseError( + message="({}) {}".format(too_many_documents_error.error.innererror.code, too_many_documents_error.error.innererror.message), + response=response + ) + def wrapper(response, obj, response_headers): # pylint: disable=unused-argument if obj.errors: + _deal_with_too_many_documents(response.http_response, obj) combined = obj.documents + obj.errors results = order_results(response, combined) else: From 7e4362865c345d6753cbc5633d886314127d32f5 Mon Sep 17 00:00:00 2001 From: iscai-msft Date: Thu, 30 Apr 2020 14:39:06 -0400 Subject: [PATCH 02/11] added tests --- ...nize_entities.test_too_many_documents.yaml | 49 +++++++++++++++++++ ...ntities_async.test_too_many_documents.yaml | 38 ++++++++++++++ ...nked_entities.test_too_many_documents.yaml | 49 +++++++++++++++++++ ...ntities_async.test_too_many_documents.yaml | 38 ++++++++++++++ .../tests/test_recognize_entities.py | 8 +++ .../tests/test_recognize_entities_async.py | 8 +++ .../tests/test_recognize_linked_entities.py | 8 +++ .../test_recognize_linked_entities_async.py | 8 +++ 8 files changed, 206 insertions(+) create mode 100644 sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_recognize_entities.test_too_many_documents.yaml create mode 100644 sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_recognize_entities_async.test_too_many_documents.yaml create mode 100644 sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_recognize_linked_entities.test_too_many_documents.yaml create mode 100644 sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_recognize_linked_entities_async.test_too_many_documents.yaml diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_recognize_entities.test_too_many_documents.yaml b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_recognize_entities.test_too_many_documents.yaml new file mode 100644 index 000000000000..0e6ea826744d --- /dev/null +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_recognize_entities.test_too_many_documents.yaml @@ -0,0 +1,49 @@ +interactions: +- request: + body: '{"documents": [{"id": "0", "text": "One", "language": "en"}, {"id": "1", + "text": "Two", "language": "en"}, {"id": "2", "text": "Three", "language": "en"}, + {"id": "3", "text": "Four", "language": "en"}, {"id": "4", "text": "Five", "language": + "en"}, {"id": "5", "text": "Six", "language": "en"}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '295' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-textanalytics/1.0.0b5 Python/3.7.7 (Darwin-17.7.0-x86_64-i386-64bit) + Python/3.7.7 (Darwin-17.7.0-x86_64-i386-64bit) + method: POST + uri: https://westus2.ppe.cognitiveservices.azure.com/text/analytics/v3.0/entities/recognition/general?showStats=false + response: + body: + string: '{"documents":[{"id":"0","entities":[{"text":"One","category":"Quantity","subcategory":"Number","offset":0,"length":3,"confidenceScore":0.8}],"warnings":[]},{"id":"1","entities":[{"text":"Two","category":"Quantity","subcategory":"Number","offset":0,"length":3,"confidenceScore":0.8}],"warnings":[]},{"id":"2","entities":[{"text":"Three","category":"Quantity","subcategory":"Number","offset":0,"length":5,"confidenceScore":0.8}],"warnings":[]},{"id":"3","entities":[{"text":"Four","category":"Quantity","subcategory":"Number","offset":0,"length":4,"confidenceScore":0.8}],"warnings":[]},{"id":"4","entities":[{"text":"Five","category":"Quantity","subcategory":"Number","offset":0,"length":4,"confidenceScore":0.8}],"warnings":[]},{"id":"5","entities":[{"text":"Six","category":"Quantity","subcategory":"Number","offset":0,"length":3,"confidenceScore":0.8}],"warnings":[]}],"errors":[{"id":"All","error":{"code":"InvalidArgument","message":"The + request contains a warning.","innererror":{"code":"InvalidDocumentBatch","message":"The + number of documents in the request have exceeded the data limitations. See + https://aka.ms/text-analytics-data-limits for additional information"}}}],"modelVersion":"2020-04-01"}' + headers: + apim-request-id: + - 3f938077-141a-48c0-a8dc-45158ca76ca6 + content-type: + - application/json; charset=utf-8 + csp-billing-usage: + - CognitiveServices.TextAnalytics.BatchScoring=6 + date: + - Thu, 30 Apr 2020 18:38:28 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '87' + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_recognize_entities_async.test_too_many_documents.yaml b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_recognize_entities_async.test_too_many_documents.yaml new file mode 100644 index 000000000000..7a270e0b4e7d --- /dev/null +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_recognize_entities_async.test_too_many_documents.yaml @@ -0,0 +1,38 @@ +interactions: +- request: + body: '{"documents": [{"id": "0", "text": "One", "language": "en"}, {"id": "1", + "text": "Two", "language": "en"}, {"id": "2", "text": "Three", "language": "en"}, + {"id": "3", "text": "Four", "language": "en"}, {"id": "4", "text": "Five", "language": + "en"}, {"id": "5", "text": "Six", "language": "en"}]}' + headers: + Accept: + - application/json + Content-Length: + - '295' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-textanalytics/1.0.0b5 Python/3.7.7 (Darwin-17.7.0-x86_64-i386-64bit) + Python/3.7.7 (Darwin-17.7.0-x86_64-i386-64bit) + method: POST + uri: https://westus2.ppe.cognitiveservices.azure.com/text/analytics/v3.0/entities/recognition/general?showStats=false + response: + body: + string: '{"documents":[{"id":"0","entities":[{"text":"One","category":"Quantity","subcategory":"Number","offset":0,"length":3,"confidenceScore":0.8}],"warnings":[]},{"id":"1","entities":[{"text":"Two","category":"Quantity","subcategory":"Number","offset":0,"length":3,"confidenceScore":0.8}],"warnings":[]},{"id":"2","entities":[{"text":"Three","category":"Quantity","subcategory":"Number","offset":0,"length":5,"confidenceScore":0.8}],"warnings":[]},{"id":"3","entities":[{"text":"Four","category":"Quantity","subcategory":"Number","offset":0,"length":4,"confidenceScore":0.8}],"warnings":[]},{"id":"4","entities":[{"text":"Five","category":"Quantity","subcategory":"Number","offset":0,"length":4,"confidenceScore":0.8}],"warnings":[]},{"id":"5","entities":[{"text":"Six","category":"Quantity","subcategory":"Number","offset":0,"length":3,"confidenceScore":0.8}],"warnings":[]}],"errors":[{"id":"All","error":{"code":"InvalidArgument","message":"The + request contains a warning.","innererror":{"code":"InvalidDocumentBatch","message":"The + number of documents in the request have exceeded the data limitations. See + https://aka.ms/text-analytics-data-limits for additional information"}}}],"modelVersion":"2020-04-01"}' + headers: + apim-request-id: 1dd2fff9-8681-43db-a4a2-550d2ce86329 + content-type: application/json; charset=utf-8 + csp-billing-usage: CognitiveServices.TextAnalytics.BatchScoring=6 + date: Thu, 30 Apr 2020 18:38:29 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '74' + status: + code: 200 + message: OK + url: https://westus2.ppe.cognitiveservices.azure.com/text/analytics/v3.0/entities/recognition/general?showStats=false +version: 1 diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_recognize_linked_entities.test_too_many_documents.yaml b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_recognize_linked_entities.test_too_many_documents.yaml new file mode 100644 index 000000000000..e3a70705bef2 --- /dev/null +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_recognize_linked_entities.test_too_many_documents.yaml @@ -0,0 +1,49 @@ +interactions: +- request: + body: '{"documents": [{"id": "0", "text": "One", "language": "en"}, {"id": "1", + "text": "Two", "language": "en"}, {"id": "2", "text": "Three", "language": "en"}, + {"id": "3", "text": "Four", "language": "en"}, {"id": "4", "text": "Five", "language": + "en"}, {"id": "5", "text": "Six", "language": "en"}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '295' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-textanalytics/1.0.0b5 Python/3.7.7 (Darwin-17.7.0-x86_64-i386-64bit) + Python/3.7.7 (Darwin-17.7.0-x86_64-i386-64bit) + method: POST + uri: https://westus2.ppe.cognitiveservices.azure.com/text/analytics/v3.0/entities/linking?showStats=false + response: + body: + string: '{"documents":[{"id":"0","entities":[],"warnings":[]},{"id":"1","entities":[],"warnings":[]},{"id":"2","entities":[],"warnings":[]},{"id":"3","entities":[],"warnings":[]},{"id":"4","entities":[],"warnings":[]},{"id":"5","entities":[],"warnings":[]}],"errors":[{"id":"All","error":{"code":"InvalidArgument","message":"The + request contains a warning.","innererror":{"code":"InvalidDocumentBatch","message":"The + number of documents in the request have exceeded the data limitations. See + https://aka.ms/text-analytics-data-limits for additional information"}}}],"modelVersion":"2020-02-01"}' + headers: + apim-request-id: + - d66bc012-b3ed-44be-80d2-d837abc671dd + content-type: + - application/json; charset=utf-8 + csp-billing-usage: + - CognitiveServices.TextAnalytics.BatchScoring=6 + date: + - Thu, 30 Apr 2020 18:38:29 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + transfer-encoding: + - chunked + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '21' + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_recognize_linked_entities_async.test_too_many_documents.yaml b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_recognize_linked_entities_async.test_too_many_documents.yaml new file mode 100644 index 000000000000..27dc6aae8521 --- /dev/null +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_recognize_linked_entities_async.test_too_many_documents.yaml @@ -0,0 +1,38 @@ +interactions: +- request: + body: '{"documents": [{"id": "0", "text": "One", "language": "en"}, {"id": "1", + "text": "Two", "language": "en"}, {"id": "2", "text": "Three", "language": "en"}, + {"id": "3", "text": "Four", "language": "en"}, {"id": "4", "text": "Five", "language": + "en"}, {"id": "5", "text": "Six", "language": "en"}]}' + headers: + Accept: + - application/json + Content-Length: + - '295' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-textanalytics/1.0.0b5 Python/3.7.7 (Darwin-17.7.0-x86_64-i386-64bit) + Python/3.7.7 (Darwin-17.7.0-x86_64-i386-64bit) + method: POST + uri: https://westus2.ppe.cognitiveservices.azure.com/text/analytics/v3.0/entities/linking?showStats=false + response: + body: + string: '{"documents":[{"id":"0","entities":[],"warnings":[]},{"id":"1","entities":[],"warnings":[]},{"id":"2","entities":[],"warnings":[]},{"id":"3","entities":[],"warnings":[]},{"id":"4","entities":[],"warnings":[]},{"id":"5","entities":[],"warnings":[]}],"errors":[{"id":"All","error":{"code":"InvalidArgument","message":"The + request contains a warning.","innererror":{"code":"InvalidDocumentBatch","message":"The + number of documents in the request have exceeded the data limitations. See + https://aka.ms/text-analytics-data-limits for additional information"}}}],"modelVersion":"2020-02-01"}' + headers: + apim-request-id: da8df0dd-8966-4c46-808e-7850f5efd6ad + content-type: application/json; charset=utf-8 + csp-billing-usage: CognitiveServices.TextAnalytics.BatchScoring=6 + date: Thu, 30 Apr 2020 18:38:29 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + transfer-encoding: chunked + x-content-type-options: nosniff + x-envoy-upstream-service-time: '32' + status: + code: 200 + message: OK + url: https://westus2.ppe.cognitiveservices.azure.com/text/analytics/v3.0/entities/linking?showStats=false +version: 1 diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/test_recognize_entities.py b/sdk/textanalytics/azure-ai-textanalytics/tests/test_recognize_entities.py index 0cb514de1f00..34b0fec19cc6 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/tests/test_recognize_entities.py +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/test_recognize_entities.py @@ -105,6 +105,14 @@ def test_input_with_all_errors(self, client): self.assertTrue(response[1].is_error) self.assertTrue(response[2].is_error) + @GlobalTextAnalyticsAccountPreparer() + @TextAnalyticsClientPreparer() + def test_too_many_documents(self, client): + docs = ["One", "Two", "Three", "Four", "Five", "Six"] + + with self.assertRaises(HttpResponseError): + response = client.recognize_entities(docs) + @GlobalTextAnalyticsAccountPreparer() @TextAnalyticsClientPreparer(client_kwargs={"text_analytics_account_key": ""}) def test_empty_credential_class(self, client): diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/test_recognize_entities_async.py b/sdk/textanalytics/azure-ai-textanalytics/tests/test_recognize_entities_async.py index 6a0982defc89..3e26d93f00ad 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/tests/test_recognize_entities_async.py +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/test_recognize_entities_async.py @@ -121,6 +121,14 @@ async def test_input_with_all_errors(self, client): self.assertTrue(response[1].is_error) self.assertTrue(response[2].is_error) + @GlobalTextAnalyticsAccountPreparer() + @TextAnalyticsClientPreparer() + async def test_too_many_documents(self, client): + docs = ["One", "Two", "Three", "Four", "Five", "Six"] + + with self.assertRaises(HttpResponseError): + response = await client.recognize_entities(docs) + @GlobalTextAnalyticsAccountPreparer() @TextAnalyticsClientPreparer(client_kwargs={"text_analytics_account_key": ""}) async def test_empty_credential_class(self, client): diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/test_recognize_linked_entities.py b/sdk/textanalytics/azure-ai-textanalytics/tests/test_recognize_linked_entities.py index bfeb87b87762..e7aa166465b4 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/tests/test_recognize_linked_entities.py +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/test_recognize_linked_entities.py @@ -101,6 +101,14 @@ def test_input_with_all_errors(self, client): self.assertTrue(response[0].is_error) self.assertTrue(response[1].is_error) + @GlobalTextAnalyticsAccountPreparer() + @TextAnalyticsClientPreparer() + def test_too_many_documents(self, client): + docs = ["One", "Two", "Three", "Four", "Five", "Six"] + + with self.assertRaises(HttpResponseError): + response = client.recognize_linked_entities(docs) + @GlobalTextAnalyticsAccountPreparer() @TextAnalyticsClientPreparer(client_kwargs={"text_analytics_account_key": ""}) def test_empty_credential_class(self, client): diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/test_recognize_linked_entities_async.py b/sdk/textanalytics/azure-ai-textanalytics/tests/test_recognize_linked_entities_async.py index e6f046426c98..001d14c6774b 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/tests/test_recognize_linked_entities_async.py +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/test_recognize_linked_entities_async.py @@ -122,6 +122,14 @@ async def test_input_with_all_errors(self, client): self.assertTrue(response[0].is_error) self.assertTrue(response[1].is_error) + @GlobalTextAnalyticsAccountPreparer() + @TextAnalyticsClientPreparer() + async def test_too_many_documents(self, client): + docs = ["One", "Two", "Three", "Four", "Five", "Six"] + + with self.assertRaises(HttpResponseError): + response = await client.recognize_linked_entities(docs) + @GlobalTextAnalyticsAccountPreparer() @TextAnalyticsClientPreparer(client_kwargs={"text_analytics_account_key": ""}) async def test_empty_credential_class(self, client): From 5b694352cd68048c59ec67d112e4e0530838d017 Mon Sep 17 00:00:00 2001 From: iscai-msft Date: Thu, 30 Apr 2020 14:41:15 -0400 Subject: [PATCH 03/11] fixed pylint --- .../azure/ai/textanalytics/_response_handlers.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_response_handlers.py b/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_response_handlers.py index f0542de2be4d..9c2a7a4de0ec 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_response_handlers.py +++ b/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_response_handlers.py @@ -10,7 +10,6 @@ ClientAuthenticationError, ODataV4Format ) -from azure.core.pipeline.transport import HttpResponse from ._models import ( RecognizeEntitiesResult, CategorizedEntity, @@ -72,7 +71,9 @@ def _deal_with_too_many_documents(response, obj): response.status_code = 400 response.reason = "Bad Request" raise HttpResponseError( - message="({}) {}".format(too_many_documents_error.error.innererror.code, too_many_documents_error.error.innererror.message), + message="({}) {}".format( + too_many_documents_error.error.innererror.code, too_many_documents_error.error.innererror.message + ), response=response ) From f041285e67156d670472899462773d599602791b Mon Sep 17 00:00:00 2001 From: iscai-msft Date: Thu, 30 Apr 2020 14:54:58 -0400 Subject: [PATCH 04/11] added xfail tests to other endpoints for when the service enables this error on their endpoints --- .../tests/test_analyze_sentiment.py | 10 ++++++++++ .../tests/test_analyze_sentiment_async.py | 10 ++++++++++ .../tests/test_detect_language.py | 10 ++++++++++ .../tests/test_detect_language_async.py | 10 ++++++++++ .../tests/test_extract_key_phrases.py | 10 ++++++++++ .../tests/test_extract_key_phrases_async.py | 10 ++++++++++ 6 files changed, 60 insertions(+) diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/test_analyze_sentiment.py b/sdk/textanalytics/azure-ai-textanalytics/tests/test_analyze_sentiment.py index 1813fc591e68..5da5dc28275e 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/tests/test_analyze_sentiment.py +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/test_analyze_sentiment.py @@ -123,6 +123,16 @@ def test_input_with_all_errors(self, client): self.assertTrue(response[1].is_error) self.assertTrue(response[2].is_error) + @GlobalTextAnalyticsAccountPreparer() + @TextAnalyticsClientPreparer() + @pytest.mark.xfail + def test_too_many_documents(self, client): + # marking as xfail since the service hasn't added this error to this endpoint + docs = ["One", "Two", "Three", "Four", "Five", "Six"] + + with self.assertRaises(HttpResponseError): + response = client.analyze_sentiment(docs) + @GlobalTextAnalyticsAccountPreparer() @TextAnalyticsClientPreparer() def test_document_warnings(self, client): diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/test_analyze_sentiment_async.py b/sdk/textanalytics/azure-ai-textanalytics/tests/test_analyze_sentiment_async.py index 97447f1f9601..01955544a1f2 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/tests/test_analyze_sentiment_async.py +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/test_analyze_sentiment_async.py @@ -139,6 +139,16 @@ async def test_input_with_all_errors(self, client): self.assertTrue(response[1].is_error) self.assertTrue(response[2].is_error) + @GlobalTextAnalyticsAccountPreparer() + @TextAnalyticsClientPreparer() + @pytest.mark.xfail + async def test_too_many_documents(self, client): + # marking as xfail since the service hasn't added this error to this endpoint + docs = ["One", "Two", "Three", "Four", "Five", "Six"] + + with self.assertRaises(HttpResponseError): + response = await client.analyze_sentiment(docs) + @GlobalTextAnalyticsAccountPreparer() @TextAnalyticsClientPreparer(client_kwargs={"text_analytics_account_key": ""}) async def test_empty_credential_class(self, client): diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/test_detect_language.py b/sdk/textanalytics/azure-ai-textanalytics/tests/test_detect_language.py index e9ee39ebcc5a..7b38c8a713d4 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/tests/test_detect_language.py +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/test_detect_language.py @@ -129,6 +129,16 @@ def test_input_with_all_errors(self, client): for resp in response: self.assertTrue(resp.is_error) + @GlobalTextAnalyticsAccountPreparer() + @TextAnalyticsClientPreparer() + @pytest.mark.xfail + def test_too_many_documents(self, client): + # marking as xfail since the service hasn't added this error to this endpoint + docs = ["One", "Two", "Three", "Four", "Five", "Six"] + + with self.assertRaises(HttpResponseError): + response = client.detect_language(docs) + @GlobalTextAnalyticsAccountPreparer() @TextAnalyticsClientPreparer(client_kwargs={"text_analytics_account_key": ""}) def test_empty_credential_class(self, client): diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/test_detect_language_async.py b/sdk/textanalytics/azure-ai-textanalytics/tests/test_detect_language_async.py index b022c3805395..f5d4e2fde35b 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/tests/test_detect_language_async.py +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/test_detect_language_async.py @@ -142,6 +142,16 @@ async def test_input_with_all_errors(self, client): for resp in response: self.assertTrue(resp.is_error) + @GlobalTextAnalyticsAccountPreparer() + @TextAnalyticsClientPreparer() + @pytest.mark.xfail + async def test_too_many_documents(self, client): + # marking as xfail since the service hasn't added this error to this endpoint + docs = ["One", "Two", "Three", "Four", "Five", "Six"] + + with self.assertRaises(HttpResponseError): + response = await client.detect_language(docs) + @GlobalTextAnalyticsAccountPreparer() @TextAnalyticsClientPreparer(client_kwargs={"text_analytics_account_key": ""}) async def test_empty_credential_class(self, client): diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/test_extract_key_phrases.py b/sdk/textanalytics/azure-ai-textanalytics/tests/test_extract_key_phrases.py index e7921b6b745b..b12c3b75b213 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/tests/test_extract_key_phrases.py +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/test_extract_key_phrases.py @@ -91,6 +91,16 @@ def test_input_with_all_errors(self, client): self.assertTrue(response[0].is_error) self.assertTrue(response[1].is_error) + @GlobalTextAnalyticsAccountPreparer() + @TextAnalyticsClientPreparer() + @pytest.mark.xfail + def test_too_many_documents(self, client): + # marking as xfail since the service hasn't added this error to this endpoint + docs = ["One", "Two", "Three", "Four", "Five", "Six"] + + with self.assertRaises(HttpResponseError): + response = client.extract_key_phrases(docs) + @GlobalTextAnalyticsAccountPreparer() @TextAnalyticsClientPreparer(client_kwargs={"text_analytics_account_key": ""}) def test_empty_credential_class(self, client): diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/test_extract_key_phrases_async.py b/sdk/textanalytics/azure-ai-textanalytics/tests/test_extract_key_phrases_async.py index 6043ccaf7bad..9abd035df910 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/tests/test_extract_key_phrases_async.py +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/test_extract_key_phrases_async.py @@ -106,6 +106,16 @@ async def test_input_with_all_errors(self, client): self.assertTrue(response[0].is_error) self.assertTrue(response[1].is_error) + @GlobalTextAnalyticsAccountPreparer() + @TextAnalyticsClientPreparer() + @pytest.mark.xfail + async def test_too_many_documents(self, client): + # marking as xfail since the service hasn't added this error to this endpoint + docs = ["One", "Two", "Three", "Four", "Five", "Six"] + + with self.assertRaises(HttpResponseError): + response = await client.extract_key_phrases(docs) + @GlobalTextAnalyticsAccountPreparer() @TextAnalyticsClientPreparer(client_kwargs={"text_analytics_account_key": ""}) async def test_empty_credential_class(self, client): From 1efb17b36db00ad67a41d4cd3e4e3182d87cc272 Mon Sep 17 00:00:00 2001 From: iscai-msft Date: Fri, 1 May 2020 12:12:49 -0400 Subject: [PATCH 05/11] checking to see if innererror exists, if not back off to error --- .../azure/ai/textanalytics/_response_handlers.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_response_handlers.py b/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_response_handlers.py index 9c2a7a4de0ec..036b9872d27d 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_response_handlers.py +++ b/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_response_handlers.py @@ -70,10 +70,14 @@ def _deal_with_too_many_documents(response, obj): too_many_documents_error = too_many_documents_errors[0] response.status_code = 400 response.reason = "Bad Request" + if hasattr(too_many_documents_error.error, 'innererror') and too_many_documents_error.error.innererror: + code = too_many_documents_error.error.innererror.code + message = too_many_documents_error.error.innererror.message + else: + code = too_many_documents_error.error.code + message = too_many_documents_error.error.message raise HttpResponseError( - message="({}) {}".format( - too_many_documents_error.error.innererror.code, too_many_documents_error.error.innererror.message - ), + message="({}) {}".format(code, message), response=response ) From 0ba7cf5427893fe7669d5a674a5fb617ac9f76ec Mon Sep 17 00:00:00 2001 From: iscai-msft Date: Fri, 1 May 2020 12:13:06 -0400 Subject: [PATCH 06/11] new recordings --- ...yze_sentiment.test_too_many_documents.yaml | 46 +++++++++++++++++++ ...ntiment_async.test_too_many_documents.yaml | 36 +++++++++++++++ ...tect_language.test_too_many_documents.yaml | 46 +++++++++++++++++++ ...anguage_async.test_too_many_documents.yaml | 36 +++++++++++++++ ...t_key_phrases.test_too_many_documents.yaml | 46 +++++++++++++++++++ ...phrases_async.test_too_many_documents.yaml | 36 +++++++++++++++ 6 files changed, 246 insertions(+) create mode 100644 sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_analyze_sentiment.test_too_many_documents.yaml create mode 100644 sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_analyze_sentiment_async.test_too_many_documents.yaml create mode 100644 sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_detect_language.test_too_many_documents.yaml create mode 100644 sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_detect_language_async.test_too_many_documents.yaml create mode 100644 sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_extract_key_phrases.test_too_many_documents.yaml create mode 100644 sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_extract_key_phrases_async.test_too_many_documents.yaml diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_analyze_sentiment.test_too_many_documents.yaml b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_analyze_sentiment.test_too_many_documents.yaml new file mode 100644 index 000000000000..df38a6f2522a --- /dev/null +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_analyze_sentiment.test_too_many_documents.yaml @@ -0,0 +1,46 @@ +interactions: +- request: + body: '{"documents": [{"id": "0", "text": "One", "language": "en"}, {"id": "1", + "text": "Two", "language": "en"}, {"id": "2", "text": "Three", "language": "en"}, + {"id": "3", "text": "Four", "language": "en"}, {"id": "4", "text": "Five", "language": + "en"}, {"id": "5", "text": "Six", "language": "en"}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '295' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-textanalytics/1.0.0b5 Python/3.7.7 (Darwin-17.7.0-x86_64-i386-64bit) + Python/3.7.7 (Darwin-17.7.0-x86_64-i386-64bit) + method: POST + uri: https://westus2.ppe.cognitiveservices.azure.com/text/analytics/v3.0/sentiment?showStats=false + response: + body: + string: '{"error":{"code":"401","message": "Access denied due to invalid subscription + key or wrong API endpoint. Make sure to provide a valid key for an active + subscription and use a correct regional API endpoint for your resource."}}' + headers: + apim-request-id: + - bf46ec9a-cf1f-41ac-bd51-d054d070533d + content-length: + - '225' + content-type: + - application/json + date: + - Fri, 01 May 2020 16:08:26 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + www-authenticate: + - AzureApiManagementKey realm="https://westus2.ppe.cognitiveservices.azure.com/text/analytics",name="Ocp-Apim-Subscription-Key",type="header" + x-content-type-options: + - nosniff + status: + code: 401 + message: Access Denied +version: 1 diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_analyze_sentiment_async.test_too_many_documents.yaml b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_analyze_sentiment_async.test_too_many_documents.yaml new file mode 100644 index 000000000000..6034aa1224db --- /dev/null +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_analyze_sentiment_async.test_too_many_documents.yaml @@ -0,0 +1,36 @@ +interactions: +- request: + body: '{"documents": [{"id": "0", "text": "One", "language": "en"}, {"id": "1", + "text": "Two", "language": "en"}, {"id": "2", "text": "Three", "language": "en"}, + {"id": "3", "text": "Four", "language": "en"}, {"id": "4", "text": "Five", "language": + "en"}, {"id": "5", "text": "Six", "language": "en"}]}' + headers: + Accept: + - application/json + Content-Length: + - '295' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-textanalytics/1.0.0b5 Python/3.7.7 (Darwin-17.7.0-x86_64-i386-64bit) + Python/3.7.7 (Darwin-17.7.0-x86_64-i386-64bit) + method: POST + uri: https://westus2.ppe.cognitiveservices.azure.com/text/analytics/v3.0/sentiment?showStats=false + response: + body: + string: '{"error":{"code":"401","message": "Access denied due to invalid subscription + key or wrong API endpoint. Make sure to provide a valid key for an active + subscription and use a correct regional API endpoint for your resource."}}' + headers: + apim-request-id: 68c140f8-c5a1-4715-b5ce-48264492a66c + content-length: '225' + content-type: application/json + date: Fri, 01 May 2020 16:08:27 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + www-authenticate: AzureApiManagementKey realm="https://westus2.ppe.cognitiveservices.azure.com/text/analytics",name="Ocp-Apim-Subscription-Key",type="header" + x-content-type-options: nosniff + status: + code: 401 + message: Access Denied + url: https://westus2.ppe.cognitiveservices.azure.com/text/analytics/v3.0/sentiment?showStats=false +version: 1 diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_detect_language.test_too_many_documents.yaml b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_detect_language.test_too_many_documents.yaml new file mode 100644 index 000000000000..ea6d0104c36f --- /dev/null +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_detect_language.test_too_many_documents.yaml @@ -0,0 +1,46 @@ +interactions: +- request: + body: '{"documents": [{"id": "0", "text": "One", "countryHint": "US"}, {"id": + "1", "text": "Two", "countryHint": "US"}, {"id": "2", "text": "Three", "countryHint": + "US"}, {"id": "3", "text": "Four", "countryHint": "US"}, {"id": "4", "text": + "Five", "countryHint": "US"}, {"id": "5", "text": "Six", "countryHint": "US"}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '313' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-textanalytics/1.0.0b5 Python/3.7.7 (Darwin-17.7.0-x86_64-i386-64bit) + Python/3.7.7 (Darwin-17.7.0-x86_64-i386-64bit) + method: POST + uri: https://westus2.ppe.cognitiveservices.azure.com/text/analytics/v3.0/languages?showStats=false + response: + body: + string: '{"error":{"code":"401","message": "Access denied due to invalid subscription + key or wrong API endpoint. Make sure to provide a valid key for an active + subscription and use a correct regional API endpoint for your resource."}}' + headers: + apim-request-id: + - fa964233-6518-4347-ac78-2e5496fff910 + content-length: + - '225' + content-type: + - application/json + date: + - Fri, 01 May 2020 16:08:28 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + www-authenticate: + - AzureApiManagementKey realm="https://westus2.ppe.cognitiveservices.azure.com/text/analytics",name="Ocp-Apim-Subscription-Key",type="header" + x-content-type-options: + - nosniff + status: + code: 401 + message: Access Denied +version: 1 diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_detect_language_async.test_too_many_documents.yaml b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_detect_language_async.test_too_many_documents.yaml new file mode 100644 index 000000000000..53a924dcfee8 --- /dev/null +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_detect_language_async.test_too_many_documents.yaml @@ -0,0 +1,36 @@ +interactions: +- request: + body: '{"documents": [{"id": "0", "text": "One", "countryHint": "US"}, {"id": + "1", "text": "Two", "countryHint": "US"}, {"id": "2", "text": "Three", "countryHint": + "US"}, {"id": "3", "text": "Four", "countryHint": "US"}, {"id": "4", "text": + "Five", "countryHint": "US"}, {"id": "5", "text": "Six", "countryHint": "US"}]}' + headers: + Accept: + - application/json + Content-Length: + - '313' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-textanalytics/1.0.0b5 Python/3.7.7 (Darwin-17.7.0-x86_64-i386-64bit) + Python/3.7.7 (Darwin-17.7.0-x86_64-i386-64bit) + method: POST + uri: https://westus2.ppe.cognitiveservices.azure.com/text/analytics/v3.0/languages?showStats=false + response: + body: + string: '{"error":{"code":"401","message": "Access denied due to invalid subscription + key or wrong API endpoint. Make sure to provide a valid key for an active + subscription and use a correct regional API endpoint for your resource."}}' + headers: + apim-request-id: 5d1d9707-ed31-43a4-b497-c986c879332b + content-length: '225' + content-type: application/json + date: Fri, 01 May 2020 16:08:30 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + www-authenticate: AzureApiManagementKey realm="https://westus2.ppe.cognitiveservices.azure.com/text/analytics",name="Ocp-Apim-Subscription-Key",type="header" + x-content-type-options: nosniff + status: + code: 401 + message: Access Denied + url: https://westus2.ppe.cognitiveservices.azure.com/text/analytics/v3.0/languages?showStats=false +version: 1 diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_extract_key_phrases.test_too_many_documents.yaml b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_extract_key_phrases.test_too_many_documents.yaml new file mode 100644 index 000000000000..1342f8183962 --- /dev/null +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_extract_key_phrases.test_too_many_documents.yaml @@ -0,0 +1,46 @@ +interactions: +- request: + body: '{"documents": [{"id": "0", "text": "One", "language": "en"}, {"id": "1", + "text": "Two", "language": "en"}, {"id": "2", "text": "Three", "language": "en"}, + {"id": "3", "text": "Four", "language": "en"}, {"id": "4", "text": "Five", "language": + "en"}, {"id": "5", "text": "Six", "language": "en"}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '295' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-textanalytics/1.0.0b5 Python/3.7.7 (Darwin-17.7.0-x86_64-i386-64bit) + Python/3.7.7 (Darwin-17.7.0-x86_64-i386-64bit) + method: POST + uri: https://westus2.ppe.cognitiveservices.azure.com/text/analytics/v3.0/keyPhrases?showStats=false + response: + body: + string: '{"error":{"code":"401","message": "Access denied due to invalid subscription + key or wrong API endpoint. Make sure to provide a valid key for an active + subscription and use a correct regional API endpoint for your resource."}}' + headers: + apim-request-id: + - ca6f7eac-c982-4ec8-9173-32d8288d9ddd + content-length: + - '225' + content-type: + - application/json + date: + - Fri, 01 May 2020 16:08:32 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + www-authenticate: + - AzureApiManagementKey realm="https://westus2.ppe.cognitiveservices.azure.com/text/analytics",name="Ocp-Apim-Subscription-Key",type="header" + x-content-type-options: + - nosniff + status: + code: 401 + message: Access Denied +version: 1 diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_extract_key_phrases_async.test_too_many_documents.yaml b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_extract_key_phrases_async.test_too_many_documents.yaml new file mode 100644 index 000000000000..9c466b76f53b --- /dev/null +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_extract_key_phrases_async.test_too_many_documents.yaml @@ -0,0 +1,36 @@ +interactions: +- request: + body: '{"documents": [{"id": "0", "text": "One", "language": "en"}, {"id": "1", + "text": "Two", "language": "en"}, {"id": "2", "text": "Three", "language": "en"}, + {"id": "3", "text": "Four", "language": "en"}, {"id": "4", "text": "Five", "language": + "en"}, {"id": "5", "text": "Six", "language": "en"}]}' + headers: + Accept: + - application/json + Content-Length: + - '295' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-textanalytics/1.0.0b5 Python/3.7.7 (Darwin-17.7.0-x86_64-i386-64bit) + Python/3.7.7 (Darwin-17.7.0-x86_64-i386-64bit) + method: POST + uri: https://westus2.ppe.cognitiveservices.azure.com/text/analytics/v3.0/keyPhrases?showStats=false + response: + body: + string: '{"error":{"code":"401","message": "Access denied due to invalid subscription + key or wrong API endpoint. Make sure to provide a valid key for an active + subscription and use a correct regional API endpoint for your resource."}}' + headers: + apim-request-id: 1eb41936-0c49-4c56-a8b4-4daf46201094 + content-length: '225' + content-type: application/json + date: Fri, 01 May 2020 16:08:33 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + www-authenticate: AzureApiManagementKey realm="https://westus2.ppe.cognitiveservices.azure.com/text/analytics",name="Ocp-Apim-Subscription-Key",type="header" + x-content-type-options: nosniff + status: + code: 401 + message: Access Denied + url: https://westus2.ppe.cognitiveservices.azure.com/text/analytics/v3.0/keyPhrases?showStats=false +version: 1 From 034289ae882e829f797663daf54bcb43986cc023 Mon Sep 17 00:00:00 2001 From: iscai-msft Date: Fri, 1 May 2020 12:24:17 -0400 Subject: [PATCH 07/11] moved check for innererror --- .../azure/ai/textanalytics/_response_handlers.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_response_handlers.py b/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_response_handlers.py index 036b9872d27d..c95c28120ad9 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_response_handlers.py +++ b/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_response_handlers.py @@ -59,23 +59,24 @@ def order_results(response, combined): def prepare_result(func): + def _get_error_code_and_message(error): + if hasattr(error.error, 'innererror') and error.error.innererror: + return error.error.innererror.code, error.error.innererror.message + else: + return error.error.code, error.error.message + def _deal_with_too_many_documents(response, obj): # special case for now if there are too many documents in the request # they may change id to empty string, but currently it is "All" too_many_documents_errors = [ error for error in obj.errors - if error.id == "All" and error.error.innererror.code == "InvalidDocumentBatch" + if error.id == "All" and _get_error_code_and_message(error)[0] == "InvalidDocumentBatch" ] if too_many_documents_errors: too_many_documents_error = too_many_documents_errors[0] response.status_code = 400 response.reason = "Bad Request" - if hasattr(too_many_documents_error.error, 'innererror') and too_many_documents_error.error.innererror: - code = too_many_documents_error.error.innererror.code - message = too_many_documents_error.error.innererror.message - else: - code = too_many_documents_error.error.code - message = too_many_documents_error.error.message + code, message = _get_error_code_and_message(too_many_documents_error) raise HttpResponseError( message="({}) {}".format(code, message), response=response From 01d3d99e2768d2b36f65ffbcf9f80665912b08e3 Mon Sep 17 00:00:00 2001 From: iscai-msft Date: Fri, 1 May 2020 12:24:58 -0400 Subject: [PATCH 08/11] fixed pylint --- .../azure/ai/textanalytics/_response_handlers.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_response_handlers.py b/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_response_handlers.py index c95c28120ad9..7c0fc7aa4b13 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_response_handlers.py +++ b/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_response_handlers.py @@ -62,8 +62,7 @@ def prepare_result(func): def _get_error_code_and_message(error): if hasattr(error.error, 'innererror') and error.error.innererror: return error.error.innererror.code, error.error.innererror.message - else: - return error.error.code, error.error.message + return error.error.code, error.error.message def _deal_with_too_many_documents(response, obj): # special case for now if there are too many documents in the request From 41560130e86784aa34184b67a0286c15c48ece38 Mon Sep 17 00:00:00 2001 From: iscai-msft Date: Fri, 1 May 2020 12:34:40 -0400 Subject: [PATCH 09/11] removed error code check for too many documents error --- .../azure/ai/textanalytics/_response_handlers.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_response_handlers.py b/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_response_handlers.py index 7c0fc7aa4b13..6dbe0942a6ec 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_response_handlers.py +++ b/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_response_handlers.py @@ -68,8 +68,7 @@ def _deal_with_too_many_documents(response, obj): # special case for now if there are too many documents in the request # they may change id to empty string, but currently it is "All" too_many_documents_errors = [ - error for error in obj.errors - if error.id == "All" and _get_error_code_and_message(error)[0] == "InvalidDocumentBatch" + error for error in obj.errors if error.id == "All" ] if too_many_documents_errors: too_many_documents_error = too_many_documents_errors[0] From 006653d43cc9250cf9451296199043b945a8b638 Mon Sep 17 00:00:00 2001 From: iscai-msft Date: Wed, 6 May 2020 13:50:50 -0400 Subject: [PATCH 10/11] switched to checking for id equaling empty string --- .../azure/ai/textanalytics/_response_handlers.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_response_handlers.py b/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_response_handlers.py index 6dbe0942a6ec..0f38ba8b8c6d 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_response_handlers.py +++ b/sdk/textanalytics/azure-ai-textanalytics/azure/ai/textanalytics/_response_handlers.py @@ -66,9 +66,8 @@ def _get_error_code_and_message(error): def _deal_with_too_many_documents(response, obj): # special case for now if there are too many documents in the request - # they may change id to empty string, but currently it is "All" too_many_documents_errors = [ - error for error in obj.errors if error.id == "All" + error for error in obj.errors if error.id == "" ] if too_many_documents_errors: too_many_documents_error = too_many_documents_errors[0] From 1f188e60b3015936d1bf0acd0d46ec7a0be2baa2 Mon Sep 17 00:00:00 2001 From: iscai-msft Date: Wed, 6 May 2020 13:51:04 -0400 Subject: [PATCH 11/11] include check for status code to be 400 in tests --- ...yze_sentiment.test_too_many_documents.yaml | 24 +++++++++---------- ...ntiment_async.test_too_many_documents.yaml | 19 +++++++-------- ...tect_language.test_too_many_documents.yaml | 24 +++++++++---------- ...anguage_async.test_too_many_documents.yaml | 19 +++++++-------- ...t_key_phrases.test_too_many_documents.yaml | 24 +++++++++---------- ...phrases_async.test_too_many_documents.yaml | 19 +++++++-------- ...nize_entities.test_too_many_documents.yaml | 10 ++++---- ...ntities_async.test_too_many_documents.yaml | 10 ++++---- ...nked_entities.test_too_many_documents.yaml | 10 ++++---- ...ntities_async.test_too_many_documents.yaml | 10 ++++---- .../tests/test_analyze_sentiment.py | 6 +++-- .../tests/test_analyze_sentiment_async.py | 6 +++-- .../tests/test_detect_language.py | 6 +++-- .../tests/test_detect_language_async.py | 6 +++-- .../tests/test_extract_key_phrases.py | 6 +++-- .../tests/test_extract_key_phrases_async.py | 6 +++-- .../tests/test_recognize_entities.py | 7 ++++-- .../tests/test_recognize_entities_async.py | 6 +++-- .../tests/test_recognize_linked_entities.py | 6 +++-- .../test_recognize_linked_entities_async.py | 7 ++++-- 20 files changed, 125 insertions(+), 106 deletions(-) diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_analyze_sentiment.test_too_many_documents.yaml b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_analyze_sentiment.test_too_many_documents.yaml index df38a6f2522a..98dcb33619b8 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_analyze_sentiment.test_too_many_documents.yaml +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_analyze_sentiment.test_too_many_documents.yaml @@ -22,25 +22,25 @@ interactions: uri: https://westus2.ppe.cognitiveservices.azure.com/text/analytics/v3.0/sentiment?showStats=false response: body: - string: '{"error":{"code":"401","message": "Access denied due to invalid subscription - key or wrong API endpoint. Make sure to provide a valid key for an active - subscription and use a correct regional API endpoint for your resource."}}' + string: '{"documents":[{"id":"0","sentiment":"neutral","confidenceScores":{"positive":0.06,"neutral":0.9,"negative":0.04},"sentences":[{"sentiment":"neutral","confidenceScores":{"positive":0.06,"neutral":0.9,"negative":0.04},"offset":0,"length":3,"text":"One"}],"warnings":[]},{"id":"1","sentiment":"neutral","confidenceScores":{"positive":0.01,"neutral":0.97,"negative":0.02},"sentences":[{"sentiment":"neutral","confidenceScores":{"positive":0.01,"neutral":0.97,"negative":0.02},"offset":0,"length":3,"text":"Two"}],"warnings":[]},{"id":"2","sentiment":"neutral","confidenceScores":{"positive":0.05,"neutral":0.93,"negative":0.02},"sentences":[{"sentiment":"neutral","confidenceScores":{"positive":0.05,"neutral":0.93,"negative":0.02},"offset":0,"length":5,"text":"Three"}],"warnings":[]},{"id":"3","sentiment":"neutral","confidenceScores":{"positive":0.03,"neutral":0.96,"negative":0.01},"sentences":[{"sentiment":"neutral","confidenceScores":{"positive":0.03,"neutral":0.96,"negative":0.01},"offset":0,"length":4,"text":"Four"}],"warnings":[]},{"id":"4","sentiment":"neutral","confidenceScores":{"positive":0.05,"neutral":0.93,"negative":0.02},"sentences":[{"sentiment":"neutral","confidenceScores":{"positive":0.05,"neutral":0.93,"negative":0.02},"offset":0,"length":4,"text":"Five"}],"warnings":[]},{"id":"5","sentiment":"neutral","confidenceScores":{"positive":0.01,"neutral":0.98,"negative":0.01},"sentences":[{"sentiment":"neutral","confidenceScores":{"positive":0.01,"neutral":0.98,"negative":0.01},"offset":0,"length":3,"text":"Six"}],"warnings":[]}],"errors":[],"modelVersion":"2020-04-01"}' headers: apim-request-id: - - bf46ec9a-cf1f-41ac-bd51-d054d070533d - content-length: - - '225' + - f7829392-4511-4f67-9d87-bf68daefdf14 content-type: - - application/json + - application/json; charset=utf-8 + csp-billing-usage: + - CognitiveServices.TextAnalytics.BatchScoring=6 date: - - Fri, 01 May 2020 16:08:26 GMT + - Wed, 06 May 2020 17:49:55 GMT strict-transport-security: - max-age=31536000; includeSubDomains; preload - www-authenticate: - - AzureApiManagementKey realm="https://westus2.ppe.cognitiveservices.azure.com/text/analytics",name="Ocp-Apim-Subscription-Key",type="header" + transfer-encoding: + - chunked x-content-type-options: - nosniff + x-envoy-upstream-service-time: + - '786' status: - code: 401 - message: Access Denied + code: 200 + message: OK version: 1 diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_analyze_sentiment_async.test_too_many_documents.yaml b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_analyze_sentiment_async.test_too_many_documents.yaml index 6034aa1224db..8a884ee95c20 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_analyze_sentiment_async.test_too_many_documents.yaml +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_analyze_sentiment_async.test_too_many_documents.yaml @@ -18,19 +18,18 @@ interactions: uri: https://westus2.ppe.cognitiveservices.azure.com/text/analytics/v3.0/sentiment?showStats=false response: body: - string: '{"error":{"code":"401","message": "Access denied due to invalid subscription - key or wrong API endpoint. Make sure to provide a valid key for an active - subscription and use a correct regional API endpoint for your resource."}}' + string: '{"documents":[{"id":"0","sentiment":"neutral","confidenceScores":{"positive":0.06,"neutral":0.9,"negative":0.04},"sentences":[{"sentiment":"neutral","confidenceScores":{"positive":0.06,"neutral":0.9,"negative":0.04},"offset":0,"length":3,"text":"One"}],"warnings":[]},{"id":"1","sentiment":"neutral","confidenceScores":{"positive":0.01,"neutral":0.97,"negative":0.02},"sentences":[{"sentiment":"neutral","confidenceScores":{"positive":0.01,"neutral":0.97,"negative":0.02},"offset":0,"length":3,"text":"Two"}],"warnings":[]},{"id":"2","sentiment":"neutral","confidenceScores":{"positive":0.05,"neutral":0.93,"negative":0.02},"sentences":[{"sentiment":"neutral","confidenceScores":{"positive":0.05,"neutral":0.93,"negative":0.02},"offset":0,"length":5,"text":"Three"}],"warnings":[]},{"id":"3","sentiment":"neutral","confidenceScores":{"positive":0.03,"neutral":0.96,"negative":0.01},"sentences":[{"sentiment":"neutral","confidenceScores":{"positive":0.03,"neutral":0.96,"negative":0.01},"offset":0,"length":4,"text":"Four"}],"warnings":[]},{"id":"4","sentiment":"neutral","confidenceScores":{"positive":0.05,"neutral":0.93,"negative":0.02},"sentences":[{"sentiment":"neutral","confidenceScores":{"positive":0.05,"neutral":0.93,"negative":0.02},"offset":0,"length":4,"text":"Five"}],"warnings":[]},{"id":"5","sentiment":"neutral","confidenceScores":{"positive":0.01,"neutral":0.98,"negative":0.01},"sentences":[{"sentiment":"neutral","confidenceScores":{"positive":0.01,"neutral":0.98,"negative":0.01},"offset":0,"length":3,"text":"Six"}],"warnings":[]}],"errors":[],"modelVersion":"2020-04-01"}' headers: - apim-request-id: 68c140f8-c5a1-4715-b5ce-48264492a66c - content-length: '225' - content-type: application/json - date: Fri, 01 May 2020 16:08:27 GMT + apim-request-id: 907d38c7-507c-4d8c-ab66-7ba7b902396c + content-type: application/json; charset=utf-8 + csp-billing-usage: CognitiveServices.TextAnalytics.BatchScoring=6 + date: Wed, 06 May 2020 17:49:59 GMT strict-transport-security: max-age=31536000; includeSubDomains; preload - www-authenticate: AzureApiManagementKey realm="https://westus2.ppe.cognitiveservices.azure.com/text/analytics",name="Ocp-Apim-Subscription-Key",type="header" + transfer-encoding: chunked x-content-type-options: nosniff + x-envoy-upstream-service-time: '447' status: - code: 401 - message: Access Denied + code: 200 + message: OK url: https://westus2.ppe.cognitiveservices.azure.com/text/analytics/v3.0/sentiment?showStats=false version: 1 diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_detect_language.test_too_many_documents.yaml b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_detect_language.test_too_many_documents.yaml index ea6d0104c36f..9e1d49dd9e5a 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_detect_language.test_too_many_documents.yaml +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_detect_language.test_too_many_documents.yaml @@ -22,25 +22,25 @@ interactions: uri: https://westus2.ppe.cognitiveservices.azure.com/text/analytics/v3.0/languages?showStats=false response: body: - string: '{"error":{"code":"401","message": "Access denied due to invalid subscription - key or wrong API endpoint. Make sure to provide a valid key for an active - subscription and use a correct regional API endpoint for your resource."}}' + string: '{"documents":[{"id":"0","detectedLanguage":{"name":"English","iso6391Name":"en","confidenceScore":1.0},"warnings":[]},{"id":"1","detectedLanguage":{"name":"English","iso6391Name":"en","confidenceScore":1.0},"warnings":[]},{"id":"2","detectedLanguage":{"name":"English","iso6391Name":"en","confidenceScore":1.0},"warnings":[]},{"id":"3","detectedLanguage":{"name":"English","iso6391Name":"en","confidenceScore":1.0},"warnings":[]},{"id":"4","detectedLanguage":{"name":"English","iso6391Name":"en","confidenceScore":1.0},"warnings":[]},{"id":"5","detectedLanguage":{"name":"English","iso6391Name":"en","confidenceScore":1.0},"warnings":[]}],"errors":[],"modelVersion":"2019-10-01"}' headers: apim-request-id: - - fa964233-6518-4347-ac78-2e5496fff910 - content-length: - - '225' + - 665f34a6-d0d7-4e1e-836a-0022b2e7c355 content-type: - - application/json + - application/json; charset=utf-8 + csp-billing-usage: + - CognitiveServices.TextAnalytics.BatchScoring=6 date: - - Fri, 01 May 2020 16:08:28 GMT + - Wed, 06 May 2020 17:50:00 GMT strict-transport-security: - max-age=31536000; includeSubDomains; preload - www-authenticate: - - AzureApiManagementKey realm="https://westus2.ppe.cognitiveservices.azure.com/text/analytics",name="Ocp-Apim-Subscription-Key",type="header" + transfer-encoding: + - chunked x-content-type-options: - nosniff + x-envoy-upstream-service-time: + - '17' status: - code: 401 - message: Access Denied + code: 200 + message: OK version: 1 diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_detect_language_async.test_too_many_documents.yaml b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_detect_language_async.test_too_many_documents.yaml index 53a924dcfee8..95fcb08a2ac8 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_detect_language_async.test_too_many_documents.yaml +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_detect_language_async.test_too_many_documents.yaml @@ -18,19 +18,18 @@ interactions: uri: https://westus2.ppe.cognitiveservices.azure.com/text/analytics/v3.0/languages?showStats=false response: body: - string: '{"error":{"code":"401","message": "Access denied due to invalid subscription - key or wrong API endpoint. Make sure to provide a valid key for an active - subscription and use a correct regional API endpoint for your resource."}}' + string: '{"documents":[{"id":"0","detectedLanguage":{"name":"English","iso6391Name":"en","confidenceScore":1.0},"warnings":[]},{"id":"1","detectedLanguage":{"name":"English","iso6391Name":"en","confidenceScore":1.0},"warnings":[]},{"id":"2","detectedLanguage":{"name":"English","iso6391Name":"en","confidenceScore":1.0},"warnings":[]},{"id":"3","detectedLanguage":{"name":"English","iso6391Name":"en","confidenceScore":1.0},"warnings":[]},{"id":"4","detectedLanguage":{"name":"English","iso6391Name":"en","confidenceScore":1.0},"warnings":[]},{"id":"5","detectedLanguage":{"name":"English","iso6391Name":"en","confidenceScore":1.0},"warnings":[]}],"errors":[],"modelVersion":"2019-10-01"}' headers: - apim-request-id: 5d1d9707-ed31-43a4-b497-c986c879332b - content-length: '225' - content-type: application/json - date: Fri, 01 May 2020 16:08:30 GMT + apim-request-id: ac9a9b12-9398-417b-b38a-1a33b7f27398 + content-type: application/json; charset=utf-8 + csp-billing-usage: CognitiveServices.TextAnalytics.BatchScoring=6 + date: Wed, 06 May 2020 17:50:00 GMT strict-transport-security: max-age=31536000; includeSubDomains; preload - www-authenticate: AzureApiManagementKey realm="https://westus2.ppe.cognitiveservices.azure.com/text/analytics",name="Ocp-Apim-Subscription-Key",type="header" + transfer-encoding: chunked x-content-type-options: nosniff + x-envoy-upstream-service-time: '4' status: - code: 401 - message: Access Denied + code: 200 + message: OK url: https://westus2.ppe.cognitiveservices.azure.com/text/analytics/v3.0/languages?showStats=false version: 1 diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_extract_key_phrases.test_too_many_documents.yaml b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_extract_key_phrases.test_too_many_documents.yaml index 1342f8183962..1203b73fe0af 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_extract_key_phrases.test_too_many_documents.yaml +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_extract_key_phrases.test_too_many_documents.yaml @@ -22,25 +22,25 @@ interactions: uri: https://westus2.ppe.cognitiveservices.azure.com/text/analytics/v3.0/keyPhrases?showStats=false response: body: - string: '{"error":{"code":"401","message": "Access denied due to invalid subscription - key or wrong API endpoint. Make sure to provide a valid key for an active - subscription and use a correct regional API endpoint for your resource."}}' + string: '{"documents":[{"id":"0","keyPhrases":[],"warnings":[]},{"id":"1","keyPhrases":[],"warnings":[]},{"id":"2","keyPhrases":[],"warnings":[]},{"id":"3","keyPhrases":[],"warnings":[]},{"id":"4","keyPhrases":[],"warnings":[]},{"id":"5","keyPhrases":[],"warnings":[]}],"errors":[],"modelVersion":"2019-10-01"}' headers: apim-request-id: - - ca6f7eac-c982-4ec8-9173-32d8288d9ddd - content-length: - - '225' + - 43f39a4a-18f5-4c05-b5a2-b3404123cc86 content-type: - - application/json + - application/json; charset=utf-8 + csp-billing-usage: + - CognitiveServices.TextAnalytics.BatchScoring=6 date: - - Fri, 01 May 2020 16:08:32 GMT + - Wed, 06 May 2020 17:50:01 GMT strict-transport-security: - max-age=31536000; includeSubDomains; preload - www-authenticate: - - AzureApiManagementKey realm="https://westus2.ppe.cognitiveservices.azure.com/text/analytics",name="Ocp-Apim-Subscription-Key",type="header" + transfer-encoding: + - chunked x-content-type-options: - nosniff + x-envoy-upstream-service-time: + - '9' status: - code: 401 - message: Access Denied + code: 200 + message: OK version: 1 diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_extract_key_phrases_async.test_too_many_documents.yaml b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_extract_key_phrases_async.test_too_many_documents.yaml index 9c466b76f53b..5779a7a11ae0 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_extract_key_phrases_async.test_too_many_documents.yaml +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_extract_key_phrases_async.test_too_many_documents.yaml @@ -18,19 +18,18 @@ interactions: uri: https://westus2.ppe.cognitiveservices.azure.com/text/analytics/v3.0/keyPhrases?showStats=false response: body: - string: '{"error":{"code":"401","message": "Access denied due to invalid subscription - key or wrong API endpoint. Make sure to provide a valid key for an active - subscription and use a correct regional API endpoint for your resource."}}' + string: '{"documents":[{"id":"0","keyPhrases":[],"warnings":[]},{"id":"1","keyPhrases":[],"warnings":[]},{"id":"2","keyPhrases":[],"warnings":[]},{"id":"3","keyPhrases":[],"warnings":[]},{"id":"4","keyPhrases":[],"warnings":[]},{"id":"5","keyPhrases":[],"warnings":[]}],"errors":[],"modelVersion":"2019-10-01"}' headers: - apim-request-id: 1eb41936-0c49-4c56-a8b4-4daf46201094 - content-length: '225' - content-type: application/json - date: Fri, 01 May 2020 16:08:33 GMT + apim-request-id: fdc1b5e3-6da7-4fa1-b190-a3b3ff2b1289 + content-type: application/json; charset=utf-8 + csp-billing-usage: CognitiveServices.TextAnalytics.BatchScoring=6 + date: Wed, 06 May 2020 17:50:01 GMT strict-transport-security: max-age=31536000; includeSubDomains; preload - www-authenticate: AzureApiManagementKey realm="https://westus2.ppe.cognitiveservices.azure.com/text/analytics",name="Ocp-Apim-Subscription-Key",type="header" + transfer-encoding: chunked x-content-type-options: nosniff + x-envoy-upstream-service-time: '4' status: - code: 401 - message: Access Denied + code: 200 + message: OK url: https://westus2.ppe.cognitiveservices.azure.com/text/analytics/v3.0/keyPhrases?showStats=false version: 1 diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_recognize_entities.test_too_many_documents.yaml b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_recognize_entities.test_too_many_documents.yaml index 0e6ea826744d..56639da466ad 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_recognize_entities.test_too_many_documents.yaml +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_recognize_entities.test_too_many_documents.yaml @@ -22,19 +22,19 @@ interactions: uri: https://westus2.ppe.cognitiveservices.azure.com/text/analytics/v3.0/entities/recognition/general?showStats=false response: body: - string: '{"documents":[{"id":"0","entities":[{"text":"One","category":"Quantity","subcategory":"Number","offset":0,"length":3,"confidenceScore":0.8}],"warnings":[]},{"id":"1","entities":[{"text":"Two","category":"Quantity","subcategory":"Number","offset":0,"length":3,"confidenceScore":0.8}],"warnings":[]},{"id":"2","entities":[{"text":"Three","category":"Quantity","subcategory":"Number","offset":0,"length":5,"confidenceScore":0.8}],"warnings":[]},{"id":"3","entities":[{"text":"Four","category":"Quantity","subcategory":"Number","offset":0,"length":4,"confidenceScore":0.8}],"warnings":[]},{"id":"4","entities":[{"text":"Five","category":"Quantity","subcategory":"Number","offset":0,"length":4,"confidenceScore":0.8}],"warnings":[]},{"id":"5","entities":[{"text":"Six","category":"Quantity","subcategory":"Number","offset":0,"length":3,"confidenceScore":0.8}],"warnings":[]}],"errors":[{"id":"All","error":{"code":"InvalidArgument","message":"The - request contains a warning.","innererror":{"code":"InvalidDocumentBatch","message":"The + string: '{"documents":[{"id":"0","entities":[{"text":"One","category":"Quantity","subcategory":"Number","offset":0,"length":3,"confidenceScore":0.8}],"warnings":[]},{"id":"1","entities":[{"text":"Two","category":"Quantity","subcategory":"Number","offset":0,"length":3,"confidenceScore":0.8}],"warnings":[]},{"id":"2","entities":[{"text":"Three","category":"Quantity","subcategory":"Number","offset":0,"length":5,"confidenceScore":0.8}],"warnings":[]},{"id":"3","entities":[{"text":"Four","category":"Quantity","subcategory":"Number","offset":0,"length":4,"confidenceScore":0.8}],"warnings":[]},{"id":"4","entities":[{"text":"Five","category":"Quantity","subcategory":"Number","offset":0,"length":4,"confidenceScore":0.8}],"warnings":[]},{"id":"5","entities":[{"text":"Six","category":"Quantity","subcategory":"Number","offset":0,"length":3,"confidenceScore":0.8}],"warnings":[]}],"errors":[{"id":"","error":{"code":"InvalidRequest","message":"The + request has exceeded the allowed document limits.","innererror":{"code":"InvalidDocumentBatch","message":"The number of documents in the request have exceeded the data limitations. See https://aka.ms/text-analytics-data-limits for additional information"}}}],"modelVersion":"2020-04-01"}' headers: apim-request-id: - - 3f938077-141a-48c0-a8dc-45158ca76ca6 + - c59e450a-a78e-4bb5-aac2-b6da434585d1 content-type: - application/json; charset=utf-8 csp-billing-usage: - CognitiveServices.TextAnalytics.BatchScoring=6 date: - - Thu, 30 Apr 2020 18:38:28 GMT + - Wed, 06 May 2020 17:50:02 GMT strict-transport-security: - max-age=31536000; includeSubDomains; preload transfer-encoding: @@ -42,7 +42,7 @@ interactions: x-content-type-options: - nosniff x-envoy-upstream-service-time: - - '87' + - '957' status: code: 200 message: OK diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_recognize_entities_async.test_too_many_documents.yaml b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_recognize_entities_async.test_too_many_documents.yaml index 7a270e0b4e7d..86c6cb3004a3 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_recognize_entities_async.test_too_many_documents.yaml +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_recognize_entities_async.test_too_many_documents.yaml @@ -18,19 +18,19 @@ interactions: uri: https://westus2.ppe.cognitiveservices.azure.com/text/analytics/v3.0/entities/recognition/general?showStats=false response: body: - string: '{"documents":[{"id":"0","entities":[{"text":"One","category":"Quantity","subcategory":"Number","offset":0,"length":3,"confidenceScore":0.8}],"warnings":[]},{"id":"1","entities":[{"text":"Two","category":"Quantity","subcategory":"Number","offset":0,"length":3,"confidenceScore":0.8}],"warnings":[]},{"id":"2","entities":[{"text":"Three","category":"Quantity","subcategory":"Number","offset":0,"length":5,"confidenceScore":0.8}],"warnings":[]},{"id":"3","entities":[{"text":"Four","category":"Quantity","subcategory":"Number","offset":0,"length":4,"confidenceScore":0.8}],"warnings":[]},{"id":"4","entities":[{"text":"Five","category":"Quantity","subcategory":"Number","offset":0,"length":4,"confidenceScore":0.8}],"warnings":[]},{"id":"5","entities":[{"text":"Six","category":"Quantity","subcategory":"Number","offset":0,"length":3,"confidenceScore":0.8}],"warnings":[]}],"errors":[{"id":"All","error":{"code":"InvalidArgument","message":"The - request contains a warning.","innererror":{"code":"InvalidDocumentBatch","message":"The + string: '{"documents":[{"id":"0","entities":[{"text":"One","category":"Quantity","subcategory":"Number","offset":0,"length":3,"confidenceScore":0.8}],"warnings":[]},{"id":"1","entities":[{"text":"Two","category":"Quantity","subcategory":"Number","offset":0,"length":3,"confidenceScore":0.8}],"warnings":[]},{"id":"2","entities":[{"text":"Three","category":"Quantity","subcategory":"Number","offset":0,"length":5,"confidenceScore":0.8}],"warnings":[]},{"id":"3","entities":[{"text":"Four","category":"Quantity","subcategory":"Number","offset":0,"length":4,"confidenceScore":0.8}],"warnings":[]},{"id":"4","entities":[{"text":"Five","category":"Quantity","subcategory":"Number","offset":0,"length":4,"confidenceScore":0.8}],"warnings":[]},{"id":"5","entities":[{"text":"Six","category":"Quantity","subcategory":"Number","offset":0,"length":3,"confidenceScore":0.8}],"warnings":[]}],"errors":[{"id":"","error":{"code":"InvalidRequest","message":"The + request has exceeded the allowed document limits.","innererror":{"code":"InvalidDocumentBatch","message":"The number of documents in the request have exceeded the data limitations. See https://aka.ms/text-analytics-data-limits for additional information"}}}],"modelVersion":"2020-04-01"}' headers: - apim-request-id: 1dd2fff9-8681-43db-a4a2-550d2ce86329 + apim-request-id: f2321d88-a033-445f-b2ec-6ada1f9d33fd content-type: application/json; charset=utf-8 csp-billing-usage: CognitiveServices.TextAnalytics.BatchScoring=6 - date: Thu, 30 Apr 2020 18:38:29 GMT + date: Wed, 06 May 2020 17:50:03 GMT strict-transport-security: max-age=31536000; includeSubDomains; preload transfer-encoding: chunked x-content-type-options: nosniff - x-envoy-upstream-service-time: '74' + x-envoy-upstream-service-time: '779' status: code: 200 message: OK diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_recognize_linked_entities.test_too_many_documents.yaml b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_recognize_linked_entities.test_too_many_documents.yaml index e3a70705bef2..dcf6f80cb242 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_recognize_linked_entities.test_too_many_documents.yaml +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_recognize_linked_entities.test_too_many_documents.yaml @@ -22,19 +22,19 @@ interactions: uri: https://westus2.ppe.cognitiveservices.azure.com/text/analytics/v3.0/entities/linking?showStats=false response: body: - string: '{"documents":[{"id":"0","entities":[],"warnings":[]},{"id":"1","entities":[],"warnings":[]},{"id":"2","entities":[],"warnings":[]},{"id":"3","entities":[],"warnings":[]},{"id":"4","entities":[],"warnings":[]},{"id":"5","entities":[],"warnings":[]}],"errors":[{"id":"All","error":{"code":"InvalidArgument","message":"The - request contains a warning.","innererror":{"code":"InvalidDocumentBatch","message":"The + string: '{"documents":[{"id":"0","entities":[],"warnings":[]},{"id":"1","entities":[],"warnings":[]},{"id":"2","entities":[],"warnings":[]},{"id":"3","entities":[],"warnings":[]},{"id":"4","entities":[],"warnings":[]},{"id":"5","entities":[],"warnings":[]}],"errors":[{"id":"","error":{"code":"InvalidRequest","message":"The + request has exceeded the allowed document limits.","innererror":{"code":"InvalidDocumentBatch","message":"The number of documents in the request have exceeded the data limitations. See https://aka.ms/text-analytics-data-limits for additional information"}}}],"modelVersion":"2020-02-01"}' headers: apim-request-id: - - d66bc012-b3ed-44be-80d2-d837abc671dd + - ef07001d-9691-4f33-b5cd-77975c9ce053 content-type: - application/json; charset=utf-8 csp-billing-usage: - CognitiveServices.TextAnalytics.BatchScoring=6 date: - - Thu, 30 Apr 2020 18:38:29 GMT + - Wed, 06 May 2020 17:50:04 GMT strict-transport-security: - max-age=31536000; includeSubDomains; preload transfer-encoding: @@ -42,7 +42,7 @@ interactions: x-content-type-options: - nosniff x-envoy-upstream-service-time: - - '21' + - '497' status: code: 200 message: OK diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_recognize_linked_entities_async.test_too_many_documents.yaml b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_recognize_linked_entities_async.test_too_many_documents.yaml index 27dc6aae8521..ea191e6e9d7d 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_recognize_linked_entities_async.test_too_many_documents.yaml +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/recordings/test_recognize_linked_entities_async.test_too_many_documents.yaml @@ -18,19 +18,19 @@ interactions: uri: https://westus2.ppe.cognitiveservices.azure.com/text/analytics/v3.0/entities/linking?showStats=false response: body: - string: '{"documents":[{"id":"0","entities":[],"warnings":[]},{"id":"1","entities":[],"warnings":[]},{"id":"2","entities":[],"warnings":[]},{"id":"3","entities":[],"warnings":[]},{"id":"4","entities":[],"warnings":[]},{"id":"5","entities":[],"warnings":[]}],"errors":[{"id":"All","error":{"code":"InvalidArgument","message":"The - request contains a warning.","innererror":{"code":"InvalidDocumentBatch","message":"The + string: '{"documents":[{"id":"0","entities":[],"warnings":[]},{"id":"1","entities":[],"warnings":[]},{"id":"2","entities":[],"warnings":[]},{"id":"3","entities":[],"warnings":[]},{"id":"4","entities":[],"warnings":[]},{"id":"5","entities":[],"warnings":[]}],"errors":[{"id":"","error":{"code":"InvalidRequest","message":"The + request has exceeded the allowed document limits.","innererror":{"code":"InvalidDocumentBatch","message":"The number of documents in the request have exceeded the data limitations. See https://aka.ms/text-analytics-data-limits for additional information"}}}],"modelVersion":"2020-02-01"}' headers: - apim-request-id: da8df0dd-8966-4c46-808e-7850f5efd6ad + apim-request-id: 2952815e-d270-440e-975b-0eea1d80d377 content-type: application/json; charset=utf-8 csp-billing-usage: CognitiveServices.TextAnalytics.BatchScoring=6 - date: Thu, 30 Apr 2020 18:38:29 GMT + date: Wed, 06 May 2020 17:50:05 GMT strict-transport-security: max-age=31536000; includeSubDomains; preload transfer-encoding: chunked x-content-type-options: nosniff - x-envoy-upstream-service-time: '32' + x-envoy-upstream-service-time: '591' status: code: 200 message: OK diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/test_analyze_sentiment.py b/sdk/textanalytics/azure-ai-textanalytics/tests/test_analyze_sentiment.py index 5da5dc28275e..96aa4d5b8686 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/tests/test_analyze_sentiment.py +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/test_analyze_sentiment.py @@ -130,8 +130,10 @@ def test_too_many_documents(self, client): # marking as xfail since the service hasn't added this error to this endpoint docs = ["One", "Two", "Three", "Four", "Five", "Six"] - with self.assertRaises(HttpResponseError): - response = client.analyze_sentiment(docs) + try: + client.analyze_sentiment(docs) + except HttpResponseError as e: + assert e.status_code == 400 @GlobalTextAnalyticsAccountPreparer() @TextAnalyticsClientPreparer() diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/test_analyze_sentiment_async.py b/sdk/textanalytics/azure-ai-textanalytics/tests/test_analyze_sentiment_async.py index 01955544a1f2..e3123a67f384 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/tests/test_analyze_sentiment_async.py +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/test_analyze_sentiment_async.py @@ -146,8 +146,10 @@ async def test_too_many_documents(self, client): # marking as xfail since the service hasn't added this error to this endpoint docs = ["One", "Two", "Three", "Four", "Five", "Six"] - with self.assertRaises(HttpResponseError): - response = await client.analyze_sentiment(docs) + try: + await client.analyze_sentiment(docs) + except HttpResponseError as e: + assert e.status_code == 400 @GlobalTextAnalyticsAccountPreparer() @TextAnalyticsClientPreparer(client_kwargs={"text_analytics_account_key": ""}) diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/test_detect_language.py b/sdk/textanalytics/azure-ai-textanalytics/tests/test_detect_language.py index 7b38c8a713d4..b85161a98f84 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/tests/test_detect_language.py +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/test_detect_language.py @@ -136,8 +136,10 @@ def test_too_many_documents(self, client): # marking as xfail since the service hasn't added this error to this endpoint docs = ["One", "Two", "Three", "Four", "Five", "Six"] - with self.assertRaises(HttpResponseError): - response = client.detect_language(docs) + try: + client.detect_language(docs) + except HttpResponseError as e: + assert e.status_code == 400 @GlobalTextAnalyticsAccountPreparer() @TextAnalyticsClientPreparer(client_kwargs={"text_analytics_account_key": ""}) diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/test_detect_language_async.py b/sdk/textanalytics/azure-ai-textanalytics/tests/test_detect_language_async.py index f5d4e2fde35b..83a04108128d 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/tests/test_detect_language_async.py +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/test_detect_language_async.py @@ -149,8 +149,10 @@ async def test_too_many_documents(self, client): # marking as xfail since the service hasn't added this error to this endpoint docs = ["One", "Two", "Three", "Four", "Five", "Six"] - with self.assertRaises(HttpResponseError): - response = await client.detect_language(docs) + try: + await client.detect_language(docs) + except HttpResponseError as e: + assert e.status_code == 400 @GlobalTextAnalyticsAccountPreparer() @TextAnalyticsClientPreparer(client_kwargs={"text_analytics_account_key": ""}) diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/test_extract_key_phrases.py b/sdk/textanalytics/azure-ai-textanalytics/tests/test_extract_key_phrases.py index b12c3b75b213..bf31bc82ebc8 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/tests/test_extract_key_phrases.py +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/test_extract_key_phrases.py @@ -98,8 +98,10 @@ def test_too_many_documents(self, client): # marking as xfail since the service hasn't added this error to this endpoint docs = ["One", "Two", "Three", "Four", "Five", "Six"] - with self.assertRaises(HttpResponseError): - response = client.extract_key_phrases(docs) + try: + client.extract_key_phrases(docs) + except HttpResponseError as e: + assert e.status_code == 400 @GlobalTextAnalyticsAccountPreparer() @TextAnalyticsClientPreparer(client_kwargs={"text_analytics_account_key": ""}) diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/test_extract_key_phrases_async.py b/sdk/textanalytics/azure-ai-textanalytics/tests/test_extract_key_phrases_async.py index 9abd035df910..aa8d28054da8 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/tests/test_extract_key_phrases_async.py +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/test_extract_key_phrases_async.py @@ -113,8 +113,10 @@ async def test_too_many_documents(self, client): # marking as xfail since the service hasn't added this error to this endpoint docs = ["One", "Two", "Three", "Four", "Five", "Six"] - with self.assertRaises(HttpResponseError): - response = await client.extract_key_phrases(docs) + try: + await client.extract_key_phrases(docs) + except HttpResponseError as e: + assert e.status_code == 400 @GlobalTextAnalyticsAccountPreparer() @TextAnalyticsClientPreparer(client_kwargs={"text_analytics_account_key": ""}) diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/test_recognize_entities.py b/sdk/textanalytics/azure-ai-textanalytics/tests/test_recognize_entities.py index e78fa1808918..3bac0b575986 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/tests/test_recognize_entities.py +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/test_recognize_entities.py @@ -106,8 +106,11 @@ def test_input_with_all_errors(self, client): def test_too_many_documents(self, client): docs = ["One", "Two", "Three", "Four", "Five", "Six"] - with self.assertRaises(HttpResponseError): - response = client.recognize_entities(docs) + try: + client.recognize_entities(docs) + except HttpResponseError as e: + assert e.status_code == 400 + @GlobalTextAnalyticsAccountPreparer() @TextAnalyticsClientPreparer(client_kwargs={"text_analytics_account_key": ""}) diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/test_recognize_entities_async.py b/sdk/textanalytics/azure-ai-textanalytics/tests/test_recognize_entities_async.py index 7b307c0474fd..9df89de740c7 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/tests/test_recognize_entities_async.py +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/test_recognize_entities_async.py @@ -122,8 +122,10 @@ async def test_input_with_all_errors(self, client): async def test_too_many_documents(self, client): docs = ["One", "Two", "Three", "Four", "Five", "Six"] - with self.assertRaises(HttpResponseError): - response = await client.recognize_entities(docs) + try: + await client.recognize_entities(docs) + except HttpResponseError as e: + assert e.status_code == 400 @GlobalTextAnalyticsAccountPreparer() @TextAnalyticsClientPreparer(client_kwargs={"text_analytics_account_key": ""}) diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/test_recognize_linked_entities.py b/sdk/textanalytics/azure-ai-textanalytics/tests/test_recognize_linked_entities.py index e7aa166465b4..39b0d02a90a4 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/tests/test_recognize_linked_entities.py +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/test_recognize_linked_entities.py @@ -106,8 +106,10 @@ def test_input_with_all_errors(self, client): def test_too_many_documents(self, client): docs = ["One", "Two", "Three", "Four", "Five", "Six"] - with self.assertRaises(HttpResponseError): - response = client.recognize_linked_entities(docs) + try: + client.recognize_linked_entities(docs) + except HttpResponseError as e: + assert e.status_code == 400 @GlobalTextAnalyticsAccountPreparer() @TextAnalyticsClientPreparer(client_kwargs={"text_analytics_account_key": ""}) diff --git a/sdk/textanalytics/azure-ai-textanalytics/tests/test_recognize_linked_entities_async.py b/sdk/textanalytics/azure-ai-textanalytics/tests/test_recognize_linked_entities_async.py index 001d14c6774b..02adf2460736 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/tests/test_recognize_linked_entities_async.py +++ b/sdk/textanalytics/azure-ai-textanalytics/tests/test_recognize_linked_entities_async.py @@ -127,8 +127,11 @@ async def test_input_with_all_errors(self, client): async def test_too_many_documents(self, client): docs = ["One", "Two", "Three", "Four", "Five", "Six"] - with self.assertRaises(HttpResponseError): - response = await client.recognize_linked_entities(docs) + try: + await client.recognize_linked_entities(docs) + except HttpResponseError as e: + assert e.status_code == 400 + @GlobalTextAnalyticsAccountPreparer() @TextAnalyticsClientPreparer(client_kwargs={"text_analytics_account_key": ""})