diff --git a/requests/compat.py b/requests/compat.py index 7fcd5492..55da272a 100644 --- a/requests/compat.py +++ b/requests/compat.py @@ -39,8 +39,6 @@ if is_py2: from Cookie import Morsel from StringIO import StringIO - from urllib3.packages.ordered_dict import OrderedDict - builtin_str = str bytes = str str = unicode @@ -54,7 +52,6 @@ elif is_py3: from http import cookiejar as cookielib from http.cookies import Morsel from io import StringIO - from collections import OrderedDict builtin_str = str str = str diff --git a/requests/sessions.py b/requests/sessions.py index 824b371e..a3f59133 100644 --- a/requests/sessions.py +++ b/requests/sessions.py @@ -10,11 +10,11 @@ requests (cookies, auth, proxies). import os import platform import time -from collections import Mapping +from collections import Mapping, OrderedDict from datetime import timedelta from .auth import _basic_auth_str -from .compat import cookielib, OrderedDict, urljoin, urlparse, is_py3, str +from .compat import cookielib, urljoin, urlparse, is_py3, str from .cookies import ( cookiejar_from_dict, extract_cookies_to_jar, RequestsCookieJar, merge_cookies, _copy_cookie_jar) diff --git a/requests/structures.py b/requests/structures.py index 05d2b3f5..cb5104a6 100644 --- a/requests/structures.py +++ b/requests/structures.py @@ -9,8 +9,6 @@ Data structures that power Requests. import collections -from .compat import OrderedDict - class CaseInsensitiveDict(collections.MutableMapping): """A case-insensitive ``dict``-like object. @@ -40,7 +38,7 @@ class CaseInsensitiveDict(collections.MutableMapping): """ def __init__(self, data=None, **kwargs): - self._store = OrderedDict() + self._store = collections.OrderedDict() if data is None: data = {} self.update(data, **kwargs) diff --git a/requests/utils.py b/requests/utils.py index 37f3276a..e09e9554 100644 --- a/requests/utils.py +++ b/requests/utils.py @@ -26,7 +26,7 @@ from . import certs from ._internal_utils import to_native_string from .compat import parse_http_list as _parse_list_header from .compat import ( - quote, urlparse, bytes, str, OrderedDict, unquote, getproxies, + quote, urlparse, bytes, str, unquote, getproxies, proxy_bypass, urlunparse, basestring, integer_types, is_py2, is_py3, proxy_bypass_environment, getproxies_environment) from .cookies import cookiejar_from_dict @@ -224,11 +224,11 @@ def from_key_val_list(value): :: >>> from_key_val_list([('key', 'val')]) - OrderedDict([('key', 'val')]) + collections.OrderedDict([('key', 'val')]) >>> from_key_val_list('string') ValueError: need more than 1 value to unpack >>> from_key_val_list({'key': 'val'}) - OrderedDict([('key', 'val')]) + collections.OrderedDict([('key', 'val')]) :rtype: OrderedDict """ @@ -238,7 +238,7 @@ def from_key_val_list(value): if isinstance(value, (str, bytes, bool, int)): raise ValueError('cannot encode objects that are not 2-tuples') - return OrderedDict(value) + return collections.OrderedDict(value) def to_key_val_list(value): diff --git a/tests/test_requests.py b/tests/test_requests.py index 8c06df78..14120a2c 100644 --- a/tests/test_requests.py +++ b/tests/test_requests.py @@ -18,7 +18,7 @@ from requests.adapters import HTTPAdapter from requests.auth import HTTPDigestAuth, _basic_auth_str from requests.compat import ( Morsel, cookielib, getproxies, str, urlparse, - builtin_str, OrderedDict) + builtin_str) from requests.cookies import ( cookiejar_from_dict, morsel_to_cookie) from requests.exceptions import ( @@ -144,7 +144,8 @@ class TestRequests: assert request.url == expected def test_params_original_order_is_preserved_by_default(self): - param_ordered_dict = OrderedDict((('z', 1), ('a', 1), ('k', 1), ('d', 1))) + param_ordered_dict = collections.OrderedDict( + (('z', 1), ('a', 1), ('k', 1), ('d', 1))) session = requests.Session() request = requests.Request('GET', 'http://example.com/', params=param_ordered_dict) prep = session.prepare_request(request) @@ -539,11 +540,11 @@ class TestRequests: def test_headers_preserve_order(self, httpbin): """Preserve order when headers provided as OrderedDict.""" ses = requests.Session() - ses.headers = OrderedDict() + ses.headers = collections.OrderedDict() ses.headers['Accept-Encoding'] = 'identity' ses.headers['First'] = '1' ses.headers['Second'] = '2' - headers = OrderedDict([('Third', '3'), ('Fourth', '4')]) + headers = collections.OrderedDict([('Third', '3'), ('Fourth', '4')]) headers['Fifth'] = '5' headers['Second'] = '222' req = requests.Request('GET', httpbin('get'), headers=headers) @@ -2103,7 +2104,7 @@ class TestRequests: """Ensure that if a user manually sets a content length header, when the data is chunked, that an InvalidHeader error is raised. """ - data = (i for i in [b'a', b'b', b'c']) + data = (i for i in [b'a', b'b', b'c']) url = httpbin('post') with pytest.raises(InvalidHeader): r = requests.post(url, data=data, headers={'Content-Length': 'foo'})