|
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: |
|
|
|
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" |
|
) |
|
|
|
|
|
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 |
|
|
|
|
|
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 |
|
|
|
urllib3_util.ALPN_PROTOCOLS = ["http/1.1"] |
|
urllib3_util_ssl.ALPN_PROTOCOLS = ["http/1.1"] |
|
|