aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/httpx/_compat.py
diff options
context:
space:
mode:
authorS. Solomon Darnell2025-03-28 21:52:21 -0500
committerS. Solomon Darnell2025-03-28 21:52:21 -0500
commit4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch)
treeee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/httpx/_compat.py
parentcc961e04ba734dd72309fb548a2f97d67d578813 (diff)
downloadgn-ai-master.tar.gz
two version of R2R are hereHEADmaster
Diffstat (limited to '.venv/lib/python3.12/site-packages/httpx/_compat.py')
-rw-r--r--.venv/lib/python3.12/site-packages/httpx/_compat.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/httpx/_compat.py b/.venv/lib/python3.12/site-packages/httpx/_compat.py
new file mode 100644
index 00000000..7d86dced
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/httpx/_compat.py
@@ -0,0 +1,63 @@
+"""
+The _compat module is used for code which requires branching between different
+Python environments. It is excluded from the code coverage checks.
+"""
+
+import re
+import ssl
+import sys
+from types import ModuleType
+from typing import Optional
+
+# 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
+
+# Zstandard support is optional
+zstd: Optional[ModuleType] = None
+try:
+ import zstandard as zstd
+except (AttributeError, ImportError, ValueError): # Defensive:
+ zstd = None
+else:
+ # The package 'zstandard' added the 'eof' property starting
+ # in v0.18.0 which we require to ensure a complete and
+ # valid zstd stream was fed into the ZstdDecoder.
+ # See: https://github.com/urllib3/urllib3/pull/2624
+ _zstd_version = tuple(
+ map(int, re.search(r"^([0-9]+)\.([0-9]+)", zstd.__version__).groups()) # type: ignore[union-attr]
+ )
+ if _zstd_version < (0, 18): # Defensive:
+ zstd = 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"]