Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/urllib3/http2/__init__.py: 25%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

28 statements  

1from __future__ import annotations 

2 

3from importlib.metadata import version 

4 

5__all__ = [ 

6 "inject_into_urllib3", 

7 "extract_from_urllib3", 

8] 

9 

10import typing 

11 

12orig_HTTPSConnection: typing.Any = None 

13 

14 

15def inject_into_urllib3() -> None: 

16 # First check if h2 version is valid 

17 h2_version = version("h2") 

18 if not h2_version.startswith("4."): 

19 raise ImportError( 

20 "urllib3 v2 supports h2 version 4.x.x, currently " 

21 f"the 'h2' module is compiled with {h2_version!r}. " 

22 "See: https://github.com/urllib3/urllib3/issues/3290" 

23 ) 

24 

25 # Import here to avoid circular dependencies. 

26 from .. import connection as urllib3_connection 

27 from .. import util as urllib3_util 

28 from ..connectionpool import HTTPSConnectionPool 

29 from ..util import ssl_ as urllib3_util_ssl 

30 from .connection import HTTP2Connection 

31 

32 global orig_HTTPSConnection 

33 orig_HTTPSConnection = urllib3_connection.HTTPSConnection 

34 

35 HTTPSConnectionPool.ConnectionCls = HTTP2Connection 

36 urllib3_connection.HTTPSConnection = HTTP2Connection # type: ignore[misc] 

37 

38 # TODO: Offer 'http/1.1' as well, but for testing purposes this is handy. 

39 urllib3_util.ALPN_PROTOCOLS = ["h2"] 

40 urllib3_util_ssl.ALPN_PROTOCOLS = ["h2"] 

41 

42 

43def extract_from_urllib3() -> None: 

44 from .. import connection as urllib3_connection 

45 from .. import util as urllib3_util 

46 from ..connectionpool import HTTPSConnectionPool 

47 from ..util import ssl_ as urllib3_util_ssl 

48 

49 HTTPSConnectionPool.ConnectionCls = orig_HTTPSConnection 

50 urllib3_connection.HTTPSConnection = orig_HTTPSConnection # type: ignore[misc] 

51 

52 urllib3_util.ALPN_PROTOCOLS = ["http/1.1"] 

53 urllib3_util_ssl.ALPN_PROTOCOLS = ["http/1.1"]