From c684cdac0bdbef81650389a9138b6d735c25dcb7 Mon Sep 17 00:00:00 2001 From: Kashif Khan Date: Tue, 19 Jul 2022 09:51:03 -0500 Subject: [PATCH 1/9] remove 3.7 if check --- .../azure/core/pipeline/transport/__init__.py | 145 +++++++----------- 1 file changed, 53 insertions(+), 92 deletions(-) diff --git a/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py b/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py index 03d5b0d19c88..b2402810ca81 100644 --- a/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py +++ b/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py @@ -49,68 +49,45 @@ 'AsyncHttpResponse', 'AsyncioRequestsTransport', 'AsyncioRequestsTransportResponse' + 'TrioRequestsTransport', + 'TrioRequestsTransportResponse', + 'AioHttpTransport', + 'AioHttpTransportResponse', ]) - if sys.version_info >= (3, 7): - __all__.extend([ - 'TrioRequestsTransport', - 'TrioRequestsTransportResponse', - 'AioHttpTransport', - 'AioHttpTransportResponse', - ]) + + def __dir__(): + return __all__ - def __dir__(): - return __all__ + def __getattr__(name): + if name == 'AioHttpTransport': + try: + from ._aiohttp import AioHttpTransport + return AioHttpTransport + except ImportError: + raise ImportError("aiohttp package is not installed") + if name == 'AioHttpTransportResponse': + try: + from ._aiohttp import AioHttpTransportResponse + return AioHttpTransportResponse + except ImportError: + raise ImportError("aiohttp package is not installed") + if name == 'TrioRequestsTransport': + try: + from ._requests_trio import TrioRequestsTransport + return TrioRequestsTransport + except ImportError: + raise ImportError("trio package is not installed") + if name == 'TrioRequestsTransportResponse': + try: + from ._requests_trio import TrioRequestsTransportResponse + return TrioRequestsTransportResponse + except ImportError: + raise ImportError("trio package is not installed") + if name == '__bases__': + raise AttributeError("module 'azure.core.pipeline.transport' has no attribute '__bases__'") + return name - def __getattr__(name): - if name == 'AioHttpTransport': - try: - from ._aiohttp import AioHttpTransport - return AioHttpTransport - except ImportError: - raise ImportError("aiohttp package is not installed") - if name == 'AioHttpTransportResponse': - try: - from ._aiohttp import AioHttpTransportResponse - return AioHttpTransportResponse - except ImportError: - raise ImportError("aiohttp package is not installed") - if name == 'TrioRequestsTransport': - try: - from ._requests_trio import TrioRequestsTransport - return TrioRequestsTransport - except ImportError: - raise ImportError("trio package is not installed") - if name == 'TrioRequestsTransportResponse': - try: - from ._requests_trio import TrioRequestsTransportResponse - return TrioRequestsTransportResponse - except ImportError: - raise ImportError("trio package is not installed") - if name == '__bases__': - raise AttributeError("module 'azure.core.pipeline.transport' has no attribute '__bases__'") - return name - - else: - try: - from ._requests_trio import TrioRequestsTransport, TrioRequestsTransportResponse - - __all__.extend([ - 'TrioRequestsTransport', - 'TrioRequestsTransportResponse' - ]) - except ImportError: - pass # Trio not installed - - try: - from ._aiohttp import AioHttpTransport, AioHttpTransportResponse - - __all__.extend([ - 'AioHttpTransport', - 'AioHttpTransportResponse', - ]) - except ImportError: - pass # Aiohttp not installed except (ImportError, SyntaxError): # requests library is installed but asynchronous pipelines not supported. pass @@ -121,40 +98,24 @@ def __getattr__(name): __all__.extend([ 'AsyncHttpTransport', 'AsyncHttpResponse', + 'AioHttpTransport', + 'AioHttpTransportResponse', ]) - - if sys.version_info >= (3, 7): - __all__.extend([ - 'AioHttpTransport', - 'AioHttpTransportResponse', - ]) - - def __dir__(): - return __all__ - - def __getattr__(name): - if name == 'AioHttpTransport': - try: - from ._aiohttp import AioHttpTransport - return AioHttpTransport - except ImportError: - raise ImportError("aiohttp package is not installed") - if name == 'AioHttpTransportResponse': - try: - from ._aiohttp import AioHttpTransportResponse - return AioHttpTransportResponse - except ImportError: - raise ImportError("aiohttp package is not installed") - return name - - else: - try: - from ._aiohttp import AioHttpTransport, AioHttpTransportResponse - __all__.extend([ - 'AioHttpTransport', - 'AioHttpTransportResponse', - ]) - except ImportError: - pass # Aiohttp not installed + def __dir__(): + return __all__ + def __getattr__(name): + if name == 'AioHttpTransport': + try: + from ._aiohttp import AioHttpTransport + return AioHttpTransport + except ImportError: + raise ImportError("aiohttp package is not installed") + if name == 'AioHttpTransportResponse': + try: + from ._aiohttp import AioHttpTransportResponse + return AioHttpTransportResponse + except ImportError: + raise ImportError("aiohttp package is not installed") + return name except (ImportError, SyntaxError): pass # Asynchronous pipelines not supported. From f7dd71115c9400fc44f89ae35d853afc4fcf1d36 Mon Sep 17 00:00:00 2001 From: Kashif Khan Date: Tue, 19 Jul 2022 12:46:59 -0500 Subject: [PATCH 2/9] interim changes --- .../azure/core/pipeline/transport/__init__.py | 159 +++++++++--------- 1 file changed, 76 insertions(+), 83 deletions(-) diff --git a/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py b/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py index b2402810ca81..302c7ba916bd 100644 --- a/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py +++ b/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py @@ -24,98 +24,91 @@ # # -------------------------------------------------------------------------- -import sys from ._base import HttpTransport, HttpRequest, HttpResponse __all__ = [ 'HttpTransport', 'HttpRequest', 'HttpResponse', + 'RequestsTransport', + 'RequestsTransportResponse', + 'AsyncHttpTransport', + 'AsyncHttpResponse', + 'AsyncioRequestsTransport', + 'AsyncioRequestsTransportResponse' + 'TrioRequestsTransport', + 'TrioRequestsTransportResponse', + 'AioHttpTransport', + 'AioHttpTransportResponse', ] # pylint: disable=unused-import, redefined-outer-name -try: - from ._requests_basic import RequestsTransport, RequestsTransportResponse - __all__.extend([ - 'RequestsTransport', - 'RequestsTransportResponse', - ]) - try: - from ._base_async import AsyncHttpTransport, AsyncHttpResponse - from ._requests_asyncio import AsyncioRequestsTransport, AsyncioRequestsTransportResponse - - __all__.extend([ - 'AsyncHttpTransport', - 'AsyncHttpResponse', - 'AsyncioRequestsTransport', - 'AsyncioRequestsTransportResponse' - 'TrioRequestsTransport', - 'TrioRequestsTransportResponse', - 'AioHttpTransport', - 'AioHttpTransportResponse', - ]) - def __dir__(): - return __all__ - - def __getattr__(name): - if name == 'AioHttpTransport': - try: - from ._aiohttp import AioHttpTransport - return AioHttpTransport - except ImportError: - raise ImportError("aiohttp package is not installed") - if name == 'AioHttpTransportResponse': - try: - from ._aiohttp import AioHttpTransportResponse - return AioHttpTransportResponse - except ImportError: - raise ImportError("aiohttp package is not installed") - if name == 'TrioRequestsTransport': - try: - from ._requests_trio import TrioRequestsTransport - return TrioRequestsTransport - except ImportError: - raise ImportError("trio package is not installed") - if name == 'TrioRequestsTransportResponse': - try: - from ._requests_trio import TrioRequestsTransportResponse - return TrioRequestsTransportResponse - except ImportError: - raise ImportError("trio package is not installed") - if name == '__bases__': - raise AttributeError("module 'azure.core.pipeline.transport' has no attribute '__bases__'") - return name +def __dir__(): + return __all__ - except (ImportError, SyntaxError): - # requests library is installed but asynchronous pipelines not supported. - pass -except (ImportError, SyntaxError): - # requests library is not installed - try: - from ._base_async import AsyncHttpTransport, AsyncHttpResponse - __all__.extend([ - 'AsyncHttpTransport', - 'AsyncHttpResponse', - 'AioHttpTransport', - 'AioHttpTransportResponse', - ]) - def __dir__(): - return __all__ - def __getattr__(name): - if name == 'AioHttpTransport': - try: - from ._aiohttp import AioHttpTransport - return AioHttpTransport - except ImportError: - raise ImportError("aiohttp package is not installed") - if name == 'AioHttpTransportResponse': - try: - from ._aiohttp import AioHttpTransportResponse - return AioHttpTransportResponse - except ImportError: - raise ImportError("aiohttp package is not installed") - return name - except (ImportError, SyntaxError): - pass # Asynchronous pipelines not supported. +def __getattr__(name): + if name == 'AsyncioRequestsTransport': + try: + from ._requests_asyncio import AsyncHttpResponse + return AsyncHttpTransport + except ImportError: + pass + if name == 'AsyncioRequestsTransportResponse': + try: + from ._requests_asyncio import AsyncioRequestsTransportResponse + return AsyncioRequestsTransportResponse + except ImportError: + pass + if name == 'AsyncHttpTransport': + try: + from ._base_async import AsyncHttpTransport + return AsyncHttpTransport + except ImportError: + pass + if name == 'AsyncHttpResponse': + try: + from ._base_async import AsyncHttpResponse + return AsyncHttpResponse + except ImportError: + pass + if name == 'RequestsTransport': + try: + from ._requests_basic import RequestsTransport + return RequestsTransport + except ImportError: + raise ImportError("requests package is not installed") + if name == 'RequestsTransportResponse': + try: + from ._requests_basic import RequestsTransportResponse + return RequestsTransportResponse + except ImportError: + raise ImportError("requests package is not installed") + if name == 'AioHttpTransport': + try: + from ._aiohttp import AioHttpTransport + return AioHttpTransport + except ImportError: + raise ImportError("aiohttp package is not installed") + if name == 'AioHttpTransportResponse': + try: + from ._aiohttp import AioHttpTransportResponse + return AioHttpTransportResponse + except ImportError: + raise ImportError("aiohttp package is not installed") + if name == 'TrioRequestsTransport': + try: + from ._requests_trio import TrioRequestsTransport + return TrioRequestsTransport + except ImportError: + raise ImportError("trio package is not installed") + if name == 'TrioRequestsTransportResponse': + try: + from ._requests_trio import TrioRequestsTransportResponse + return TrioRequestsTransportResponse + except ImportError: + raise ImportError("trio package is not installed") + if name == '__bases__': + raise AttributeError("module 'azure.core.pipeline.transport' has no attribute '__bases__'") + return name \ No newline at end of file From 2c2278c2a0ba731dd8a42255055e31825c08c368 Mon Sep 17 00:00:00 2001 From: Kashif Khan Date: Thu, 21 Jul 2022 09:55:42 -0500 Subject: [PATCH 3/9] fix return --- sdk/core/azure-core/azure/core/pipeline/transport/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py b/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py index 302c7ba916bd..22bd595b0db7 100644 --- a/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py +++ b/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py @@ -52,7 +52,7 @@ def __getattr__(name): if name == 'AsyncioRequestsTransport': try: from ._requests_asyncio import AsyncHttpResponse - return AsyncHttpTransport + return AsyncHttpResponse except ImportError: pass if name == 'AsyncioRequestsTransportResponse': From 1f3787ff9d3b356d7bc9bb8e1969c7a2146acb71 Mon Sep 17 00:00:00 2001 From: Kashif Khan Date: Thu, 21 Jul 2022 13:46:57 -0500 Subject: [PATCH 4/9] fix --- .../azure-core/azure/core/pipeline/transport/__init__.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py b/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py index 22bd595b0db7..440a758f8626 100644 --- a/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py +++ b/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py @@ -26,6 +26,7 @@ from ._base import HttpTransport, HttpRequest, HttpResponse + __all__ = [ 'HttpTransport', 'HttpRequest', @@ -51,8 +52,8 @@ def __dir__(): def __getattr__(name): if name == 'AsyncioRequestsTransport': try: - from ._requests_asyncio import AsyncHttpResponse - return AsyncHttpResponse + from ._requests_asyncio import AsyncioRequestsTransport + return AsyncioRequestsTransport except ImportError: pass if name == 'AsyncioRequestsTransportResponse': From a1cb2b64632c959bc729cf48e68faadca4bb31c5 Mon Sep 17 00:00:00 2001 From: Kashif Khan Date: Fri, 22 Jul 2022 10:51:23 -0500 Subject: [PATCH 5/9] fixes --- .../azure/core/pipeline/transport/__init__.py | 23 +++++-------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py b/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py index 440a758f8626..3d524bd1daef 100644 --- a/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py +++ b/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py @@ -25,6 +25,7 @@ # -------------------------------------------------------------------------- from ._base import HttpTransport, HttpRequest, HttpResponse +from ._base_async import AsyncHttpTransport, AsyncHttpResponse __all__ = [ @@ -55,25 +56,13 @@ def __getattr__(name): from ._requests_asyncio import AsyncioRequestsTransport return AsyncioRequestsTransport except ImportError: - pass + raise ImportError("requests package is not installed") if name == 'AsyncioRequestsTransportResponse': try: from ._requests_asyncio import AsyncioRequestsTransportResponse return AsyncioRequestsTransportResponse except ImportError: - pass - if name == 'AsyncHttpTransport': - try: - from ._base_async import AsyncHttpTransport - return AsyncHttpTransport - except ImportError: - pass - if name == 'AsyncHttpResponse': - try: - from ._base_async import AsyncHttpResponse - return AsyncHttpResponse - except ImportError: - pass + raise ImportError("requests package is not installed") if name == 'RequestsTransport': try: from ._requests_basic import RequestsTransport @@ -110,6 +99,6 @@ def __getattr__(name): return TrioRequestsTransportResponse except ImportError: raise ImportError("trio package is not installed") - if name == '__bases__': - raise AttributeError("module 'azure.core.pipeline.transport' has no attribute '__bases__'") - return name \ No newline at end of file + + raise AttributeError(f"module 'azure.core.pipeline.transport' has no attribute {name}") + \ No newline at end of file From 6797365c27eeb759d1cc537cf8569d2974ecd9f1 Mon Sep 17 00:00:00 2001 From: Kashif Khan Date: Fri, 22 Jul 2022 11:21:26 -0500 Subject: [PATCH 6/9] handle requests not being installed for trio --- .../azure-core/azure/core/pipeline/transport/__init__.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py b/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py index 3d524bd1daef..2b9fcd3192aa 100644 --- a/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py +++ b/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py @@ -91,8 +91,12 @@ def __getattr__(name): try: from ._requests_trio import TrioRequestsTransport return TrioRequestsTransport - except ImportError: - raise ImportError("trio package is not installed") + except ImportError as ex: + if ex.msg.endswith("'requests'"): + raise ImportError("requests package is not installed") + else: + raise ImportError("trio package is not installed") + if name == 'TrioRequestsTransportResponse': try: from ._requests_trio import TrioRequestsTransportResponse From 618d9fd682d576c65eeff8cc805efdc8f0b407ba Mon Sep 17 00:00:00 2001 From: Kashif Khan Date: Mon, 1 Aug 2022 13:15:32 -0500 Subject: [PATCH 7/9] pylint fixes --- .../azure/core/pipeline/transport/__init__.py | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py b/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py index 2b9fcd3192aa..b7da116d5aa8 100644 --- a/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py +++ b/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py @@ -27,6 +27,7 @@ from ._base import HttpTransport, HttpRequest, HttpResponse from ._base_async import AsyncHttpTransport, AsyncHttpResponse +# pylint: disable=undefined-all-variable __all__ = [ 'HttpTransport', @@ -44,9 +45,8 @@ 'AioHttpTransportResponse', ] -# pylint: disable=unused-import, redefined-outer-name +# pylint: disable=unused-import, redefined-outer-name, no-member - def __dir__(): return __all__ @@ -94,15 +94,11 @@ def __getattr__(name): except ImportError as ex: if ex.msg.endswith("'requests'"): raise ImportError("requests package is not installed") - else: - raise ImportError("trio package is not installed") - + raise ImportError("trio package is not installed") if name == 'TrioRequestsTransportResponse': try: from ._requests_trio import TrioRequestsTransportResponse return TrioRequestsTransportResponse except ImportError: raise ImportError("trio package is not installed") - raise AttributeError(f"module 'azure.core.pipeline.transport' has no attribute {name}") - \ No newline at end of file From cec8209f5b01b06ebc493f515703c919ed130071 Mon Sep 17 00:00:00 2001 From: Kashif Khan Date: Mon, 1 Aug 2022 14:03:29 -0500 Subject: [PATCH 8/9] pylint fixes --- .../azure/core/pipeline/transport/__init__.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py b/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py index b7da116d5aa8..08281da25137 100644 --- a/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py +++ b/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py @@ -51,46 +51,47 @@ def __dir__(): return __all__ def __getattr__(name): + transport = None if name == 'AsyncioRequestsTransport': try: from ._requests_asyncio import AsyncioRequestsTransport - return AsyncioRequestsTransport + transport = AsyncioRequestsTransport except ImportError: raise ImportError("requests package is not installed") if name == 'AsyncioRequestsTransportResponse': try: from ._requests_asyncio import AsyncioRequestsTransportResponse - return AsyncioRequestsTransportResponse + transport = AsyncioRequestsTransportResponse except ImportError: raise ImportError("requests package is not installed") if name == 'RequestsTransport': try: from ._requests_basic import RequestsTransport - return RequestsTransport + transport = RequestsTransport except ImportError: raise ImportError("requests package is not installed") if name == 'RequestsTransportResponse': try: from ._requests_basic import RequestsTransportResponse - return RequestsTransportResponse + transport = RequestsTransportResponse except ImportError: raise ImportError("requests package is not installed") if name == 'AioHttpTransport': try: from ._aiohttp import AioHttpTransport - return AioHttpTransport + transport = AioHttpTransport except ImportError: raise ImportError("aiohttp package is not installed") if name == 'AioHttpTransportResponse': try: from ._aiohttp import AioHttpTransportResponse - return AioHttpTransportResponse + transport = AioHttpTransportResponse except ImportError: raise ImportError("aiohttp package is not installed") if name == 'TrioRequestsTransport': try: from ._requests_trio import TrioRequestsTransport - return TrioRequestsTransport + transport = TrioRequestsTransport except ImportError as ex: if ex.msg.endswith("'requests'"): raise ImportError("requests package is not installed") @@ -98,7 +99,9 @@ def __getattr__(name): if name == 'TrioRequestsTransportResponse': try: from ._requests_trio import TrioRequestsTransportResponse - return TrioRequestsTransportResponse + transport = TrioRequestsTransportResponse except ImportError: raise ImportError("trio package is not installed") + if transport: + return transport raise AttributeError(f"module 'azure.core.pipeline.transport' has no attribute {name}") From ed8c227c977b3154d55b45581b17979ce39e8ebd Mon Sep 17 00:00:00 2001 From: Kashif Khan Date: Mon, 1 Aug 2022 15:05:26 -0500 Subject: [PATCH 9/9] disable some pylint --- sdk/core/azure-core/azure/core/pipeline/transport/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py b/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py index 08281da25137..7daa8fe4c959 100644 --- a/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py +++ b/sdk/core/azure-core/azure/core/pipeline/transport/__init__.py @@ -45,7 +45,7 @@ 'AioHttpTransportResponse', ] -# pylint: disable=unused-import, redefined-outer-name, no-member +# pylint: disable=unused-import, redefined-outer-name, no-member, too-many-statements, too-many-branches def __dir__(): return __all__