summaryrefslogtreecommitdiff
path: root/venv/lib/python3.11/site-packages/httpx/_compat.py
diff options
context:
space:
mode:
authorcyfraeviolae <cyfraeviolae>2024-04-03 03:10:44 -0400
committercyfraeviolae <cyfraeviolae>2024-04-03 03:10:44 -0400
commit6d7ba58f880be618ade07f8ea080fe8c4bf8a896 (patch)
treeb1c931051ffcebd2bd9d61d98d6233ffa289bbce /venv/lib/python3.11/site-packages/httpx/_compat.py
parent4f884c9abc32990b4061a1bb6997b4b37e58ea0b (diff)
venv
Diffstat (limited to 'venv/lib/python3.11/site-packages/httpx/_compat.py')
-rw-r--r--venv/lib/python3.11/site-packages/httpx/_compat.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/venv/lib/python3.11/site-packages/httpx/_compat.py b/venv/lib/python3.11/site-packages/httpx/_compat.py
new file mode 100644
index 0000000..493e621
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/httpx/_compat.py
@@ -0,0 +1,41 @@
+"""
+The _compat module is used for code which requires branching between different
+Python environments. It is excluded from the code coverage checks.
+"""
+import ssl
+import sys
+
+# Brotli support is optional
+# The C bindings in `brotli` are recommended for CPython.
+# The CFFI bindings in `brotlicffi` are recommended for PyPy and everything else.
+try:
+ import brotlicffi as brotli
+except ImportError: # pragma: no cover
+ try:
+ import brotli
+ except ImportError:
+ brotli = None
+
+if sys.version_info >= (3, 10) or 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
+ # with OpenSSL 1.1.0g or newer.
+ # 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:
+
+ 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
+ context.options |= ssl.OP_NO_SSLv3
+ context.options |= ssl.OP_NO_TLSv1
+ context.options |= ssl.OP_NO_TLSv1_1
+
+
+__all__ = ["brotli", "set_minimum_tls_version_1_2"]