| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- from __future__ import annotations
- from importlib.metadata import version
- __all__ = [
- "inject_into_urllib3",
- "extract_from_urllib3",
- ]
- import typing
- orig_HTTPSConnection: typing.Any = None
- def inject_into_urllib3() -> None:
- # First check if h2 version is valid
- h2_version = version("h2")
- if not h2_version.startswith("4."):
- raise ImportError(
- "urllib3 v2 supports h2 version 4.x.x, currently "
- f"the 'h2' module is compiled with {h2_version!r}. "
- "See: https://github.com/urllib3/urllib3/issues/3290"
- )
- # Import here to avoid circular dependencies.
- from .. import connection as urllib3_connection
- from .. import util as urllib3_util
- from ..connectionpool import HTTPSConnectionPool
- from ..util import ssl_ as urllib3_util_ssl
- from .connection import HTTP2Connection
- global orig_HTTPSConnection
- orig_HTTPSConnection = urllib3_connection.HTTPSConnection
- HTTPSConnectionPool.ConnectionCls = HTTP2Connection
- urllib3_connection.HTTPSConnection = HTTP2Connection # type: ignore[misc]
- # TODO: Offer 'http/1.1' as well, but for testing purposes this is handy.
- urllib3_util.ALPN_PROTOCOLS = ["h2"]
- urllib3_util_ssl.ALPN_PROTOCOLS = ["h2"]
- def extract_from_urllib3() -> None:
- from .. import connection as urllib3_connection
- from .. import util as urllib3_util
- from ..connectionpool import HTTPSConnectionPool
- from ..util import ssl_ as urllib3_util_ssl
- HTTPSConnectionPool.ConnectionCls = orig_HTTPSConnection
- urllib3_connection.HTTPSConnection = orig_HTTPSConnection # type: ignore[misc]
- urllib3_util.ALPN_PROTOCOLS = ["http/1.1"]
- urllib3_util_ssl.ALPN_PROTOCOLS = ["http/1.1"]
|