From: Thomas Grainger Date: Mon, 28 Jun 2021 12:20:32 +0000 (+0100) Subject: check sys.version_info and ssl.OPENSSL_VERSION_INFO once (#1720) X-Git-Tag: 0.19.0~15 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ab64f7c41fc0fbe638dd586fecf0689c847109bb;p=thirdparty%2Fhttpx.git check sys.version_info and ssl.OPENSSL_VERSION_INFO once (#1720) --- diff --git a/httpx/_compat.py b/httpx/_compat.py index 0eeeef19..a499322f 100644 --- a/httpx/_compat.py +++ b/httpx/_compat.py @@ -12,11 +12,11 @@ try: except ImportError: from async_generator import asynccontextmanager # type: ignore # noqa +if sys.version_info >= (3, 10) or ( + sys.version_info >= (3, 7) and ssl.OPENSSL_VERSION_INFO >= (1, 1, 0, 7) +): -def set_minimum_tls_version_1_2(context: ssl.SSLContext) -> None: - if sys.version_info >= (3, 10) or ( - sys.version_info >= (3, 7) and ssl.OPENSSL_VERSION_INFO >= (1, 1, 0, 7) - ): + def set_minimum_tls_version_1_2(context: ssl.SSLContext) -> None: # The OP_NO_SSL* and OP_NO_TLS* become deprecated in favor of # 'SSLContext.minimum_version' from Python 3.7 onwards, however # this attribute is not available unless the ssl module is compiled @@ -24,7 +24,11 @@ def set_minimum_tls_version_1_2(context: ssl.SSLContext) -> None: # https://docs.python.org/3.10/library/ssl.html#ssl.SSLContext.minimum_version # https://docs.python.org/3.7/library/ssl.html#ssl.SSLContext.minimum_version context.minimum_version = ssl.TLSVersion.TLSv1_2 - else: + + +else: + + def set_minimum_tls_version_1_2(context: ssl.SSLContext) -> None: # If 'minimum_version' isn't available, we configure these options with # the older deprecated variants. context.options |= ssl.OP_NO_SSLv2