You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			54 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
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"]
 |