From 1b056284cbd65eb30ea471d99336756b56f9c37a Mon Sep 17 00:00:00 2001 From: iscai-msft Date: Fri, 26 Feb 2021 16:18:01 -0500 Subject: [PATCH 1/6] add HttpRequest and HttpResponse reprs --- .../azure/core/pipeline/transport/_aiohttp.py | 2 +- .../azure-core/azure/core/pipeline/transport/_base.py | 10 +++++++++- .../tests/async_tests/test_universal_http_async.py | 9 +++++++++ sdk/core/azure-core/tests/test_pipeline.py | 8 ++++++-- sdk/core/azure-core/tests/test_requests_universal.py | 7 +++++++ 5 files changed, 32 insertions(+), 4 deletions(-) diff --git a/sdk/core/azure-core/azure/core/pipeline/transport/_aiohttp.py b/sdk/core/azure-core/azure/core/pipeline/transport/_aiohttp.py index 9468ac9d3756..5376534fc294 100644 --- a/sdk/core/azure-core/azure/core/pipeline/transport/_aiohttp.py +++ b/sdk/core/azure-core/azure/core/pipeline/transport/_aiohttp.py @@ -267,7 +267,7 @@ def __init__(self, request: HttpRequest, aiohttp_response: aiohttp.ClientRespons self.status_code = aiohttp_response.status self.headers = CIMultiDict(aiohttp_response.headers) self.reason = aiohttp_response.reason - self.content_type = aiohttp_response.headers.get('content-type') + self.content_type = self.headers.get('content-type') self._body = None def body(self) -> bytes: diff --git a/sdk/core/azure-core/azure/core/pipeline/transport/_base.py b/sdk/core/azure-core/azure/core/pipeline/transport/_base.py index c77212d33e69..e460625b55cf 100644 --- a/sdk/core/azure-core/azure/core/pipeline/transport/_base.py +++ b/sdk/core/azure-core/azure/core/pipeline/transport/_base.py @@ -234,7 +234,9 @@ def __init__(self, method, url, headers=None, files=None, data=None): self.multipart_mixed_info = None # type: Optional[Tuple] def __repr__(self): - return "" % (self.method) + return "".format( + self.method, self.url + ) def __deepcopy__(self, memo=None): try: @@ -592,6 +594,12 @@ def raise_for_status(self): if self.status_code >= 400: raise HttpResponseError(response=self) + def __repr__(self) -> str: + reason = " {}".format(self.reason) if self.reason else "" + return "<{}: {}{}, Content-Type:{}>".format( + type(self).__name__, self.status_code, reason, self.content_type + ) + class HttpResponse(_HttpResponseBase): # pylint: disable=abstract-method def stream_download(self, pipeline): diff --git a/sdk/core/azure-core/tests/async_tests/test_universal_http_async.py b/sdk/core/azure-core/tests/async_tests/test_universal_http_async.py index 3c07817cd12b..c7054d469e55 100644 --- a/sdk/core/azure-core/tests/async_tests/test_universal_http_async.py +++ b/sdk/core/azure-core/tests/async_tests/test_universal_http_async.py @@ -98,6 +98,8 @@ def __init__(self, body_bytes, headers=None): self._body = body_bytes self._headers = headers self._cache = {} + self.status = 200 + self.reason = "OK" req_response = MockAiohttpClientResponse(body_bytes, headers) @@ -120,3 +122,10 @@ async def test_aiohttp_response_text(): {'Content-Type': 'text/plain'} ) assert res.text(encoding) == '56', "Encoding {} didn't work".format(encoding) + +def test_repr(): + res = _create_aiohttp_response( + b'\xef\xbb\xbf56', + {'Content-Type': 'text/plain'} + ) + assert repr(res) == "" \ No newline at end of file diff --git a/sdk/core/azure-core/tests/test_pipeline.py b/sdk/core/azure-core/tests/test_pipeline.py index fdf11031e4e0..43cf9def610b 100644 --- a/sdk/core/azure-core/tests/test_pipeline.py +++ b/sdk/core/azure-core/tests/test_pipeline.py @@ -285,7 +285,7 @@ def test_request_url_with_params(self): request.format_parameters({"g": "h"}) self.assertIn(request.url, ["a/b/c?g=h&t=y", "a/b/c?t=y&g=h"]) - + def test_request_url_with_params_as_list(self): request = HttpRequest("GET", "/") @@ -300,7 +300,7 @@ def test_request_url_with_params_with_none_in_list(self): request.url = "a/b/c?t=y" with pytest.raises(ValueError): request.format_parameters({"g": ["h",None]}) - + def test_request_url_with_params_with_none(self): request = HttpRequest("GET", "/") @@ -328,6 +328,10 @@ def test_request_text(self): # We want a direct string assert request.data == "foo" + def test_repr(self): + request = HttpRequest("GET", "hello.com") + assert repr(request) == "" + if __name__ == "__main__": unittest.main() diff --git a/sdk/core/azure-core/tests/test_requests_universal.py b/sdk/core/azure-core/tests/test_requests_universal.py index 63f7edebb50e..9248e0686d59 100644 --- a/sdk/core/azure-core/tests/test_requests_universal.py +++ b/sdk/core/azure-core/tests/test_requests_universal.py @@ -82,3 +82,10 @@ def test_requests_response_text(): {'Content-Type': 'text/plain'} ) assert res.text(encoding) == '56', "Encoding {} didn't work".format(encoding) + +def test_repr(): + res = _create_requests_response( + b'\xef\xbb\xbf56', + {'Content-Type': 'text/plain'} + ) + assert repr(res) == "" From 32832ed45220ec488a6e76044122821fee23e62a Mon Sep 17 00:00:00 2001 From: iscai-msft Date: Fri, 26 Feb 2021 16:19:55 -0500 Subject: [PATCH 2/6] update changelog --- sdk/core/azure-core/CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sdk/core/azure-core/CHANGELOG.md b/sdk/core/azure-core/CHANGELOG.md index 90e3b12f5520..ef562d24f500 100644 --- a/sdk/core/azure-core/CHANGELOG.md +++ b/sdk/core/azure-core/CHANGELOG.md @@ -2,6 +2,10 @@ ## 1.11.1 (Unreleased) +### Bug Fixes + +- Improve `repr`s for `HttpRequest` and `HttpResponse`s #16972 + ## 1.11.0 (2021-02-08) From a9217752fb77167f61f3b7a10e4a87d32780bbce Mon Sep 17 00:00:00 2001 From: iscai-msft Date: Fri, 26 Feb 2021 16:25:01 -0500 Subject: [PATCH 3/6] remove check for reason, add for content type --- .../azure-core/azure/core/pipeline/transport/_base.py | 8 ++++++-- .../tests/async_tests/test_universal_http_async.py | 2 +- sdk/core/azure-core/tests/test_requests_universal.py | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/sdk/core/azure-core/azure/core/pipeline/transport/_base.py b/sdk/core/azure-core/azure/core/pipeline/transport/_base.py index e460625b55cf..deb5a1fd98d4 100644 --- a/sdk/core/azure-core/azure/core/pipeline/transport/_base.py +++ b/sdk/core/azure-core/azure/core/pipeline/transport/_base.py @@ -595,9 +595,13 @@ def raise_for_status(self): raise HttpResponseError(response=self) def __repr__(self) -> str: + # there doesn't have to be a content type + content_type_str = ( + ", Content-Type: {}".format(self.content_type) if self.content_type else "" + ) reason = " {}".format(self.reason) if self.reason else "" - return "<{}: {}{}, Content-Type:{}>".format( - type(self).__name__, self.status_code, reason, self.content_type + return "<{}: {} {}{}>".format( + type(self).__name__, self.status_code, self.reason, content_type_str ) diff --git a/sdk/core/azure-core/tests/async_tests/test_universal_http_async.py b/sdk/core/azure-core/tests/async_tests/test_universal_http_async.py index c7054d469e55..c48144ab0c0a 100644 --- a/sdk/core/azure-core/tests/async_tests/test_universal_http_async.py +++ b/sdk/core/azure-core/tests/async_tests/test_universal_http_async.py @@ -128,4 +128,4 @@ def test_repr(): b'\xef\xbb\xbf56', {'Content-Type': 'text/plain'} ) - assert repr(res) == "" \ No newline at end of file + assert repr(res) == "" \ No newline at end of file diff --git a/sdk/core/azure-core/tests/test_requests_universal.py b/sdk/core/azure-core/tests/test_requests_universal.py index 9248e0686d59..5a0f778a6b10 100644 --- a/sdk/core/azure-core/tests/test_requests_universal.py +++ b/sdk/core/azure-core/tests/test_requests_universal.py @@ -88,4 +88,4 @@ def test_repr(): b'\xef\xbb\xbf56', {'Content-Type': 'text/plain'} ) - assert repr(res) == "" + assert repr(res) == "" From bf96ec966bfc15f736500f9cae1f12fb8b14c501 Mon Sep 17 00:00:00 2001 From: iscai-msft Date: Mon, 1 Mar 2021 17:15:15 -0500 Subject: [PATCH 4/6] fix 2.7 --- sdk/core/azure-core/azure/core/pipeline/transport/_base.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sdk/core/azure-core/azure/core/pipeline/transport/_base.py b/sdk/core/azure-core/azure/core/pipeline/transport/_base.py index deb5a1fd98d4..6531ea5179f1 100644 --- a/sdk/core/azure-core/azure/core/pipeline/transport/_base.py +++ b/sdk/core/azure-core/azure/core/pipeline/transport/_base.py @@ -594,12 +594,11 @@ def raise_for_status(self): if self.status_code >= 400: raise HttpResponseError(response=self) - def __repr__(self) -> str: + def __repr__(self): # there doesn't have to be a content type content_type_str = ( ", Content-Type: {}".format(self.content_type) if self.content_type else "" ) - reason = " {}".format(self.reason) if self.reason else "" return "<{}: {} {}{}>".format( type(self).__name__, self.status_code, self.reason, content_type_str ) From 915959501e5cd84c1858cccfb85965b04c8262d4 Mon Sep 17 00:00:00 2001 From: iscai-msft Date: Thu, 4 Mar 2021 15:51:27 -0500 Subject: [PATCH 5/6] revert change to aiohttp --- sdk/core/azure-core/azure/core/pipeline/transport/_aiohttp.py | 2 +- .../azure-core/tests/async_tests/test_universal_http_async.py | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/sdk/core/azure-core/azure/core/pipeline/transport/_aiohttp.py b/sdk/core/azure-core/azure/core/pipeline/transport/_aiohttp.py index 5376534fc294..9468ac9d3756 100644 --- a/sdk/core/azure-core/azure/core/pipeline/transport/_aiohttp.py +++ b/sdk/core/azure-core/azure/core/pipeline/transport/_aiohttp.py @@ -267,7 +267,7 @@ def __init__(self, request: HttpRequest, aiohttp_response: aiohttp.ClientRespons self.status_code = aiohttp_response.status self.headers = CIMultiDict(aiohttp_response.headers) self.reason = aiohttp_response.reason - self.content_type = self.headers.get('content-type') + self.content_type = aiohttp_response.headers.get('content-type') self._body = None def body(self) -> bytes: diff --git a/sdk/core/azure-core/tests/async_tests/test_universal_http_async.py b/sdk/core/azure-core/tests/async_tests/test_universal_http_async.py index c48144ab0c0a..d4b3e66d523e 100644 --- a/sdk/core/azure-core/tests/async_tests/test_universal_http_async.py +++ b/sdk/core/azure-core/tests/async_tests/test_universal_http_async.py @@ -126,6 +126,8 @@ async def test_aiohttp_response_text(): def test_repr(): res = _create_aiohttp_response( b'\xef\xbb\xbf56', - {'Content-Type': 'text/plain'} + {} ) + res.content_type = "text/plain" + assert repr(res) == "" \ No newline at end of file From d7217034102a8eb8c91ed8eb8a34ee8523be495c Mon Sep 17 00:00:00 2001 From: iscai-msft Date: Fri, 5 Mar 2021 11:41:22 -0500 Subject: [PATCH 6/6] update changelog --- sdk/core/azure-core/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/core/azure-core/CHANGELOG.md b/sdk/core/azure-core/CHANGELOG.md index 477d0d15c47f..f9d5779cd8d9 100644 --- a/sdk/core/azure-core/CHANGELOG.md +++ b/sdk/core/azure-core/CHANGELOG.md @@ -1,6 +1,6 @@ # Release History -## 1.12.0 (Unreleased) +## 1.12.0 (2021-03-08) ### Features