Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1""" 

2Python HTTP library with thread-safe connection pooling, file post support, user friendly, and more 

3""" 

4from __future__ import absolute_import 

5 

6# Set default logging handler to avoid "No handler found" warnings. 

7import logging 

8import warnings 

9from logging import NullHandler 

10 

11from . import exceptions 

12from ._version import __version__ 

13from .connectionpool import HTTPConnectionPool, HTTPSConnectionPool, connection_from_url 

14from .filepost import encode_multipart_formdata 

15from .poolmanager import PoolManager, ProxyManager, proxy_from_url 

16from .response import HTTPResponse 

17from .util.request import make_headers 

18from .util.retry import Retry 

19from .util.timeout import Timeout 

20from .util.url import get_host 

21 

22__author__ = "Andrey Petrov (andrey.petrov@shazow.net)" 

23__license__ = "MIT" 

24__version__ = __version__ 

25 

26__all__ = ( 

27 "HTTPConnectionPool", 

28 "HTTPSConnectionPool", 

29 "PoolManager", 

30 "ProxyManager", 

31 "HTTPResponse", 

32 "Retry", 

33 "Timeout", 

34 "add_stderr_logger", 

35 "connection_from_url", 

36 "disable_warnings", 

37 "encode_multipart_formdata", 

38 "get_host", 

39 "make_headers", 

40 "proxy_from_url", 

41) 

42 

43logging.getLogger(__name__).addHandler(NullHandler()) 

44 

45 

46def add_stderr_logger(level=logging.DEBUG): 

47 """ 

48 Helper for quickly adding a StreamHandler to the logger. Useful for 

49 debugging. 

50 

51 Returns the handler after adding it. 

52 """ 

53 # This method needs to be in this __init__.py to get the __name__ correct 

54 # even if urllib3 is vendored within another package. 

55 logger = logging.getLogger(__name__) 

56 handler = logging.StreamHandler() 

57 handler.setFormatter(logging.Formatter("%(asctime)s %(levelname)s %(message)s")) 

58 logger.addHandler(handler) 

59 logger.setLevel(level) 

60 logger.debug("Added a stderr logging handler to logger: %s", __name__) 

61 return handler 

62 

63 

64# ... Clean up. 

65del NullHandler 

66 

67 

68# All warning filters *must* be appended unless you're really certain that they 

69# shouldn't be: otherwise, it's very hard for users to use most Python 

70# mechanisms to silence them. 

71# SecurityWarning's always go off by default. 

72warnings.simplefilter("always", exceptions.SecurityWarning, append=True) 

73# SubjectAltNameWarning's should go off once per host 

74warnings.simplefilter("default", exceptions.SubjectAltNameWarning, append=True) 

75# InsecurePlatformWarning's don't vary between requests, so we keep it default. 

76warnings.simplefilter("default", exceptions.InsecurePlatformWarning, append=True) 

77# SNIMissingWarnings should go off only once. 

78warnings.simplefilter("default", exceptions.SNIMissingWarning, append=True) 

79 

80 

81def disable_warnings(category=exceptions.HTTPWarning): 

82 """ 

83 Helper for quickly disabling all urllib3 warnings. 

84 """ 

85 warnings.simplefilter("ignore", category)