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

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

# -*- coding: utf-8 -*- 

 

# __ 

# /__) _ _ _ _ _/ _ 

# / ( (- (/ (/ (- _) / _) 

# / 

 

""" 

Requests HTTP Library 

~~~~~~~~~~~~~~~~~~~~~ 

 

Requests is an HTTP library, written in Python, for human beings. Basic GET 

usage: 

 

>>> import requests 

>>> r = requests.get('https://www.python.org') 

>>> r.status_code 

200 

>>> 'Python is a programming language' in r.content 

True 

 

... or POST: 

 

>>> payload = dict(key1='value1', key2='value2') 

>>> r = requests.post('http://httpbin.org/post', data=payload) 

>>> print(r.text) 

{ 

... 

"form": { 

"key2": "value2", 

"key1": "value1" 

}, 

... 

} 

 

The other HTTP methods are supported - see `requests.api`. Full documentation 

is at <http://python-requests.org>. 

 

:copyright: (c) 2017 by Kenneth Reitz. 

:license: Apache 2.0, see LICENSE for more details. 

""" 

 

import urllib3 

import chardet 

import warnings 

from .exceptions import RequestsDependencyWarning 

 

 

def check_compatibility(urllib3_version, chardet_version): 

urllib3_version = urllib3_version.split('.') 

assert urllib3_version != ['dev'] # Verify urllib3 isn't installed from git. 

 

# Sometimes, urllib3 only reports its version as 16.1. 

if len(urllib3_version) == 2: 

urllib3_version.append('0') 

 

# Check urllib3 for compatibility. 

major, minor, patch = urllib3_version # noqa: F811 

major, minor, patch = int(major), int(minor), int(patch) 

# urllib3 >= 1.21.1, <= 1.22 

assert major == 1 

assert minor >= 21 

assert minor <= 22 

 

# Check chardet for compatibility. 

major, minor, patch = chardet_version.split('.')[:3] 

major, minor, patch = int(major), int(minor), int(patch) 

# chardet >= 3.0.2, < 3.1.0 

assert major == 3 

assert minor < 1 

assert patch >= 2 

 

 

# Check imported dependencies for compatibility. 

try: 

check_compatibility(urllib3.__version__, chardet.__version__) 

except (AssertionError, ValueError): 

warnings.warn("urllib3 ({0}) or chardet ({1}) doesn't match a supported " 

"version!".format(urllib3.__version__, chardet.__version__), 

RequestsDependencyWarning) 

 

# urllib3's DependencyWarnings should be silenced. 

from urllib3.exceptions import DependencyWarning 

warnings.simplefilter('ignore', DependencyWarning) 

 

from .__version__ import __title__, __description__, __url__, __version__ 

from .__version__ import __build__, __author__, __author_email__, __license__ 

from .__version__ import __copyright__, __cake__ 

 

from . import utils 

from . import packages 

from .models import Request, Response, PreparedRequest 

from .api import request, get, head, post, patch, put, delete, options 

from .sessions import session, Session 

from .status_codes import codes 

from .exceptions import ( 

RequestException, Timeout, URLRequired, 

TooManyRedirects, HTTPError, ConnectionError, 

FileModeWarning, ConnectTimeout, ReadTimeout 

) 

 

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

import logging 

try: # Python 2.7+ 

from logging import NullHandler 

except ImportError: 

class NullHandler(logging.Handler): 

def emit(self, record): 

pass 

 

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

 

# FileModeWarnings go off per the default. 

warnings.simplefilter('default', FileModeWarning, append=True)